forked from aniani/vim
patch 9.0.1879: Vim9: incorrect duplicate class member detection
Problem: Vim9: incorrect duplicate class member detection
Solution: Incorrect duplicate class member detection when variable names
have the same prefix. Not able to access class member variables
using an object. Fix coding style issues
closes: #13042
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
1690ec64ff
commit
1689e847ff
@@ -3790,6 +3790,16 @@ def Test_dup_member_variable()
|
||||
endclass
|
||||
END
|
||||
v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
|
||||
|
||||
# Two member variables with a common prefix
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
class A
|
||||
public static svar2: number
|
||||
public static svar: number
|
||||
endclass
|
||||
END
|
||||
v9.CheckScriptSuccess(lines)
|
||||
enddef
|
||||
|
||||
def Test_interface_static_member_access()
|
||||
@@ -4084,4 +4094,39 @@ def Test_modify_class_member_from_def_function()
|
||||
v9.CheckScriptSuccess(lines)
|
||||
enddef
|
||||
|
||||
" Test for accessing a class member variable using an object
|
||||
def Test_class_member_access_using_object()
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
class A
|
||||
public static svar1: list<number> = [1]
|
||||
public static svar2: list<number> = [2]
|
||||
endclass
|
||||
|
||||
A.svar1->add(3)
|
||||
A.svar2->add(4)
|
||||
assert_equal([1, 3], A.svar1)
|
||||
assert_equal([2, 4], A.svar2)
|
||||
var a1 = A.new()
|
||||
a1.svar1->add(5)
|
||||
a1.svar2->add(6)
|
||||
assert_equal([1, 3, 5], a1.svar1)
|
||||
assert_equal([2, 4, 6], a1.svar2)
|
||||
|
||||
def Foo()
|
||||
A.svar1->add(7)
|
||||
A.svar2->add(8)
|
||||
assert_equal([1, 3, 5, 7], A.svar1)
|
||||
assert_equal([2, 4, 6, 8], A.svar2)
|
||||
var a2 = A.new()
|
||||
a2.svar1->add(9)
|
||||
a2.svar2->add(10)
|
||||
assert_equal([1, 3, 5, 7, 9], a2.svar1)
|
||||
assert_equal([2, 4, 6, 8, 10], a2.svar2)
|
||||
enddef
|
||||
Foo()
|
||||
END
|
||||
v9.CheckScriptSuccess(lines)
|
||||
enddef
|
||||
|
||||
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
|
||||
|
||||
Reference in New Issue
Block a user