Fix parsing of assign() template function

This fixes a regression from commit
bde8cd5e65984786471851309bd9c95be1f354a5, which allowed expression lists
as function arguments. However, assign() still expects simple expression
as its first argument. I don't think allowing expression list there
makes much sense, so let's restrict this.
This commit is contained in:
David Tardon 2021-10-18 21:22:34 +02:00
parent 1796df09b4
commit 22b32638e8

View File

@ -540,8 +540,8 @@ class _Parser:
lambda ln, args: IfNode(ln, args[0], (args[1],), (args[2],))), lambda ln, args: IfNode(ln, args[0], (args[1],), (args[2],))),
'first_non_empty': (lambda args: len(args) == 1, 'first_non_empty': (lambda args: len(args) == 1,
lambda ln, args: FirstNonEmptyNode(ln, args)), lambda ln, args: FirstNonEmptyNode(ln, args)),
'assign': (lambda args: len(args) == 2 and args[0].node_type == Node.NODE_RVALUE, 'assign': (lambda args: len(args) == 2 and len(args[0]) == 1 and args[0][0].node_type == Node.NODE_RVALUE,
lambda ln, args: AssignNode(ln, args[0].name, args[1])), lambda ln, args: AssignNode(ln, args[0][0].name, args[1])),
'contains': (lambda args: len(args) == 4, 'contains': (lambda args: len(args) == 4,
lambda ln, args: ContainsNode(ln, args)), lambda ln, args: ContainsNode(ln, args)),
'character': (lambda args: len(args) == 1, 'character': (lambda args: len(args) == 1,