lines = ['var l = [0, 1, 2]', 'echo l[g:astring : g:theone]']
CheckDefExecFailure(lines, 'E1012:')
CheckScriptFailure(['vim9script'] + lines, 'E1030:', 3)
+
+ lines =<< trim END
+ vim9script
+ var ld = []
+ def Func()
+ eval ld[0].key
+ enddef
+ defcompile
+ END
+ CheckScriptSuccess(lines)
enddef
def Test_expr7_dict_subscript()
var l = [{lnum: 2}, {lnum: 1}]
var res = l[0].lnum > l[1].lnum
assert_true(res)
+
+ var dd = {}
+ def Func1()
+ eval dd.key1.key2
+ enddef
+ def Func2()
+ eval dd['key1'].key2
+ enddef
+ defcompile
END
CheckScriptSuccess(lines)
enddef
}
// change dict type to dict member type
if (type->tt_type == VAR_DICT)
- ((type_T **)stack->ga_data)[stack->ga_len - 1] = type->tt_member;
+ {
+ ((type_T **)stack->ga_data)[stack->ga_len - 1] =
+ type->tt_member == &t_unknown ? &t_any : type->tt_member;
+ }
return OK;
}
return FAIL;
}
if ((*typep)->tt_type == VAR_DICT)
+ {
*typep = (*typep)->tt_member;
+ if (*typep == &t_unknown)
+ // empty dict was used
+ *typep = &t_any;
+ }
else
{
if (need_type(*typep, &t_dict_any, -2, cctx,
else
{
if ((*typep)->tt_type == VAR_LIST)
+ {
*typep = (*typep)->tt_member;
+ if (*typep == &t_unknown)
+ // empty list was used
+ *typep = &t_any;
+ }
if (generate_instr_drop(cctx,
vtype == VAR_LIST ? ISN_LISTINDEX : ISN_ANYINDEX,
1) == FAIL)