# HG changeset patch # User Bram Moolenaar # Date 1674566103 -3600 # Node ID cd4065ab45032a55dc9da9110a5bf4f4f10b3b69 # Parent 5544b97836931b62323e113334f42e7b79836af8 patch 9.0.1239: cannot have a line break before an object member access Commit: https://github.com/vim/vim/commit/b149d2279673aa89ab5e35958d05cc4bcc70f82a Author: Bram Moolenaar Date: Tue Jan 24 13:03:37 2023 +0000 patch 9.0.1239: cannot have a line break before an object member access Problem: Cannot have a line break before an object member access. Solution: Check for "." in next line. (closes https://github.com/vim/vim/issues/11864) diff --git a/src/eval.c b/src/eval.c --- a/src/eval.c +++ b/src/eval.c @@ -6747,7 +6747,10 @@ handle_subscript( // the next line then consume the line break. p = eval_next_non_blank(*arg, evalarg, &getnext); if (getnext - && ((rettv->v_type == VAR_DICT && *p == '.' && eval_isdictc(p[1])) + && ((*p == '.' + && ((rettv->v_type == VAR_DICT && eval_isdictc(p[1])) + || rettv->v_type == VAR_CLASS + || rettv->v_type == VAR_OBJECT)) || (p[0] == '-' && p[1] == '>' && (p[2] == '{' || ASCII_ISALPHA(in_vim9script() ? *skipwhite(p + 2) : p[2]))))) diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -439,6 +439,32 @@ def Test_class_object_member_access() var c = MyCar.new("def") END v9.CheckScriptFailure(lines, 'E1041:') + + lines =<< trim END + vim9script + + class Foo + this.x: list = [] + + def Add(n: number): any + this.x->add(n) + return this + enddef + endclass + + echo Foo.new().Add(1).Add(2).x + echo Foo.new().Add(1).Add(2) + .x + echo Foo.new().Add(1) + .Add(2).x + echo Foo.new() + .Add(1).Add(2).x + echo Foo.new() + .Add(1) + .Add(2) + .x + END + v9.CheckScriptSuccess(lines) enddef def Test_class_object_compare() diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1239, +/**/ 1238, /**/ 1237,