1
0
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:
Yegappan Lakshmanan
2023-10-15 09:53:41 +02:00
committed by Christian Brabandt
parent 5d03525cde
commit 1ace49fb98
4 changed files with 89 additions and 0 deletions

View File

@@ -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