}, pos=node.pos)
# Set except excinfo target to EXCINFO
- try_except = result.stats[-1].body.stats[-1]
+ try_except = result.body.stats[-1].body.stats[-1]
try_except.except_clauses[0].excinfo_target = exc_info
return result
temphandles = []
for temp in temps:
TemplateTransform.temp_name_counter += 1
- handle = "__tmpvar_%d" % TemplateTransform.temp_name_counter
-# handle = UtilNodes.TempHandle(PyrexTypes.py_object_type)
+ 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:
- return NameNode(pos=node.pos, name=temphandle)
# 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)
compile.cpp_operators
cpp_templated_ctypedef
cpp_structs
-with_statement_module_level_T536
function_as_method_T494
closure_inside_cdef_T554
pure_mode_cmethod_inheritance_T583
__doc__ = """
>>> inner_result
['ENTER']
->>> result
+>>> result # doctest: +ELLIPSIS
+['ENTER', "EXIT (<type 'exceptions.ValueError'>, ValueError('TEST',), <traceback object at ...)"]
+
+>>> inner_result_no_exc
+['ENTER']
+>>> result_no_exc
['ENTER', 'EXIT (None, None, None)']
"""
-result = []
-
class ContextManager(object):
+ def __init__(self, result):
+ self.result = result
def __enter__(self):
- result.append("ENTER")
+ self.result.append("ENTER")
def __exit__(self, *values):
- result.append("EXIT %r" % (values,))
+ self.result.append("EXIT %r" % (values,))
+ return True
+
+result_no_exc = []
+
+with ContextManager(result_no_exc) as c:
+ inner_result_no_exc = result_no_exc[:]
+
+result = []
-with ContextManager() as c:
+with ContextManager(result) as c:
inner_result = result[:]
+ raise ValueError('TEST')
+