summaryrefslogtreecommitdiffstats
path: root/src/testdir/test_vim9_class.vim
diff options
context:
space:
mode:
authorYegappan Lakshmanan <yegappan@yahoo.com>2023-10-15 09:53:41 +0200
committerChristian Brabandt <cb@256bit.org>2023-10-15 09:53:41 +0200
commit1ace49fb98fa93e2fcff421a5f7da1aa41c512ed (patch)
tree81bdee80df4b3e83614071cdbb2c66728c6407c7 /src/testdir/test_vim9_class.vim
parent5d03525cdef5db1b1cedfa26c6f8a21aaa207ec0 (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.vim69
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