0
0
mirror of https://github.com/vim/vim.git synced 2025-10-05 05:34:07 -04:00

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)
This commit is contained in:
Bram Moolenaar
2023-02-18 18:38:37 +00:00
parent d114975b9b
commit 2c1c803c7e
4 changed files with 104 additions and 12 deletions

View File

@@ -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