if (*eap->cmd == '[')
{
p = to_name_const_end(eap->cmd);
- if (p == eap->cmd || *skipwhite(p) != '=')
+ if (p == eap->cmd && *p == '[')
+ {
+ int count = 0;
+ int semicolon = FALSE;
+
+ p = skip_var_list(eap->cmd, TRUE, &count, &semicolon, TRUE);
+ }
+ if (p == NULL || p == eap->cmd || *skipwhite(p) != '=')
{
eap->cmdidx = CMD_eval;
return eap->cmd;
enddef
def Test_assignment_var_list()
- var v1: string
- var v2: string
- var vrem: list<string>
- [v1] = ['aaa']
- assert_equal('aaa', v1)
-
- [v1, v2] = ['one', 'two']
- assert_equal('one', v1)
- assert_equal('two', v2)
-
- [v1, v2; vrem] = ['one', 'two']
- assert_equal('one', v1)
- assert_equal('two', v2)
- assert_equal([], vrem)
-
- [v1, v2; vrem] = ['one', 'two', 'three']
- assert_equal('one', v1)
- assert_equal('two', v2)
- assert_equal(['three'], vrem)
-
- [&ts, &sw] = [3, 4]
- assert_equal(3, &ts)
- assert_equal(4, &sw)
- set ts=8 sw=4
+ var lines =<< trim END
+ var v1: string
+ var v2: string
+ var vrem: list<string>
+ [v1] = ['aaa']
+ assert_equal('aaa', v1)
+
+ [v1, v2] = ['one', 'two']
+ assert_equal('one', v1)
+ assert_equal('two', v2)
+
+ [v1, v2; vrem] = ['one', 'two']
+ assert_equal('one', v1)
+ assert_equal('two', v2)
+ assert_equal([], vrem)
+
+ [v1, v2; vrem] = ['one', 'two', 'three']
+ assert_equal('one', v1)
+ assert_equal('two', v2)
+ assert_equal(['three'], vrem)
+
+ [&ts, &sw] = [3, 4]
+ assert_equal(3, &ts)
+ assert_equal(4, &sw)
+ set ts=8 sw=4
+ END
+ CheckDefAndScriptSuccess(lines)
enddef
def Test_assignment_vim9script()