Hi!

I'm now trying to implement nested classes and found some errors in code.

genv = env
while genv.is_py_class_scope or genv.is_c_class_scope:
    genv = env.outer_scope

Can cause infinty loop. Small patch is attached.

vitja.
diff -r 8ba633d4aea7 Cython/Compiler/Nodes.py
--- a/Cython/Compiler/Nodes.py	Mon Nov 15 12:48:15 2010 +0100
+++ b/Cython/Compiler/Nodes.py	Tue Nov 16 17:35:14 2010 +0300
@@ -1177,7 +1177,7 @@
     def create_local_scope(self, env):
         genv = env
         while genv.is_py_class_scope or genv.is_c_class_scope:
-            genv = env.outer_scope
+            genv = genv.outer_scope
         if self.needs_closure:
             lenv = ClosureScope(name=self.entry.name,
                                 outer_scope = genv,
@@ -3002,8 +3002,8 @@
         
     def create_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 = genv.outer_scope
         cenv = self.scope = PyClassScope(name = self.name, outer_scope = genv)
         return cenv
     
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to