0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.1149: Vim9: :eval command not handled properly

Problem:    Vim9: :eval command not handled properly.
Solution:   Compile the :eval command. (closes #6408)
This commit is contained in:
Bram Moolenaar
2020-07-06 23:04:49 +02:00
parent cbb6bdcd89
commit 007f9d6ed5
3 changed files with 31 additions and 14 deletions

View File

@@ -3852,7 +3852,6 @@ compile_expr7(
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 @@ compile_def_function(ufunc_T *ufunc, int set_return_type, cctx_T *outer_cctx)
}
// 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 @@ compile_def_function(ufunc_T *ufunc, int set_return_type, cctx_T *outer_cctx)
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: