diff options
author | Ernie Rael <errael@raelity.com> | 2023-10-06 19:55:52 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-10-06 19:55:52 +0200 |
commit | e6c9aa5e6a88d539a412a9b5526f41ea101aa185 (patch) | |
tree | 2ba9d1d12205cbe879b917b1e78b3df7bc43f4f9 /src/testdir/test_vim9_class.vim | |
parent | 85f4521808dd9a587c00f9a2927e84217721cfca (diff) |
patch 9.0.1999: Vim9: some error messages can be improvedv9.0.1999
Problem: Vim9: some error messages can be improved
Solution: Mention the defining class for variable access error message
closes: #13272
Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Co-authored-by: Ernie Rael <errael@raelity.com>
Diffstat (limited to 'src/testdir/test_vim9_class.vim')
-rw-r--r-- | src/testdir/test_vim9_class.vim | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim index dc539aca49..0c8fd7057a 100644 --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -1725,6 +1725,119 @@ def Test_class_member() v9.CheckSourceFailure(lines, 'E1326: Variable not found on object "A": bar', 5) enddef +" These messages should show the defining class of the variable (base class), +" not the class that did the reference (super class) +def Test_defining_class_message() + var lines =<< trim END + vim9script + + class Base + this._v1: list<list<number>> + endclass + + class Child extends Base + endclass + + var o = Child.new() + var x = o._v1 + END + v9.CheckSourceFailure(lines, 'E1333: Cannot access private variable "_v1" in class "Base"', 11) + lines =<< trim END + vim9script + + class Base + this._v1: list<list<number>> + endclass + + class Child extends Base + endclass + + def F() + var o = Child.new() + var x = o._v1 + enddef + F() + END + v9.CheckSourceFailure(lines, 'E1333: Cannot access private variable "_v1" in class "Base"', 2) + lines =<< trim END + vim9script + + class Base + this.v1: list<list<number>> + endclass + + class Child extends Base + endclass + + var o = Child.new() + o.v1 = [] + END + v9.CheckSourceFailure(lines, 'E1335: Variable "v1" in class "Base" is not writable', 11) + lines =<< trim END + vim9script + + class Base + this.v1: list<list<number>> + endclass + + class Child extends Base + endclass + + def F() + var o = Child.new() + o.v1 = [] + enddef + F() + END + + # Attempt to read a private variable that is in the middle + # of the class hierarchy. + v9.CheckSourceFailure(lines, 'E1335: Variable "v1" in class "Base" is not writable', 2) + lines =<< trim END + vim9script + + class Base0 + endclass + + class Base extends Base0 + this._v1: list<list<number>> + endclass + + class Child extends Base + endclass + + def F() + var o = Child.new() + var x = o._v1 + enddef + F() + END + v9.CheckSourceFailure(lines, 'E1333: Cannot access private variable "_v1" in class "Base"', 2) + + # Attempt to read a private variable that is at the start + # of the class hierarchy. + lines =<< trim END + vim9script + + class Base0 + endclass + + class Base extends Base0 + endclass + + class Child extends Base + this._v1: list<list<number>> + endclass + + def F() + var o = Child.new() + var x = o._v1 + enddef + F() + END + v9.CheckSourceFailure(lines, 'E1333: Cannot access private variable "_v1" in class "Child"', 2) +enddef + func Test_class_garbagecollect() let lines =<< trim END vim9script |