@@ -3975,7 +3975,10 @@ compile_expr7(
39753975
39763976 if (!eval_isnamec1 (* * arg ))
39773977 {
3978- semsg (_ (e_name_expected ), * arg );
3978+ if (ends_excmd (* skipwhite (* arg )))
3979+ semsg (_ (e_empty_expression_str ), * arg );
3980+ else
3981+ semsg (_ (e_name_expected_str ), * arg );
39793982 return FAIL ;
39803983 }
39813984
@@ -7101,28 +7104,31 @@ compile_throw(char_u *arg, cctx_T *cctx UNUSED)
71017104compile_mult_expr (char_u * arg , int cmdidx , cctx_T * cctx )
71027105{
71037106 char_u * p = arg ;
7104- char_u * prev ;
7107+ char_u * prev = arg ;
71057108 int count = 0 ;
71067109
71077110 for (;;)
71087111 {
7112+ if (ends_excmd2 (prev , p ))
7113+ break ;
71097114 if (compile_expr0 (& p , cctx ) == FAIL )
71107115 return NULL ;
71117116 ++ count ;
71127117 prev = p ;
71137118 p = skipwhite (p );
7114- if (ends_excmd2 (prev , p ))
7115- break ;
71167119 }
71177120
7118- if (cmdidx == CMD_echo || cmdidx == CMD_echon )
7119- generate_ECHO (cctx , cmdidx == CMD_echo , count );
7120- else if (cmdidx == CMD_execute )
7121- generate_MULT_EXPR (cctx , ISN_EXECUTE , count );
7122- else if (cmdidx == CMD_echomsg )
7123- generate_MULT_EXPR (cctx , ISN_ECHOMSG , count );
7124- else
7125- generate_MULT_EXPR (cctx , ISN_ECHOERR , count );
7121+ if (count > 0 )
7122+ {
7123+ if (cmdidx == CMD_echo || cmdidx == CMD_echon )
7124+ generate_ECHO (cctx , cmdidx == CMD_echo , count );
7125+ else if (cmdidx == CMD_execute )
7126+ generate_MULT_EXPR (cctx , ISN_EXECUTE , count );
7127+ else if (cmdidx == CMD_echomsg )
7128+ generate_MULT_EXPR (cctx , ISN_ECHOMSG , count );
7129+ else
7130+ generate_MULT_EXPR (cctx , ISN_ECHOERR , count );
7131+ }
71267132 return p ;
71277133}
71287134
0 commit comments