forked from aniani/vim
patch 9.0.2029: Vim9: no support for partials using call()
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>
This commit is contained in:
committed by
Christian Brabandt
parent
5d03525cde
commit
1ace49fb98
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user