From e4fb5d80d386dca9c5fa2debc3793319c18c4e8d Mon Sep 17 00:00:00 2001 From: tserg <8017125+tserg@users.noreply.github.com> Date: Tue, 26 Dec 2023 23:50:52 +0800 Subject: [PATCH] remove folding --- vyper/codegen/expr.py | 14 +++++++++++--- vyper/compiler/phases.py | 2 +- vyper/semantics/analysis/module.py | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/vyper/codegen/expr.py b/vyper/codegen/expr.py index d1687bfc29..3b463a421e 100644 --- a/vyper/codegen/expr.py +++ b/vyper/codegen/expr.py @@ -70,6 +70,14 @@ class Expr: # TODO: Once other refactors are made reevaluate all inline imports def __init__(self, node, context): + # use original node for better diagnostics + orig_node = node + if isinstance(node, vy_ast.VyperNode): + folded_node = node._metadata.get("folded_value") + if folded_node: + folded_node._metadata["type"] = node._metadata["type"] + node = folded_node + self.expr = node self.context = context @@ -80,13 +88,13 @@ def __init__(self, node, context): fn = getattr(self, f"parse_{type(node).__name__}", None) if fn is None: - raise TypeCheckFailure(f"Invalid statement node: {type(node).__name__}", node) + raise TypeCheckFailure(f"Invalid statement node: {type(node).__name__}", orig_node) - with tag_exceptions(node, fallback_exception_type=CodegenPanic): + with tag_exceptions(orig_node, fallback_exception_type=CodegenPanic): self.ir_node = fn() if self.ir_node is None: - raise TypeCheckFailure(f"{type(node).__name__} node did not produce IR.\n", node) + raise TypeCheckFailure(f"{type(node).__name__} node did not produce IR.\n", orig_node) self.ir_node.annotation = self.expr.get("node_source_code") self.ir_node.source_pos = getpos(self.expr) diff --git a/vyper/compiler/phases.py b/vyper/compiler/phases.py index 4982e84b68..184c60c113 100644 --- a/vyper/compiler/phases.py +++ b/vyper/compiler/phases.py @@ -280,7 +280,7 @@ def generate_folded_ast( symbol_tables = set_data_positions(vyper_module, storage_layout_overrides) vyper_module_folded = copy.deepcopy(vyper_module) - vy_ast.folding.fold(vyper_module_folded) + #vy_ast.folding.fold(vyper_module_folded) return vyper_module_folded, symbol_tables diff --git a/vyper/semantics/analysis/module.py b/vyper/semantics/analysis/module.py index ffbd2265db..fa2ac73724 100644 --- a/vyper/semantics/analysis/module.py +++ b/vyper/semantics/analysis/module.py @@ -495,7 +495,7 @@ def _parse_and_fold_ast(file: FileInput) -> vy_ast.VyperNode: resolved_path=str(file.resolved_path), ) vy_ast.validation.validate_literal_nodes(ret) - vy_ast.folding.fold(ret) + #vy_ast.folding.fold(ret) return ret