# HG changeset patch # User Bram Moolenaar # Date 1600101903 -7200 # Node ID 2eaee3396f7ad23564c8df2fac8e2a9ae7c327b9 # Parent 65a5797b155f2430d41c8f7407e32a8a29231009 patch 8.2.1683: Vim9: assignment test fails Commit: https://github.com/vim/vim/commit/2b22b113c6aedf2a1295cf7e6f2f2a5d463b3868 Author: Bram Moolenaar Date: Mon Sep 14 18:35:18 2020 +0200 patch 8.2.1683: Vim9: assignment test fails Problem: Vim9: assignment test fails. Solution: Include changes to find Ex command. diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -3224,16 +3224,30 @@ find_ex_command( // "g:varname" is an expression. || eap->cmd[1] == ':' ) - : ( + // "varname->func()" is an expression. + : (*p == '-' && p[1] == '>'))) + { + eap->cmdidx = CMD_eval; + return eap->cmd; + } + + if (p != eap->cmd && ( // "varname[]" is an expression. *p == '[' - // "varname->func()" is an expression. - || (*p == '-' && p[1] == '>') - // "varname.expr" is an expression. - || (*p == '.' && ASCII_ISALPHA(p[1])) - ))) + // "varname.key" is an expression. + || (*p == '.' && ASCII_ISALPHA(p[1])))) { - eap->cmdidx = CMD_eval; + char_u *after = p; + + // When followed by "=" or "+=" then it is an assignment. + ++emsg_silent; + if (skip_expr(&after) == OK + && (*after == '=' + || (*after != NUL && after[1] == '='))) + eap->cmdidx = CMD_let; + else + eap->cmdidx = CMD_eval; + --emsg_silent; return eap->cmd; } diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1683, +/**/ 1682, /**/ 1681,