merged in latest cython-devel
authorStefan Behnel <scoder@users.berlios.de>
Sat, 24 Oct 2009 13:55:29 +0000 (15:55 +0200)
committerStefan Behnel <scoder@users.berlios.de>
Sat, 24 Oct 2009 13:55:29 +0000 (15:55 +0200)
1  2 
Cython/Compiler/ExprNodes.py
Cython/Compiler/Main.py
Cython/Compiler/ModuleNode.py
Cython/Compiler/Nodes.py
Cython/Compiler/Optimize.py
Cython/Compiler/ParseTreeTransforms.py
Cython/Compiler/Parsing.py
Cython/Compiler/Symtab.py

Simple merge
Simple merge
Simple merge
index e9206ca8faa85cbae346027ae65f1cf93f8b6a6e,8b37eb860ca278de894e7572057d113196f30558..8990f18697977fb125dc6f8ceacd8b5e5e106367
@@@ -1013,12 -1019,12 +1019,12 @@@ class FuncDefNode(StatNode, BlockNode)
          
      def create_local_scope(self, env):
          genv = env
-         while env.is_py_class_scope or env.is_c_class_scope:
-             env = env.outer_scope
+         while genv.is_py_class_scope or genv.is_c_class_scope:
+             genv = env.outer_scope
          if self.needs_closure:
 -            lenv = GeneratorLocalScope(name = self.entry.name, outer_scope = genv, parent_scope = env)
 +            lenv = ClosureScope(name = self.entry.name, scope_name = self.entry.cname, outer_scope = genv)
          else:
-             lenv = LocalScope(name = self.entry.name, outer_scope = genv)
+             lenv = LocalScope(name = self.entry.name, outer_scope = genv, parent_scope = env)
          lenv.return_type = self.return_type
          type = self.entry.type
          if type.is_cfunction:
Simple merge
index 93c8574e954e1329dc418b9348cfe6516d8f6a8d,34883967aa9064adf7a987e8505b68702cd31c3d..204bcec804465176f494d5b0ee495dffc7e87858
@@@ -718,12 -698,13 +718,18 @@@ property NAME
          self.visitchildren(node)
          self.seen_vars_stack.pop()
          return node
 -    
 +
 +    def visit_LambdaNode(self, node):
 +        node.analyse_declarations(self.env_stack[-1])
 +        self.visitchildren(node)
 +        return node
 +
+     def visit_ClassDefNode(self, node):
+         self.env_stack.append(node.scope)
+         self.visitchildren(node)
+         self.env_stack.pop()
+         return node
+         
      def visit_FuncDefNode(self, node):
          self.seen_vars_stack.append(set())
          lenv = node.create_local_scope(self.env_stack[-1])
Simple merge
index 9e30e6c163312fd2846e8c170a95e76b6b0be4c1,5bc9c3c5376cd66ee09752ccd0aed9e94c9265b9..d744b11b554df43f48bd2e1e325c52d2dcaf6ece
@@@ -1077,10 -1064,12 +1077,12 @@@ class ModuleScope(Scope)
          from TypeInference import PyObjectTypeInferer
          PyObjectTypeInferer().infer_types(self)
          
 -class LocalScope(Scope):    
 +class LocalScope(Scope):
  
-     def __init__(self, name, outer_scope):
-         Scope.__init__(self, name, outer_scope, outer_scope)
+     def __init__(self, name, outer_scope, parent_scope = None):
+         if parent_scope is None:
+             parent_scope = outer_scope
+         Scope.__init__(self, name, outer_scope, parent_scope)
      
      def mangle(self, prefix, name):
          return prefix + name