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
index ed52b46..bc01b69 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -3224,19 +3224,33 @@
 			    // "g:varname" is an expression.
 			 || eap->cmd[1] == ':'
 			    )
-			: (
-			    // "varname[]" is an expression.
-			    *p == '['
 			    // "varname->func()" is an expression.
-			 || (*p == '-' && p[1] == '>')
-			    // "varname.expr" is an expression.
-			 || (*p == '.' && ASCII_ISALPHA(p[1]))
-			 )))
+			: (*p == '-' && p[1] == '>')))
 	    {
 		eap->cmdidx = CMD_eval;
 		return eap->cmd;
 	    }
 
+	    if (p != eap->cmd && (
+			    // "varname[]" is an expression.
+			    *p == '['
+			    // "varname.key" is an expression.
+			 || (*p == '.' && ASCII_ISALPHA(p[1]))))
+	    {
+		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;
+	    }
+
 	    // "[...]->Method()" is a list expression, but "[a, b] = Func()" is
 	    // an assignment.
 	    // If there is no line break inside the "[...]" then "p" is