patch 8.1.0550: expression evaluation may repeat an error message

Problem:    Expression evaluation may repeat an error message. (Jason
            Franklin)
Solution:   Increment did_emsg and check for the value when giving an error
            for the echo command.
diff --git a/src/eval.c b/src/eval.c
index 4a3cf99..a525678 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -7999,6 +7999,7 @@
     int		needclr = TRUE;
     int		atstart = TRUE;
     char_u	numbuf[NUMBUFLEN];
+    int		did_emsg_before = did_emsg;
 
     if (eap->skip)
 	++emsg_skip;
@@ -8016,7 +8017,7 @@
 	     * has been cancelled due to an aborting error, an interrupt, or an
 	     * exception.
 	     */
-	    if (!aborting())
+	    if (!aborting() && did_emsg == did_emsg_before)
 		EMSG2(_(e_invexpr2), p);
 	    need_clr_eos = FALSE;
 	    break;