patch 8.2.1149: Vim9: :eval command not handled properly

Problem:    Vim9: :eval command not handled properly.
Solution:   Compile the :eval command. (closes #6408)
diff --git a/src/vim9compile.c b/src/vim9compile.c
index c876da0..ff6668f 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -3852,7 +3852,6 @@
 			char_u *start = skipwhite(*arg + 1);
 
 			// Find out what comes after the arguments.
-			// TODO: pass getline function
 			ret = get_function_args(&start, '-', NULL,
 					   NULL, NULL, NULL, TRUE, NULL, NULL);
 			if (ret != FAIL && *start == '>')
@@ -6990,21 +6989,12 @@
 	    }
 
 	    // Expression or function call.
-	    if (ea.cmdidx == CMD_eval)
+	    if (ea.cmdidx != CMD_eval)
 	    {
-		p = ea.cmd;
-		if (compile_expr0(&p, &cctx) == FAIL)
-		    goto erret;
-
-		// drop the return value
-		generate_instr_drop(&cctx, ISN_DROP, 1);
-
-		line = skipwhite(p);
-		continue;
+		// CMD_let cannot happen, compile_assignment() above is used
+		iemsg("Command from find_ex_command() not handled");
+		goto erret;
 	    }
-	    // CMD_let cannot happen, compile_assignment() above is used
-	    iemsg("Command from find_ex_command() not handled");
-	    goto erret;
 	}
 
 	p = skipwhite(p);
@@ -7124,6 +7114,16 @@
 		    line = compile_throw(p, &cctx);
 		    break;
 
+	    case CMD_eval:
+		    if (compile_expr0(&p, &cctx) == FAIL)
+			goto erret;
+
+		    // drop the return value
+		    generate_instr_drop(&cctx, ISN_DROP, 1);
+
+		    line = skipwhite(p);
+		    break;
+
 	    case CMD_echo:
 	    case CMD_echon:
 	    case CMD_execute: