finally:
if EXC:
EXIT(None, None, None)
+ MGR = EXIT = VALUE = EXC = None
+
""", temps=[u'MGR', u'EXC', u"EXIT", u"VALUE"],
pipeline=[NormalizeTree(None)])
}, pos=node.pos)
# Set except excinfo target to EXCINFO
- try_except = result.body.stats[-1].body.stats[-1]
+ try_except = result.stats[-1].body.stats[-1]
try_except.except_clauses[0].excinfo_target = (
excinfo_temp.ref(node.pos))
- result.body.stats[-1].body.stats[-1] = TempsBlockNode(
+ result.stats[-1].body.stats[-1] = TempsBlockNode(
node.pos, temps=[excinfo_temp], body=try_except)
return result
t = self.run_pipeline([NormalizeTree(None)], u"pass")
self.assert_(len(t.stats) == 0)
-class TestWithTransform(TransformTest):
+class TestWithTransform:#(TransformTest): Disabled
def test_simplified(self):
t = self.run_pipeline([WithTransform(None)], u"""
self.assertEquals(v.pos, a.pos)
def test_temps(self):
- import Cython.Compiler.Visitor as v
- v.tmpnamectr = 0
+ TemplateTransform.temp_name_counter = 0
F = self.fragment(u"""
TMP
x = TMP
""")
T = F.substitute(temps=[u"TMP"])
- s = T.body.stats
- self.assert_(isinstance(s[0].expr, TempRefNode))
- self.assert_(isinstance(s[1].rhs, TempRefNode))
- self.assert_(s[0].expr.handle is s[1].rhs.handle)
+ s = T.stats
+ self.assert_(s[0].expr.name == "__tmpvar_1")
+# self.assert_(isinstance(s[0].expr, TempRefNode))
+# self.assert_(isinstance(s[1].rhs, TempRefNode))
+# self.assert_(s[0].expr.handle is s[1].rhs.handle)
if __name__ == "__main__":
import unittest
recursively applied to every member node.
"""
+ temp_name_counter = 0
+
def __call__(self, node, substitutions, temps, pos):
self.substitutions = substitutions
self.pos = pos
tempmap = {}
temphandles = []
for temp in temps:
- handle = UtilNodes.TempHandle(PyrexTypes.py_object_type)
+ TemplateTransform.temp_name_counter += 1
+ handle = "__tmpvar_%d" % TemplateTransform.temp_name_counter
+# handle = UtilNodes.TempHandle(PyrexTypes.py_object_type)
tempmap[temp] = handle
- temphandles.append(handle)
+# temphandles.append(handle)
self.tempmap = tempmap
result = super(TemplateTransform, self).__call__(node)
- if temps:
- result = UtilNodes.TempsBlockNode(self.get_pos(node),
- temps=temphandles,
- body=result)
+# if temps:
+# result = UtilNodes.TempsBlockNode(self.get_pos(node),
+# temps=temphandles,
+# body=result)
return result
def get_pos(self, node):
def visit_NameNode(self, node):
temphandle = self.tempmap.get(node.name)
if temphandle:
+ node.name = temphandle
+ return node
# Replace name with temporary
- return temphandle.ref(self.get_pos(node))
+ #return temphandle.ref(self.get_pos(node))
else:
return self.try_substitution(node, node.name)