diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim index 56b2dad7e07bf..28af68b386ee0 100644 --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -219,6 +219,27 @@ def Test_assignment_with_operator() v9.CheckScriptSuccess(lines) enddef +def Test_list_of_objects() + var lines =<< trim END + vim9script + + class Foo + def Add() + enddef + endclass + + def ProcessList(fooList: list) + for foo in fooList + foo.Add() + endfor + enddef + + var l: list = [Foo.new()] + ProcessList(l) + END + v9.CheckScriptSuccess(lines) +enddef + def Test_class_default_new() var lines =<< trim END vim9script diff --git a/src/version.c b/src/version.c index e4674e410abcd..4c9e486f28717 100644 --- a/src/version.c +++ b/src/version.c @@ -695,6 +695,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1202, /**/ 1201, /**/ diff --git a/src/vim9type.c b/src/vim9type.c index 6fb6b2b257e0f..9bb53e2fa2dc3 100644 --- a/src/vim9type.c +++ b/src/vim9type.c @@ -86,7 +86,8 @@ copy_type_deep_rec(type_T *type, garray_T *type_gap, garray_T *seen_types) ((type_T **)seen_types->ga_data)[seen_types->ga_len * 2 + 1] = copy; ++seen_types->ga_len; - if (copy->tt_member != NULL) + if (copy->tt_member != NULL + && copy->tt_type != VAR_OBJECT && copy->tt_type != VAR_CLASS) copy->tt_member = copy_type_deep_rec(copy->tt_member, type_gap, seen_types);