bpo-40334: Correctly generate C parser when assigned var is None (GH-20296)
When there are 2 negative lookaheads in the same rule, let's say `!"(" blabla "," !")"`, there will the 2 `FunctionCall`'s where assigned value is None. Currently when the `add_var` is called the first one will be ignored but when the second lookahead's var is sent to dedupe it will be returned as `None_1` and this won't be ignored by the declaration generator in the `visit_Alt`. This patch adds an explicit check to `add_var` to distinguish whether if there is a variable or not.
This commit is contained in:
parent
a487a39dca
commit
f50516e6a9
|
@ -722,4 +722,7 @@ class CParserGenerator(ParserGenerator, GrammarVisitor):
|
|||
|
||||
def add_var(self, node: NamedItem) -> Tuple[Optional[str], Optional[str]]:
|
||||
call = self.callmakervisitor.visit(node.item)
|
||||
return self.dedupe(node.name if node.name else call.assigned_variable), call.return_type
|
||||
name = node.name if node.name else call.assigned_variable
|
||||
if name is not None:
|
||||
name = self.dedupe(name)
|
||||
return name, call.return_type
|
||||
|
|
Loading…
Reference in New Issue