diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2023-10-11 21:43:52 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-10-11 21:43:52 +0200 |
commit | 1ea428883f16838aca5763aee156fde3929d9ab6 (patch) | |
tree | f5bbcbcfe81da0df16fd416ed62fb71c383c4ba8 /src/testdir/test_vim9_class.vim | |
parent | 4c8da025ef8140168b7a09d9fe922ce4bb40f19d (diff) |
patch 9.0.2016: Vim9: assignment operators don't work for class varsv9.0.2016
Problem: Vim9: assignment operators don't work for class vars
Solution: implement it
closes: #13306
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Diffstat (limited to 'src/testdir/test_vim9_class.vim')
-rw-r--r-- | src/testdir/test_vim9_class.vim | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim index eead19283a..1aa9de7b99 100644 --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -7431,4 +7431,50 @@ def Test_funcref_argtype_returntype_check() v9.CheckSourceFailure(lines, 'E1012: Type mismatch; expected func(object<A>): object<A> but got func(object<B>): object<B>', 1) enddef +" Test for using an operator (e.g. +) with an assignment +def Test_op_and_assignment() + # Using += with a class variable + var lines =<< trim END + vim9script + class A + public static val: list<number> = [] + static def Foo(): list<number> + val += [1] + return val + enddef + endclass + def Bar(): list<number> + A.val += [2] + return A.val + enddef + assert_equal([1], A.Foo()) + assert_equal([1, 2], Bar()) + A.val += [3] + assert_equal([1, 2, 3], A.val) + END + v9.CheckSourceSuccess(lines) + + # Using += with an object variable + lines =<< trim END + vim9script + class A + public this.val: list<number> = [] + def Foo(): list<number> + this.val += [1] + return this.val + enddef + endclass + def Bar(bar_a: A): list<number> + bar_a.val += [2] + return bar_a.val + enddef + var a = A.new() + assert_equal([1], a.Foo()) + assert_equal([1, 2], Bar(a)) + a.val += [3] + assert_equal([1, 2, 3], a.val) + END + v9.CheckSourceSuccess(lines) +enddef + " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker |