aboutsummaryrefslogtreecommitdiff
path: root/test/unit/viml/expressions/parser_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/viml/expressions/parser_spec.lua')
-rw-r--r--test/unit/viml/expressions/parser_spec.lua23
1 files changed, 11 insertions, 12 deletions
diff --git a/test/unit/viml/expressions/parser_spec.lua b/test/unit/viml/expressions/parser_spec.lua
index cfc9fe95ac..810d7bfbc6 100644
--- a/test/unit/viml/expressions/parser_spec.lua
+++ b/test/unit/viml/expressions/parser_spec.lua
@@ -18,6 +18,7 @@ local conv_ccs = viml_helpers.conv_ccs
local new_pstate = viml_helpers.new_pstate
local conv_cmp_type = viml_helpers.conv_cmp_type
local pstate_set_str = viml_helpers.pstate_set_str
+local conv_expr_asgn_type = viml_helpers.conv_expr_asgn_type
local mergedicts_copy = global_helpers.mergedicts_copy
local format_string = global_helpers.format_string
@@ -109,6 +110,7 @@ make_enum_conv_tab(lib, {
'kExprNodeMod',
'kExprNodeOption',
'kExprNodeEnvironment',
+ 'kExprNodeAssignment',
}, 'kExprNode', function(ret) east_node_type_tab = ret end)
local function conv_east_node_type(typ)
@@ -174,6 +176,8 @@ local function eastnode2lua(pstate, eastnode, checked_nodes)
typ = ('%s(ident=%s)'):format(
typ,
ffi.string(eastnode.data.env.ident, eastnode.data.env.ident_len))
+ elseif typ == 'Assignment' then
+ typ = ('%s(%s)'):format(typ, conv_expr_asgn_type(eastnode.data.ass.type))
end
ret_str = typ .. ':' .. ret_str
local can_simplify = not ret.children
@@ -3976,27 +3980,20 @@ describe('Expressions parser', function()
-- 012345
ast = {
{
- 'Comparison(type=Equal,inv=0,ccs=UseOption):0:3:=',
+ 'Assignment(Add):0:1: +=',
children = {
- {
- 'BinaryPlus:0:1: +',
- children = {
- 'PlainIdentifier(scope=0,ident=a):0:0:a',
- 'Missing:0:3:',
- },
- },
+ 'PlainIdentifier(scope=0,ident=a):0:0:a',
'PlainIdentifier(scope=0,ident=b):0:4: b',
},
},
},
err = {
- arg = '= b',
- msg = 'E15: Expected == or =~: %.*s',
+ arg = '+= b',
+ msg = 'E15: Misplaced assignment: %.*s',
},
}, {
hl('IdentifierName', 'a'),
- hl('BinaryPlus', '+', 1),
- hl('InvalidComparison', '='),
+ hl('InvalidAssignmentWithAddition', '+=', 1),
hl('IdentifierName', 'b', 1),
})
check_parsing('a + b == c + d', {
@@ -7347,4 +7344,6 @@ describe('Expressions parser', function()
},
})
end)
+ -- FIXME: Test assignments thoroughly
+ -- FIXME: Test that parsing assignments can be used for `:for` pre-`in` part.
end)