Mercurial > vim
diff src/testdir/test_vim9_class.vim @ 31980:13329cb9faee v9.0.1322
patch 9.0.1322: crash when indexing "any" which is an object
Commit: https://github.com/vim/vim/commit/2c1c803c7e0cc356dd55a2cd49fbffbbf7db766e
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Feb 18 18:38:37 2023 +0000
patch 9.0.1322: crash when indexing "any" which is an object
Problem: Crash when indexing "any" which is an object.
Solution: Check the index is a number. Do not check the member type of an
object. (closes #12019)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 18 Feb 2023 19:45:07 +0100 |
parents | 16025ef158bf |
children | ec05de98b0f7 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -253,6 +253,56 @@ def Test_class_member_initializer() v9.CheckScriptSuccess(lines) enddef +def Test_member_any_used_as_object() + var lines =<< trim END + vim9script + + class Inner + this.value: number = 0 + endclass + + class Outer + this.inner: any + endclass + + def F(outer: Outer) + outer.inner.value = 1 + enddef + + var inner_obj = Inner.new(0) + var outer_obj = Outer.new(inner_obj) + F(outer_obj) + assert_equal(1, inner_obj.value) + END + v9.CheckScriptSuccess(lines) + + lines =<< trim END + vim9script + + class Inner + this.value: number = 0 + endclass + + class Outer + this.inner: Inner + endclass + + def F(outer: Outer) + outer.inner.value = 1 + enddef + + def Test_assign_to_nested_typed_member() + var inner = Inner.new(0) + var outer = Outer.new(inner) + F(outer) + assert_equal(1, inner.value) + enddef + + Test_assign_to_nested_typed_member() + END + v9.CheckScriptSuccess(lines) +enddef + def Test_assignment_with_operator() var lines =<< trim END vim9script