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_empty, [ ]) assert_equal(g:list_empty, [ ])
assert_equal(g:list_mixed, [1, 'b', false]) assert_equal(g:list_mixed, [1, 'b', false])
assert_equal('b', g:list_mixed[1])
call CheckDefExecFailure("let x = g:anint[3]", 'E714:') 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 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:') call CheckDefExecFailure("let x = g:list_empty[3]", 'E684:')
enddef enddef
@ -739,6 +742,12 @@ def Test_expr7_dict()
call CheckDefExecFailure("let x = g:dict_empty.member", 'E716:') call CheckDefExecFailure("let x = g:dict_empty.member", 'E716:')
enddef 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() def Test_expr7_option()
" option " option
set ts=11 set ts=11
@ -778,6 +787,30 @@ def Test_expr7_parens()
assert_equal(-6, ---6) assert_equal(-6, ---6)
enddef 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() def Test_expr7_not()
assert_equal(true, !'') assert_equal(true, !'')
assert_equal(true, ![]) assert_equal(true, ![])

View File

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

View File

@ -2622,11 +2622,14 @@ compile_subscript(
else else
{ {
// method call: list->method() // 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 != '(') if (*p != '(')
{ {
semsg(_(e_missing_paren), arg); semsg(_(e_missing_paren), *arg);
return FAIL; return FAIL;
} }
// TODO: base value may not be the first argument // TODO: base value may not be the first argument