summaryrefslogtreecommitdiffstats
path: root/src/testdir/test_vim9_class.vim
diff options
context:
space:
mode:
authorYegappan Lakshmanan <yegappan@yahoo.com>2023-10-11 21:43:52 +0200
committerChristian Brabandt <cb@256bit.org>2023-10-11 21:43:52 +0200
commit1ea428883f16838aca5763aee156fde3929d9ab6 (patch)
treef5bbcbcfe81da0df16fd416ed62fb71c383c4ba8 /src/testdir/test_vim9_class.vim
parent4c8da025ef8140168b7a09d9fe922ce4bb40f19d (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.vim46
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