1
0
forked from aniani/vim

patch 8.2.2071: Vim9: list assign doesn't except empty remainder list

Problem:    Vim9: list assign doesn't except empty remainder list.
Solution:   Recognize list assignment with ";".
This commit is contained in:
Bram Moolenaar
2020-11-30 21:12:19 +01:00
parent f0068c5154
commit da7c20c953
3 changed files with 33 additions and 21 deletions

View File

@@ -3356,7 +3356,14 @@ find_ex_command(
if (*eap->cmd == '[') if (*eap->cmd == '[')
{ {
p = to_name_const_end(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; eap->cmdidx = CMD_eval;
return eap->cmd; return eap->cmd;

View File

@@ -632,30 +632,33 @@ def Test_assignment_default()
enddef enddef
def Test_assignment_var_list() def Test_assignment_var_list()
var v1: string var lines =<< trim END
var v2: string var v1: string
var vrem: list<string> var v2: string
[v1] = ['aaa'] var vrem: list<string>
assert_equal('aaa', v1) [v1] = ['aaa']
assert_equal('aaa', v1)
[v1, v2] = ['one', 'two'] [v1, v2] = ['one', 'two']
assert_equal('one', v1) assert_equal('one', v1)
assert_equal('two', v2) assert_equal('two', v2)
[v1, v2; vrem] = ['one', 'two'] [v1, v2; vrem] = ['one', 'two']
assert_equal('one', v1) assert_equal('one', v1)
assert_equal('two', v2) assert_equal('two', v2)
assert_equal([], vrem) assert_equal([], vrem)
[v1, v2; vrem] = ['one', 'two', 'three'] [v1, v2; vrem] = ['one', 'two', 'three']
assert_equal('one', v1) assert_equal('one', v1)
assert_equal('two', v2) assert_equal('two', v2)
assert_equal(['three'], vrem) assert_equal(['three'], vrem)
[&ts, &sw] = [3, 4] [&ts, &sw] = [3, 4]
assert_equal(3, &ts) assert_equal(3, &ts)
assert_equal(4, &sw) assert_equal(4, &sw)
set ts=8 sw=4 set ts=8 sw=4
END
CheckDefAndScriptSuccess(lines)
enddef enddef
def Test_assignment_vim9script() def Test_assignment_vim9script()

View File

@@ -750,6 +750,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 */
/**/
2071,
/**/ /**/
2070, 2070,
/**/ /**/