changeset 24632:9e72076e31f8 v8.2.2855

patch 8.2.2855: white space after "->" does not give E274 Commit: https://github.com/vim/vim/commit/0820f4de5872bfbdc25bf6cba6ec5646dbcec156 Author: Bram Moolenaar <Bram@vim.org> Date: Sat May 15 20:06:58 2021 +0200 patch 8.2.2855: white space after "->" does not give E274 Problem: White space after "->" does not give E274. Solution: Do not skip white space in legacy script. (closes https://github.com/vim/vim/issues/8212)
author Bram Moolenaar <Bram@vim.org>
date Sat, 15 May 2021 20:15:03 +0200
parents e2053e257572
children 9d56f2d21cde
files src/eval.c src/testdir/test_method.vim src/version.c
diffstat 3 files changed, 14 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -5916,10 +5916,18 @@ handle_subscript(
 	}
 	else if (p[0] == '-' && p[1] == '>')
 	{
-	    *arg = skipwhite(p + 2);
+	    if (in_vim9script())
+		*arg = skipwhite(p + 2);
+	    else
+		*arg = p + 2;
 	    if (ret == OK)
 	    {
-		if ((**arg == '{' && !in_vim9script()) || **arg == '(')
+		if (VIM_ISWHITE(**arg))
+		{
+		    emsg(_(e_nowhitespace));
+		    ret = FAIL;
+		}
+		else if ((**arg == '{' && !in_vim9script()) || **arg == '(')
 		    // expr->{lambda}() or expr->(lambda)()
 		    ret = eval_lambda(arg, rettv, evalarg, verbose);
 		else
--- a/src/testdir/test_method.vim
+++ b/src/testdir/test_method.vim
@@ -131,11 +131,12 @@ func Test_method_syntax()
   eval [1, 2, 3]  
 	\ ->sort(
 	\ )
-  eval [1, 2, 3]-> sort()
+  eval [1, 2, 3]->sort()
 
   call assert_fails('eval [1, 2, 3]->sort ()', 'E274:')
   call assert_fails('eval [1, 2, 3] ->sort ()', 'E274:')
   call assert_fails('eval [1, 2, 3]-> sort ()', 'E274:')
+  call assert_fails('eval [1, 2, 3]-> sort()', 'E274:')
 endfunc
 
 func Test_method_lambda()
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2855,
+/**/
     2854,
 /**/
     2853,