diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2023-08-28 21:26:23 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-08-28 21:26:23 +0200 |
commit | 2ba9d2e14e3633c92a32abba2a12533f93fefbf5 (patch) | |
tree | e0ef8dc5b5972ce3dee19b1395b2dab7709e08fb /src/testdir | |
parent | 1d3e0e8f3110a7807431eae056914ccea57b057b (diff) |
patch 9.0.1814: Vim9 no error on duplicate object member varv9.0.1814
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>
Diffstat (limited to 'src/testdir')
-rw-r--r-- | src/testdir/test_vim9_class.vim | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim index f7d6b73f49..319eb0546d 100644 --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -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 |