diff --git a/src/eval.c b/src/eval.c
index 4e2b0f1..4f931a2 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -696,6 +696,30 @@
     return (int)retval;
 }
 
+/*
+ * Call eval1() and give an error message if not done at a lower level.
+ */
+    static int
+eval1_emsg(char_u **arg, typval_T *rettv, int evaluate)
+{
+    int		ret;
+    int		did_emsg_before = did_emsg;
+    int		called_emsg_before = called_emsg;
+
+    ret = eval1(arg, rettv, evaluate);
+    if (ret == FAIL)
+    {
+	// Report the invalid expression unless the expression evaluation has
+	// been cancelled due to an aborting error, an interrupt, or an
+	// exception, or we already gave a more specific error.
+	// Also check called_emsg for when using assert_fails().
+	if (!aborting() && did_emsg == did_emsg_before
+					  && called_emsg == called_emsg_before)
+	    semsg(_(e_invexpr2), arg);
+    }
+    return ret;
+}
+
     static int
 eval_expr_typval(typval_T *expr, typval_T *argv, int argc, typval_T *rettv)
 {
@@ -729,7 +753,7 @@
 	if (s == NULL)
 	    return FAIL;
 	s = skipwhite(s);
-	if (eval1(&s, rettv, TRUE) == FAIL)
+	if (eval1_emsg(&s, rettv, TRUE) == FAIL)
 	    return FAIL;
 	if (*s != NUL)  /* check for trailing chars after expr */
 	{
@@ -8464,18 +8488,9 @@
     while (*arg != NUL && *arg != '|' && *arg != '\n')
     {
 	p = arg;
-	if (eval1(&arg, &rettv, !eap->skip) == FAIL)
-	{
-	    /*
-	     * Report the invalid expression unless the expression evaluation
-	     * has been cancelled due to an aborting error, an interrupt, or an
-	     * exception.
-	     */
-	    if (!aborting() && did_emsg == save_did_emsg)
-		semsg(_(e_invexpr2), p);
-	    ret = FAIL;
+	ret = eval1_emsg(&arg, &rettv, !eap->skip);
+	if (ret == FAIL)
 	    break;
-	}
 
 	if (!eap->skip)
 	{
@@ -10758,6 +10773,7 @@
 	}
 	else
 	{
+	    // argvars[0].v_type == VAR_LIST
 	    vimvars[VV_KEY].vv_type = VAR_NUMBER;
 
 	    for (li = l->lv_first; li != NULL; li = nli)
