# HG changeset patch # User Bram Moolenaar # Date 1585511103 -7200 # Node ID 36d629aa3d6e5ad3db9cb06ca02e95ce00c0565e # Parent 8176228268cb7a210ae3b68d5474098892eceda5 patch 8.2.0480: Vim9: some code is not tested Commit: https://github.com/vim/vim/commit/0b37a2f379f36d097e7fa90a3e86da6a29ed2aaa Author: Bram Moolenaar Date: Sun Mar 29 21:38:15 2020 +0200 patch 8.2.0480: Vim9: some code is not tested Problem: Vim9: some code is not tested. Solution: Add more tests. diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -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, ![]) diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -739,6 +739,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 480, +/**/ 479, /**/ 478, diff --git a/src/vim9compile.c b/src/vim9compile.c --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -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