# HG changeset patch # User Bram Moolenaar # Date 1588439704 -7200 # Node ID 6f9010b6f7f9f80c40ae815c11d967b5061ebdf2 # Parent b5a5cffac014ace47a349980edc4d069349f4c57 patch 8.2.0682: Vim9: parsing function argument type can get stuck Commit: https://github.com/vim/vim/commit/1c0d44f8efae36c079cb8be395785827aa0b2737 Author: Bram Moolenaar Date: Sat May 2 19:04:58 2020 +0200 patch 8.2.0682: Vim9: parsing function argument type can get stuck Problem: Vim9: parsing function argument type can get stuck. Solution: Bail out when not making progress. diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim --- 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 --- 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 --- 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); }