]> granicus.if.org Git - vim/commitdiff
patch 8.2.0480: Vim9: some code is not tested v8.2.0480
authorBram Moolenaar <Bram@vim.org>
Sun, 29 Mar 2020 19:38:15 +0000 (21:38 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 29 Mar 2020 19:38:15 +0000 (21:38 +0200)
Problem:    Vim9: some code is not tested.
Solution:   Add more tests.

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

index 6a03027d05f8541628e96015506de2c216f6698a..f61ff536ad28bef4ffd19c2e79c0cb06ecf5e809 100644 (file)
@@ -706,9 +706,12 @@ def Test_expr7_list()
   assert_equal(g:list_empty, [])
   assert_equal(g:list_empty, [  ])
   assert_equal(g:list_mixed, [1, 'b', false])
+  assert_equal('b', g:list_mixed[1])
 
   call CheckDefExecFailure("let x = g:anint[3]", 'E714:')
+  call CheckDefFailure("let x = g:list_mixed[xxx]", 'E1001:')
   call CheckDefExecFailure("let x = g:list_mixed['xx']", 'E39:')
+  call CheckDefFailure("let x = g:list_mixed[0", 'E111:')
   call CheckDefExecFailure("let x = g:list_empty[3]", 'E684:')
 enddef
 
@@ -739,6 +742,12 @@ def Test_expr7_dict()
   call CheckDefExecFailure("let x = g:dict_empty.member", 'E716:')
 enddef
 
+def Test_expr_member()
+  assert_equal(1, g:dict_one.one)
+
+  call CheckDefFailure("let x = g:dict_one.#$!", 'E1002:')
+enddef
+
 def Test_expr7_option()
   " option
   set ts=11
@@ -778,6 +787,30 @@ def Test_expr7_parens()
   assert_equal(-6, ---6)
 enddef
 
+def Test_expr7_negate()
+  assert_equal(-99, -99)
+  assert_equal(99, --99)
+  let nr = 88
+  assert_equal(-88, -nr)
+  assert_equal(88, --nr)
+enddef
+
+def Echo(arg): string
+  return arg
+enddef
+
+def s:EchoArg(arg): string
+  return arg
+enddef
+
+def Test_expr7_call()
+  assert_equal('yes', 'yes'->Echo())
+  assert_equal('yes', 'yes'->s:EchoArg())
+
+  call CheckDefFailure("let x = 'yes'->Echo", 'E107:')
+enddef
+
+
 def Test_expr7_not()
   assert_equal(true, !'')
   assert_equal(true, ![])
index f1d74d87fb80bbe169d52edd3511f5be2ceb2b6b..e09cf4f70726b668d43df2cd33747cac43cf150a 100644 (file)
@@ -738,6 +738,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    480,
 /**/
     479,
 /**/
index 584618c0e19b2f8f5e3428c3fcec21da6b1f0c38..9d66e5ed15bf213230f9bb9be546b39a93dfe4fe 100644 (file)
@@ -2622,11 +2622,14 @@ compile_subscript(
            else
            {
                // method call:  list->method()
-               for (p = *arg; eval_isnamec1(*p); ++p)
+               p = *arg;
+               if (ASCII_ISALPHA(*p) && p[1] == ':')
+                   p += 2;
+               for ( ; eval_isnamec1(*p); ++p)
                    ;
                if (*p != '(')
                {
-                   semsg(_(e_missing_paren), arg);
+                   semsg(_(e_missing_paren), *arg);
                    return FAIL;
                }
                // TODO: base value may not be the first argument