Skip to content

Commit c58164c

Browse files
committed
patch 8.2.0477: Vim9: error messages not tested
Problem: Vim9: error messages not tested. Solution: Add more tests.
1 parent 52ea92b commit c58164c

3 files changed

Lines changed: 29 additions & 1 deletion

File tree

src/testdir/test_vim9_expr.vim

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,13 @@ def Test_expr7_dict()
728728
let val = 1
729729
assert_equal(g:dict_one, {key: val})
730730

731+
call CheckDefFailure("let x = #{8: 8}", 'E1014:')
732+
call CheckDefFailure("let x = #{xxx}", 'E720:')
733+
call CheckDefFailure("let x = #{xxx: 1", 'E722:')
734+
call CheckDefFailure("let x = #{xxx: 1,", 'E723:')
735+
call CheckDefFailure("let x = {'a': xxx}", 'E1001:')
736+
call CheckDefFailure("let x = {xxx: 8}", 'E1001:')
737+
call CheckDefFailure("let x = #{a: 1, a: 2}", 'E721:')
731738
call CheckDefExecFailure("let x = g:anint.member", 'E715:')
732739
call CheckDefExecFailure("let x = g:dict_empty.member", 'E716:')
733740
enddef
@@ -750,6 +757,8 @@ def Test_expr7_environment()
750757
" environment variable
751758
assert_equal('testvar', $TESTVAR)
752759
assert_equal('', $ASDF_ASD_XXX)
760+
761+
call CheckDefFailure("let x = $$$", 'E1002:')
753762
enddef
754763

755764
def Test_expr7_register()
@@ -802,6 +811,9 @@ func Test_expr7_fails()
802811

803812
call CheckDefFailure("let x = -'xx'", "E1030:")
804813
call CheckDefFailure("let x = +'xx'", "E1030:")
814+
call CheckDefFailure("let x = -0z12", "E974:")
815+
call CheckDefExecFailure("let x = -[8]", "E39:")
816+
call CheckDefExecFailure("let x = -{'a': 1}", "E39:")
805817

806818
call CheckDefFailure("let x = @", "E1002:")
807819
call CheckDefFailure("let x = @<", "E354:")

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -738,6 +738,8 @@ static char *(features[]) =
738738

739739
static int included_patches[] =
740740
{ /* Add new patch number below this line */
741+
/**/
742+
477,
741743
/**/
742744
476,
743745
/**/

src/vim9execute.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1612,7 +1612,21 @@ call_def_function(
16121612

16131613
case ISN_NEGATENR:
16141614
tv = STACK_TV_BOT(-1);
1615-
tv->vval.v_number = -tv->vval.v_number;
1615+
if (tv->v_type != VAR_NUMBER
1616+
#ifdef FEAT_FLOAT
1617+
&& tv->v_type != VAR_FLOAT
1618+
#endif
1619+
)
1620+
{
1621+
emsg(_(e_number_exp));
1622+
goto failed;
1623+
}
1624+
#ifdef FEAT_FLOAT
1625+
if (tv->v_type == VAR_FLOAT)
1626+
tv->vval.v_float = -tv->vval.v_float;
1627+
else
1628+
#endif
1629+
tv->vval.v_number = -tv->vval.v_number;
16161630
break;
16171631

16181632
case ISN_CHECKNR:

0 commit comments

Comments
 (0)