summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/testdir/test_vim9_func.vim1
-rw-r--r--src/version.c2
-rw-r--r--src/vim9compile.c4
3 files changed, 7 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 0fd28924a3..e1b3b7ffd6 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -113,6 +113,7 @@ def Test_call_wrong_args()
call CheckDefFailure(['TakesOneArg()'], 'E119:')
call CheckDefFailure(['TakesOneArg(11, 22)'], 'E118:')
call CheckDefFailure(['bufnr(xxx)'], 'E1001:')
+ call CheckScriptFailure(['def Func(Ref: func(s: string))'], 'E475:')
enddef
" Default arg and varargs
diff --git a/src/version.c b/src/version.c
index 982ac1f887..21cda476a5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 682,
+/**/
681,
/**/
680,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 5644c50358..eb84e35909 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -1663,7 +1663,11 @@ skip_type(char_u *start)
++p;
while (*p != ')' && *p != NUL)
{
+ char_u *sp = p;
+
p = skip_type(p);
+ if (p == sp)
+ return p; // syntax error
if (*p == ',')
p = skipwhite(p + 1);
}