From b149d2279673aa89ab5e35958d05cc4bcc70f82a Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 24 Jan 2023 13:03:37 +0000 Subject: [PATCH] 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 #11864) --- src/eval.c | 5 ++++- src/testdir/test_vim9_class.vim | 26 ++++++++++++++++++++++++++ src/version.c | 2 ++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/eval.c b/src/eval.c index 2a8b1c52e..699f43bac 100644 --- 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 index 03798268a..a3fdbdb9c 100644 --- 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 index 9eff9696b..f21a1887a 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 */ +/**/ + 1239, /**/ 1238, /**/ -- 2.49.0