diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2023-10-15 09:53:41 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-10-15 09:53:41 +0200 |
commit | 1ace49fb98fa93e2fcff421a5f7da1aa41c512ed (patch) | |
tree | 81bdee80df4b3e83614071cdbb2c66728c6407c7 /src/testdir/test_vim9_class.vim | |
parent | 5d03525cdef5db1b1cedfa26c6f8a21aaa207ec0 (diff) |
patch 9.0.2029: Vim9: no support for partials using call()v9.0.2029
Problem: Vim9: no support for partials using call()
Solution: Add support
closes: #13341
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Diffstat (limited to 'src/testdir/test_vim9_class.vim')
-rw-r--r-- | src/testdir/test_vim9_class.vim | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim index 3af9a1f87a..b9f2910205 100644 --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -7510,6 +7510,21 @@ def Test_object_funcref() END v9.CheckSourceSuccess(lines) + # Using object method funcref at the script level + lines =<< trim END + vim9script + class A + this.val: number + def Foo(): number + return this.val + enddef + endclass + var a = A.new(345) + var Fn = a.Foo + assert_equal(345, Fn()) + END + v9.CheckSourceSuccess(lines) + # Using object method funcref from another object method lines =<< trim END vim9script @@ -7604,6 +7619,26 @@ def Test_object_funcref() a.Bar() END v9.CheckSourceSuccess(lines) + + # Using object method funcref using call() + lines =<< trim END + vim9script + class A + this.val: number + def Foo(): number + return this.val + enddef + endclass + + def Bar(obj: A) + assert_equal(123, call(obj.Foo, [])) + enddef + + var a = A.new(123) + Bar(a) + assert_equal(123, call(a.Foo, [])) + END + v9.CheckSourceSuccess(lines) enddef " Test for using a class method as a funcref @@ -7637,6 +7672,21 @@ def Test_class_funcref() END v9.CheckSourceSuccess(lines) + # Using class method funcref at the script level + lines =<< trim END + vim9script + class A + public static val: number + static def Foo(): number + return val + enddef + endclass + A.val = 567 + var Fn = A.Foo + assert_equal(567, Fn()) + END + v9.CheckSourceSuccess(lines) + # Using function() to get a class method funcref lines =<< trim END vim9script @@ -7725,6 +7775,25 @@ def Test_class_funcref() A.Bar() END v9.CheckSourceSuccess(lines) + + # Using class method funcref using call() + lines =<< trim END + vim9script + class A + public static val: number + static def Foo(): number + return val + enddef + endclass + + def Bar() + A.val = 468 + assert_equal(468, call(A.Foo, [])) + enddef + Bar() + assert_equal(468, call(A.Foo, [])) + END + v9.CheckSourceSuccess(lines) enddef " Test for using an object member as a funcref |