]> granicus.if.org Git - vim/commitdiff
patch 8.2.0477: Vim9: error messages not tested v8.2.0477
authorBram Moolenaar <Bram@vim.org>
Sun, 29 Mar 2020 16:40:30 +0000 (18:40 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 29 Mar 2020 16:40:30 +0000 (18:40 +0200)
Problem:    Vim9: error messages not tested.
Solution:   Add more tests.

src/testdir/test_vim9_expr.vim
src/version.c
src/vim9execute.c

index 93626d5549fcba23170215e365f61da48a7656fe..6a03027d05f8541628e96015506de2c216f6698a 100644 (file)
@@ -728,6 +728,13 @@ def Test_expr7_dict()
   let val = 1
   assert_equal(g:dict_one, {key: val})
 
+  call CheckDefFailure("let x = #{8: 8}", 'E1014:')
+  call CheckDefFailure("let x = #{xxx}", 'E720:')
+  call CheckDefFailure("let x = #{xxx: 1", 'E722:')
+  call CheckDefFailure("let x = #{xxx: 1,", 'E723:')
+  call CheckDefFailure("let x = {'a': xxx}", 'E1001:')
+  call CheckDefFailure("let x = {xxx: 8}", 'E1001:')
+  call CheckDefFailure("let x = #{a: 1, a: 2}", 'E721:')
   call CheckDefExecFailure("let x = g:anint.member", 'E715:')
   call CheckDefExecFailure("let x = g:dict_empty.member", 'E716:')
 enddef
@@ -750,6 +757,8 @@ def Test_expr7_environment()
   " environment variable
   assert_equal('testvar', $TESTVAR)
   assert_equal('', $ASDF_ASD_XXX)
+
+  call CheckDefFailure("let x = $$$", 'E1002:')
 enddef
 
 def Test_expr7_register()
@@ -802,6 +811,9 @@ func Test_expr7_fails()
 
   call CheckDefFailure("let x = -'xx'", "E1030:")
   call CheckDefFailure("let x = +'xx'", "E1030:")
+  call CheckDefFailure("let x = -0z12", "E974:")
+  call CheckDefExecFailure("let x = -[8]", "E39:")
+  call CheckDefExecFailure("let x = -{'a': 1}", "E39:")
 
   call CheckDefFailure("let x = @", "E1002:")
   call CheckDefFailure("let x = @<", "E354:")
index 73de61c4b88ef81c7c6301d4e3bb651b7cea53e5..13a1c30fe22f87cc32a154373f3a5b3b92a5c174 100644 (file)
@@ -738,6 +738,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    477,
 /**/
     476,
 /**/
index 5f6f79a15e97ddd1687d6af4c3576d0a4b01b59c..4846c5521171ca85e04bb196cc063ce7a8d56cce 100644 (file)
@@ -1612,7 +1612,21 @@ call_def_function(
 
            case ISN_NEGATENR:
                tv = STACK_TV_BOT(-1);
-               tv->vval.v_number = -tv->vval.v_number;
+               if (tv->v_type != VAR_NUMBER
+#ifdef FEAT_FLOAT
+                       && tv->v_type != VAR_FLOAT
+#endif
+                       )
+               {
+                   emsg(_(e_number_exp));
+                   goto failed;
+               }
+#ifdef FEAT_FLOAT
+               if (tv->v_type == VAR_FLOAT)
+                   tv->vval.v_float = -tv->vval.v_float;
+               else
+#endif
+                   tv->vval.v_number = -tv->vval.v_number;
                break;
 
            case ISN_CHECKNR: