From 7db870cf2eb8409cc71b1ae20990ddcb9be41ce9 Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Thu, 30 Dec 2010 01:21:58 +0100 Subject: [PATCH] Backed out changeset 1fa88c894da7 - currently breaks Sage build --- Cython/Compiler/Nodes.py | 9 +++------ Cython/Compiler/ParseTreeTransforms.py | 6 +++--- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/Cython/Compiler/Nodes.py b/Cython/Compiler/Nodes.py index 00db4151..0e7af2d4 100644 --- a/Cython/Compiler/Nodes.py +++ b/Cython/Compiler/Nodes.py @@ -1881,7 +1881,6 @@ class DefNode(FuncDefNode): # when the def statement is inside a Python class definition. # # assmt AssignmentNode Function construction/assignment - # py_cfunc_node PyCFunctionNode/InnerFunctionNode The PyCFunction to create and assign child_attrs = ["args", "star_arg", "starstar_arg", "body", "decorators"] @@ -1896,7 +1895,6 @@ class DefNode(FuncDefNode): entry = None acquire_gil = 0 self_in_stararg = 0 - py_cfunc_node = None def __init__(self, pos, **kwds): FuncDefNode.__init__(self, pos, **kwds) @@ -2244,17 +2242,16 @@ class DefNode(FuncDefNode): genv = genv.outer_scope if genv.is_closure_scope: - self.py_cfunc_node = ExprNodes.InnerFunctionNode( + rhs = ExprNodes.InnerFunctionNode( self.pos, pymethdef_cname = self.entry.pymethdef_cname) else: - self.py_cfunc_node = ExprNodes.PyCFunctionNode( + rhs = ExprNodes.PyCFunctionNode( self.pos, pymethdef_cname = self.entry.pymethdef_cname, binding = env.directives['binding']) if env.is_py_class_scope: if not self.is_staticmethod and not self.is_classmethod: - self.py_cfunc_node.binding = True + rhs.binding = True - rhs = self.py_cfunc_node if self.decorators: for decorator in self.decorators[::-1]: rhs = ExprNodes.SimpleCallNode( diff --git a/Cython/Compiler/ParseTreeTransforms.py b/Cython/Compiler/ParseTreeTransforms.py index 6ea7cc02..166ceec7 100644 --- a/Cython/Compiler/ParseTreeTransforms.py +++ b/Cython/Compiler/ParseTreeTransforms.py @@ -957,7 +957,7 @@ class DecoratorTransform(ScopeTrackingTransform, SkipDeclarations): def visit_DefNode(self, func_node): scope_type = self.scope_type func_node = self.visit_FuncDefNode(func_node) - if scope_type != 'cclass' or not func_node.decorators: + if scope_type is not 'cclass' or not func_node.decorators: return func_node return self._handle_decorators( func_node, func_node.name) @@ -1359,9 +1359,9 @@ class CreateClosureClasses(CythonTransform): if not from_closure and (self.path or inner_node): if not inner_node: - if not node.py_cfunc_node: + if not node.assmt: raise InternalError, "DefNode does not have assignment node" - inner_node = node.py_cfunc_node + inner_node = node.assmt.rhs inner_node.needs_self_code = False node.needs_outer_scope = False # Simple cases -- 2.26.2