From: Dag Sverre Seljebotn Date: Tue, 22 Jul 2008 13:58:23 +0000 (+0200) Subject: TreeFragment temporaries bugfix X-Git-Tag: 0.9.8.1~49^2~80 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=0defd1cfbe18bbb386d4443d13b94aba80250721;p=cython.git TreeFragment temporaries bugfix --- diff --git a/Cython/Compiler/TreeFragment.py b/Cython/Compiler/TreeFragment.py index b6e261e4..a49bdb53 100644 --- a/Cython/Compiler/TreeFragment.py +++ b/Cython/Compiler/TreeFragment.py @@ -6,6 +6,8 @@ import re from cStringIO import StringIO from Scanning import PyrexScanner, StringSourceDescriptor from Symtab import BuiltinScope, ModuleScope +import Symtab +import PyrexTypes from Visitor import VisitorTransform, temp_name_handle from Nodes import Node, StatListNode from ExprNodes import NameNode @@ -108,11 +110,16 @@ class TemplateTransform(VisitorTransform): self.substitutions = substitutions tempdict = {} for key in temps: - tempdict[key] = temp_name_handle(key) - self.temps = tempdict + tempdict[key] = temp_name_handle(key) # pending result_code refactor: Symtab.new_temp(PyrexTypes.py_object_type, key) + self.temp_key_to_entries = tempdict self.pos = pos return super(TemplateTransform, self).__call__(node) + def get_pos(self, node): + if self.pos: + return self.pos + else: + return node.pos def visit_Node(self, node): if node is None: @@ -135,11 +142,11 @@ class TemplateTransform(VisitorTransform): def visit_NameNode(self, node): - tempname = self.temps.get(node.name) - if tempname is not None: + tempentry = self.temp_key_to_entries.get(node.name) + if tempentry is not None: # Replace name with temporary - node.name = tempname - return self.visit_Node(node) + return NameNode(self.get_pos(node), name=tempentry) + # Pending result_code refactor: return NameNode(self.get_pos(node), entry=tempentry) else: return self.try_substitution(node, node.name)