patch 9.0.1127: no error if function argument shadows class member
Problem: No error if function argument shadows class member.
Solution: Give an error for shadowing a class member.
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim
index 9dd6f83..8cb9113 100644
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -367,7 +367,8 @@
v9.CheckScriptFailure(lines, 'E1041:')
enddef
-def Test_class_member_access()
+def Test_class_member()
+ # check access rules
var lines =<< trim END
vim9script
class TextPos
@@ -401,6 +402,38 @@
assert_equal(17, TextPos.anybody)
END
v9.CheckScriptSuccess(lines)
+
+ # check shadowing
+ lines =<< trim END
+ vim9script
+
+ class Some
+ static count = 0
+ def Method(count: number)
+ echo count
+ enddef
+ endclass
+
+ var s = Some.new()
+ s.Method(7)
+ END
+ v9.CheckScriptFailure(lines, 'E1340: Argument already declared in the class: count')
+
+ lines =<< trim END
+ vim9script
+
+ class Some
+ static count = 0
+ def Method(arg: number)
+ var count = 3
+ echo arg count
+ enddef
+ endclass
+
+ var s = Some.new()
+ s.Method(7)
+ END
+ v9.CheckScriptFailure(lines, 'E1341: Variable already declared in the class: count')
enddef
def Test_class_function()