0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.2.2444: Vim9: compile error with combination of operator and list

Problem:    Vim9: compile error with combination of operator and list.
Solution:   Generate constants before parsing a list or dict. (closes #7757)
This commit is contained in:
Bram Moolenaar
2021-01-31 21:47:42 +01:00
parent 80ad3e2569
commit e507ff15d5
3 changed files with 11 additions and 2 deletions

View File

@@ -1083,6 +1083,9 @@ def Test_expr5()
assert_equal('a0.123', 'a' .. 0.123) assert_equal('a0.123', 'a' .. 0.123)
endif endif
assert_equal(3, 1 + [2, 3, 4][0])
assert_equal(5, 2 + {key: 3}['key'])
set digraph set digraph
assert_equal('val: true', 'val: ' .. &digraph) assert_equal('val: true', 'val: ' .. &digraph)
set nodigraph set nodigraph

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 */
/**/
2444,
/**/ /**/
2443, 2443,
/**/ /**/

View File

@@ -4121,13 +4121,17 @@ compile_expr7(
/* /*
* List: [expr, expr] * List: [expr, expr]
*/ */
case '[': ret = compile_list(arg, cctx, ppconst); case '[': if (generate_ppconst(cctx, ppconst) == FAIL)
return FAIL;
ret = compile_list(arg, cctx, ppconst);
break; break;
/* /*
* Dictionary: {'key': val, 'key': val} * Dictionary: {'key': val, 'key': val}
*/ */
case '{': ret = compile_dict(arg, cctx, ppconst); case '{': if (generate_ppconst(cctx, ppconst) == FAIL)
return FAIL;
ret = compile_dict(arg, cctx, ppconst);
break; break;
/* /*