{
// Parse the name and find the end.
name_end = get_lval(arg, NULL, &lv, TRUE, eap->skip || error,
- glv_flags, FNE_CHECK_START);
+ glv_flags | GLV_NO_DECL, FNE_CHECK_START);
if (lv.ll_name == NULL)
error = TRUE; // error but continue parsing
if (name_end == NULL || (!VIM_ISWHITE(*name_end)
enddef
def Test_assign_dict()
- var d: dict<string> = {}
- d['key'] = 'value'
- assert_equal('value', d['key'])
-
- d[123] = 'qwerty'
- assert_equal('qwerty', d[123])
- assert_equal('qwerty', d['123'])
+ var lines =<< trim END
+ var d: dict<string> = {}
+ d['key'] = 'value'
+ assert_equal('value', d['key'])
+
+ d[123] = 'qwerty'
+ assert_equal('qwerty', d[123])
+ assert_equal('qwerty', d['123'])
+
+ var nrd: dict<number> = {}
+ for i in range(3)
+ nrd[i] = i
+ endfor
+ assert_equal({0: 0, 1: 1, 2: 2}, nrd)
+
+ d.somekey = 'someval'
+ assert_equal({key: 'value', '123': 'qwerty', somekey: 'someval'}, d)
+ # unlet d.somekey
+ # assert_equal({key: 'value', '123': 'qwerty'}, d)
+ END
+ CheckDefAndScriptSuccess(lines)
- var nrd: dict<number> = {}
- for i in range(3)
- nrd[i] = i
- endfor
- assert_equal({0: 0, 1: 1, 2: 2}, nrd)
+ # TODO: move to above once "unlet d.somekey" in :def is implemented
+ lines =<< trim END
+ vim9script
+ var d: dict<string> = {}
+ d['key'] = 'value'
+ d.somekey = 'someval'
+ assert_equal({key: 'value', somekey: 'someval'}, d)
+ unlet d.somekey
+ assert_equal({key: 'value'}, d)
+ END
+ CheckScriptSuccess(lines)
CheckDefFailure(["var d: dict<number> = {a: '', b: true}"], 'E1012: Type mismatch; expected dict<number> but got dict<any>', 1)
CheckDefFailure(["var d: dict<dict<number>> = {x: {a: '', b: true}}"], 'E1012: Type mismatch; expected dict<dict<number>> but got dict<dict<any>>', 1)