diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 47b23e85e5..27585a9049 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -861,6 +861,13 @@ def Test_func_with_comments() END v9.CheckScriptFailure(lines, 'E125:', 1) + lines =<< trim END + def Func(f= + ) + enddef + END + v9.CheckScriptFailure(lines, 'E125:', 2) + lines =<< trim END def Func( arg: string# comment diff --git a/src/userfunc.c b/src/userfunc.c index 33e73a9a52..e2b1bc3226 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -243,6 +243,7 @@ get_function_args( int c; int any_default = FALSE; char_u *whitep = *argp; + int need_expr = FALSE; if (newargs != NULL) ga_init2(newargs, sizeof(char_u *), 3); @@ -282,7 +283,7 @@ get_function_args( semsg(_(e_invalid_argument_str), *argp); goto err_ret; } - if (*p == endchar) + if (*p == endchar && !need_expr) break; if (p[0] == '.' && p[1] == '.' && p[2] == '.') @@ -435,6 +436,8 @@ get_function_args( if (ga_grow(default_args, 1) == FAIL) goto err_ret; + if (need_expr) + need_expr = FALSE; // trim trailing whitespace while (p > expr && VIM_ISWHITE(p[-1])) p--; @@ -453,7 +456,11 @@ get_function_args( } } else + { mustend = TRUE; + if (*skipwhite(p) == NUL) + need_expr = TRUE; + } } else if (any_default) { diff --git a/src/version.c b/src/version.c index f7d6cbcb6b..919f42f2d3 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2157, /**/ 2156, /**/