nodes: fix some issues in Blocks (regarding purity consideration for IR)
No longer special case the last node in a Block. Call super() semantic analysis for variables. This may prevent some future issues.
This commit is contained in:
parent
6b3c0e8fe3
commit
20731d969e
1 changed files with 2 additions and 2 deletions
|
|
@ -286,10 +286,9 @@ class Block(Statement):
|
|||
|
||||
def intermediate_representation(self) -> list[ir.IRItem]:
|
||||
result: list[ir.IRItem] = []
|
||||
for node in self.nodes[:-1]:
|
||||
for node in self.nodes:
|
||||
if not node.pure:
|
||||
result += node.intermediate_representation()
|
||||
result += self.nodes[-1].intermediate_representation()
|
||||
return result
|
||||
|
||||
def semantic_analysis(self, context: semantic.Context | None):
|
||||
|
|
@ -316,6 +315,7 @@ class Variable(Node):
|
|||
return [self.identifier]
|
||||
|
||||
def semantic_analysis(self, context: semantic.Context):
|
||||
super(Variable, self).semantic_analysis(context)
|
||||
variable = context.get_variable(self.identifier.value)
|
||||
if variable is None:
|
||||
raise SemanticAnalysisError(location=self.location(), message=f"Unknown variable '{self.identifier.value}'")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue