patch 8.2.0480: Vim9: some code is not tested

Problem:    Vim9: some code is not tested.
Solution:   Add more tests.
This commit is contained in:
Bram Moolenaar 2020-03-29 21:38:15 +02:00
parent 2027973b5b
commit 0b37a2f379
3 changed files with 40 additions and 2 deletions

View 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, ![])

View File

@ -738,6 +738,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
480,
/**/
479,
/**/

View 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