mirror of
https://github.com/vim/vim.git
synced 2025-10-04 05:25:06 -04:00
patch 9.0.1814: Vim9 no error on duplicate object member var
Problem: Vim9 no error on duplicate object member var Solution: detect duplicate members and error out closes: #12938 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
1d3e0e8f31
commit
2ba9d2e14e
@@ -894,6 +894,15 @@ def Test_class_object_member_access()
|
||||
endclass
|
||||
END
|
||||
v9.CheckScriptFailure(lines, 'E1065:')
|
||||
|
||||
# Test for "static" cannot be followed by "this".
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
class Something
|
||||
static this.val = 1
|
||||
endclass
|
||||
END
|
||||
v9.CheckScriptFailure(lines, 'E1368: Static cannot be followed by "this" in a member name')
|
||||
enddef
|
||||
|
||||
def Test_class_object_compare()
|
||||
@@ -3438,4 +3447,92 @@ def Test_objmethod_funcarg()
|
||||
v9.CheckScriptSuccess(lines)
|
||||
enddef
|
||||
|
||||
" Test for declaring duplicate object and class members
|
||||
def Test_dup_member_variable()
|
||||
# Duplicate member variable
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
class C
|
||||
this.val = 10
|
||||
this.val = 20
|
||||
endclass
|
||||
END
|
||||
v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
|
||||
|
||||
# Duplicate private member variable
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
class C
|
||||
this._val = 10
|
||||
this._val = 20
|
||||
endclass
|
||||
END
|
||||
v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _val')
|
||||
|
||||
# Duplicate public member variable
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
class C
|
||||
public this.val = 10
|
||||
public this.val = 20
|
||||
endclass
|
||||
END
|
||||
v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
|
||||
|
||||
# Duplicate private member variable
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
class C
|
||||
this.val = 10
|
||||
this._val = 20
|
||||
endclass
|
||||
END
|
||||
v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _val')
|
||||
|
||||
# Duplicate public and private member variable
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
class C
|
||||
this._val = 20
|
||||
public this.val = 10
|
||||
endclass
|
||||
END
|
||||
v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
|
||||
|
||||
# Duplicate class member variable
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
class C
|
||||
static s: string = "abc"
|
||||
static _s: string = "def"
|
||||
endclass
|
||||
END
|
||||
v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _s')
|
||||
|
||||
# Duplicate public and private class member variable
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
class C
|
||||
public static s: string = "abc"
|
||||
static _s: string = "def"
|
||||
endclass
|
||||
END
|
||||
v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _s')
|
||||
|
||||
# Duplicate class and object member variable
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
class C
|
||||
static val = 10
|
||||
this.val = 20
|
||||
def new()
|
||||
enddef
|
||||
endclass
|
||||
var c = C.new()
|
||||
assert_equal(10, C.val)
|
||||
assert_equal(20, c.val)
|
||||
END
|
||||
v9.CheckScriptSuccess(lines)
|
||||
enddef
|
||||
|
||||
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
|
||||
|
Reference in New Issue
Block a user