def visit_If(self, node: If): cond = self.visit(node.condition) if cond.kind == ExprKind.FIELD: return gtir.FieldIfStmt( cond=cond, true_branch=gtir.BlockStmt(body=self.visit(node.main_body)), false_branch=gtir.BlockStmt(body=self.visit(node.else_body)) if node.else_body else None, ) else: return gtir.ScalarIfStmt( cond=cond, true_branch=gtir.BlockStmt(body=self.visit(node.main_body)), false_branch=gtir.BlockStmt(body=self.visit(node.else_body)) if node.else_body else None, )
def visit_If(self, node: If) -> Union[gtir.FieldIfStmt, gtir.ScalarIfStmt]: cond = self.visit(node.condition) if cond.kind == ExprKind.FIELD: return gtir.FieldIfStmt( cond=cond, true_branch=gtir.BlockStmt(body=self.visit(node.main_body)), false_branch=gtir.BlockStmt(body=self.visit(node.else_body)) if node.else_body else None, loc=location_to_source_location(node.loc), ) else: return gtir.ScalarIfStmt( cond=cond, true_branch=gtir.BlockStmt(body=self.visit(node.main_body)), false_branch=gtir.BlockStmt(body=self.visit(node.else_body)) if node.else_body else None, loc=location_to_source_location(node.loc), )