diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 83f49d0d37..db7bb931f8 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -3483,7 +3483,8 @@ find_ex_command( // Recognize an assignment if we recognize the variable name: // "g:var = expr" - // "var = expr" where "var" is a variable name. + // "var = expr" where "var" is a variable name or we are skipping + // (variable declaration might have been skipped). if (*eap->cmd == '@') p = eap->cmd + 2; oplen = assignment_len(skipwhite(p), &heredoc); @@ -3493,6 +3494,7 @@ find_ex_command( || *eap->cmd == '&' || *eap->cmd == '$' || *eap->cmd == '@' + || eap->skip || lookup(eap->cmd, p - eap->cmd, TRUE, cctx) == OK) { eap->cmdidx = CMD_var; diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index 958b7b9809..ad942a8f17 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -249,6 +249,18 @@ def Test_assignment() END enddef +def Test_skipped_assignment() + var lines =<< trim END + for x in [] + var i: number = 1 + while false + i += 1 + endwhile + endfor + END + CheckDefAndScriptSuccess(lines) +enddef + def Test_assign_unpack() var lines =<< trim END var v1: number diff --git a/src/version.c b/src/version.c index 8cbe3d36d7..44cf5ffd0c 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2771, /**/ 2770, /**/