Skip to content
Snippets Groups Projects
Commit 8e24c6a5 authored by Hugo Hörnquist's avatar Hugo Hörnquist
Browse files

Allow trailing comma in invoke:

parent 4d8814c7
No related branches found
No related tags found
No related merge requests found
......@@ -433,7 +433,7 @@ class ParserFormatter(Serializer[ParseDirective]):
parser &= ws & self.s(x)
for x in xs:
parser &= ws & ',' & ws & self.s(x)
parser &= optional(ws & ')')
parser &= optional(ws & ',') & optional(ws & ')')
return parser
@override
......
......@@ -4,6 +4,7 @@ from muppet.puppet.format.parser import ParserFormatter
from muppet.puppet.ast import build_ast
from muppet.puppet.parser import puppet_parser
from muppet.parser_combinator import ParserCombinator
from pprint import pprint
def test_parse_else_if():
......@@ -57,9 +58,6 @@ def test_parse_elsif():
# '}']
from pprint import pprint
def test_chained():
s = "x.filter().join()"
ast = build_ast(puppet_parser(s))
......@@ -88,3 +86,38 @@ def test_chained_and_lambda():
print("parser:\n" + str(parser))
match_objects = ParserCombinator(s, "s").get(parser)
pprint(match_objects)
def test_invoke():
s = """
assert_type(
Enum['always','daily','weekly','reluctantly'],
$update['frequency'],
)
"""
ast = build_ast(puppet_parser(s))
pprint(ast)
parser = ParserFormatter(s, "s").serialize(ast)
print("parser:\n" + str(parser))
match_objects = ParserCombinator(s, "s").get(parser)
pprint(match_objects)
def test_invoke_inside_if():
# This previously failed due to invoke not handling trailing
# commas. The above example (test_invoke) apparently worked,
# because reasons.
s = """
if $update['frequency'] {
assert_type(
Enum['always','daily','weekly','reluctantly'],
$update['frequency'],
)
}
"""
ast = build_ast(puppet_parser(s))
pprint(ast)
parser = ParserFormatter(s, "s").serialize(ast)
print("parser:\n" + str(parser))
match_objects = ParserCombinator(s, "s").get(parser)
pprint(match_objects)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment