1
0
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:
Yegappan Lakshmanan
2023-09-06 20:23:23 +02:00
committed by Christian Brabandt
parent 1690ec64ff
commit 1689e847ff
3 changed files with 147 additions and 62 deletions

View File

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