]> granicus.if.org Git - vim/commitdiff
patch 8.2.0276: Vim9: not allowing space before ")" in function call v8.2.0276
authorBram Moolenaar <Bram@vim.org>
Wed, 19 Feb 2020 11:40:39 +0000 (12:40 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 19 Feb 2020 11:40:39 +0000 (12:40 +0100)
Problem:    Vim9: not allowing space before ")" in function call is too
            restrictive. (Ben Jackson)
Solution:   Skip space before the ")".  Adjust other space checks.

src/testdir/test_vim9_expr.vim
src/version.c
src/vim9compile.c

index c0767f517ba564e330eac34be4de51ffa82c2e7b..1f3e4176105d68f5bb202c8ae057e22b8189187d 100644 (file)
@@ -9,6 +9,14 @@ func CheckDefFailure(line, error)
   call delete('Xdef')
 endfunc
 
+" Check that "line" inside ":def" results in an "error" message when executed.
+func CheckDefExecFailure(line, error)
+  call writefile(['def! Func()', a:line, 'enddef'], 'Xdef')
+  so Xdef
+  call assert_fails('call Func()', a:error, a:line)
+  call delete('Xdef')
+endfunc
+
 func CheckDefFailureList(lines, error)
   call writefile(['def! Func()'] + a:lines + ['enddef'], 'Xdef')
   call assert_fails('so Xdef', a:error, string(a:lines))
@@ -725,9 +733,17 @@ func CallMe(arg)
   return a:arg
 endfunc
 
+func CallMe2(one, two)
+  return a:one .. a:two
+endfunc
+
 def Test_expr7_trailing()
   " user function call
   assert_equal(123, CallMe(123))
+  assert_equal(123, CallMe(  123))
+  assert_equal(123, CallMe(123  ))
+  assert_equal('yesno', CallMe2('yes', 'no'))
+  assert_equal('yesno', CallMe2( 'yes', 'no' ))
   assert_equal('nothing', CallMe('nothing'))
 
   " partial call
@@ -761,4 +777,8 @@ endfunc
 func Test_expr_fails()
   call CheckDefFailure("let x = '1'is2", 'E488:')
   call CheckDefFailure("let x = '1'isnot2", 'E488:')
+
+  call CheckDefExecFailure("CallMe ('yes')", 'E492:')
+  call CheckDefFailure("CallMe2('yes','no')", 'E1069:')
+  call CheckDefFailure("CallMe2('yes' , 'no')", 'E1068:')
 endfunc
index 41d021f7e8d3bb5356b84c5b5d90aa1317aff6cf..5095de48374f8a341a519ce695453909fec3550c 100644 (file)
@@ -738,6 +738,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    276,
 /**/
     275,
 /**/
index adfcbcc8ffa640765a4a5afb26851974ea5e003b..8614943fd4b818b31a14748d30c595d35f080597 100644 (file)
@@ -1658,9 +1658,21 @@ compile_arguments(char_u **arg, cctx_T *cctx, int *argcount)
        if (compile_expr1(&p, cctx) == FAIL)
            return FAIL;
        ++*argcount;
+
+       if (*p != ',' && *skipwhite(p) == ',')
+       {
+           emsg(_("E1068: No white space allowed before ,"));
+           p = skipwhite(p);
+       }
        if (*p == ',')
-           p = skipwhite(p + 1);
+       {
+           ++p;
+           if (!VIM_ISWHITE(*p))
+               emsg(_("E1069: white space required after ,"));
+       }
+       p = skipwhite(p);
     }
+    p = skipwhite(p);
     if (*p != ')')
     {
        emsg(_(e_missing_close));