Mercurial > vim
diff src/testdir/test_vim9_class.vim @ 31738:ad0712119bee v9.0.1201
patch 9.0.1201: assignment with operator doesn't work in object method
Commit: https://github.com/vim/vim/commit/4cae845ce32797bcae845aacf740ed865b479f34
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jan 15 15:51:48 2023 +0000
patch 9.0.1201: assignment with operator doesn't work in object method
Problem: Assignment with operator doesn't work in object method.
Solution: Handle loading the object member. (closes https://github.com/vim/vim/issues/11820) Add a few more
tests.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 15 Jan 2023 17:00:04 +0100 |
parents | ef7a9a7eb197 |
children | 22a4824d7964 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -200,6 +200,25 @@ def Test_class_member_initializer() v9.CheckScriptSuccess(lines) enddef +def Test_assignment_with_operator() + var lines =<< trim END + vim9script + + class Foo + this.x: number + + def Add(n: number) + this.x += n + enddef + endclass + + var f = Foo.new(3) + f.Add(17) + assert_equal(20, f.x) + END + v9.CheckScriptSuccess(lines) +enddef + def Test_class_default_new() var lines =<< trim END vim9script @@ -521,6 +540,25 @@ def Test_class_member() END v9.CheckScriptSuccess(lines) + # example in the help + lines =<< trim END + vim9script + class OtherThing + this.size: number + static totalSize: number + + def new(this.size) + totalSize += this.size + enddef + endclass + assert_equal(0, OtherThing.totalSize) + var to3 = OtherThing.new(3) + assert_equal(3, OtherThing.totalSize) + var to7 = OtherThing.new(7) + assert_equal(10, OtherThing.totalSize) + END + v9.CheckScriptSuccess(lines) + # check shadowing lines =<< trim END vim9script @@ -986,6 +1024,23 @@ def Test_class_extends() assert_equal('Base class: 42', o.ToString()) END v9.CheckScriptSuccess(lines) + + lines =<< trim END + vim9script + class Base + this.value = 1 + def new(init: number) + this.value = number + 1 + enddef + endclass + class Child extends Base + def new() + this.new(3) + enddef + endclass + var c = Child.new() + END + v9.CheckScriptFailure(lines, 'E1325: Method not found on class "Child": new(') enddef def Test_class_import()