]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Tuples must contain a comma
authorKevin <kevin@kevin-brown.com>
Thu, 14 May 2020 14:00:09 +0000 (10:00 -0400)
committerKevin <kevin@kevin-brown.com>
Thu, 14 May 2020 14:00:09 +0000 (10:00 -0400)
This fixes an issue where parentheses-wrapped variables were being
interpreted by the grammar as tuples. This was because we were lacking
a definiiton for variable wrapped in parentheses and because the grammar
wasn't enforcing multiple values to be present in tuples.

grammar.ebnf
src/jinja2/parser.py

index ec2d155774272e2abc6629aa2f66449fa94b977b..3c034ef188b74367adbb7e6afb0e0920c3c3074d 100644 (file)
@@ -156,6 +156,17 @@ variable_close
     ;\r
 \r
 variable_identifier\r
+    =\r
+    | variable_identifier_parentheses\r
+    | variable_identifier_raw\r
+    ;\r
+\r
+variable_identifier_parentheses\r
+    =\r
+    "(" @:variable_identifier ")"\r
+    ;\r
+\r
+variable_identifier_raw\r
     =\r
     variable:( LITERAL | IDENTIFIER )\r
     accessors:{ variable_accessor }*\r
@@ -421,7 +432,7 @@ TUPLE_LITERAL
     =\r
     literal_type:`tuple`\r
     (\r
-        | ( "(" {SP}* value+:LITERAL {SP}* { "," {SP}* value+:LITERAL {SP}* } ")" )\r
+        | ( "(" {SP}* value+:LITERAL {SP}* { "," {SP}* value+:LITERAL {SP}* }+ ")" )\r
         | ( "(" {SP}* value+:LITERAL {SP}* "," {SP}* ")" )\r
     )\r
     ;\r
index a77d05472cc4a287d5b3d3ff8a76f71a0e2675ec..721988cd9b04b21afb5d0925aa9b94880f6ba945 100644 (file)
@@ -945,12 +945,10 @@ class Parser:
 
         result = parse_template(
             grammar.parse(
-                self.source,
+                self.source.rstrip('\n'),
                 whitespace='',
                 parseinfo=True,
                 semantics=JinjaSemantics(),
-                trace=True,
-                colorize=True,
             )
         )
         result.set_environment(self.environment)