Vitja Makarov, 23.10.2011 08:39:
This simple code crashes compiler:

lambda i=1: i

"""
   File "/home/vitja/work/cython-vitek-git/Cython/Compiler/Parsing.py",
line 122, in p_test
     return p_lambdef(s)
   File "/home/vitja/work/cython-vitek-git/Cython/Compiler/Parsing.py",
line 102, in p_lambdef
     s, terminator=':', annotated=False)
   File "/home/vitja/work/cython-vitek-git/Cython/Compiler/Parsing.py",
line 2741, in p_varargslist
     annotated = annotated)
   File "/home/vitja/work/cython-vitek-git/Cython/Compiler/Parsing.py",
line 2388, in p_c_arg_list
     annotated = annotated))
   File "/home/vitja/work/cython-vitek-git/Cython/Compiler/Parsing.py",
line 2435, in p_c_arg_decl
     print s.level
AttributeError: 'PyrexScanner' object has no attribute 'level'
"""

I'm not sure what's the best way to fix this.

I don't see a "print" statement anywhere, but it seems that the "level" attribute is really missing from the compiled scanner.

This should do the trick:

diff -r 886697a10602 Cython/Compiler/Scanning.pxd
--- a/Cython/Compiler/Scanning.pxd      Sat Oct 22 19:43:45 2011 +0100
+++ b/Cython/Compiler/Scanning.pxd      Sun Oct 23 10:11:10 2011 +0200
@@ -28,6 +28,7 @@
     cdef public int bracket_nesting_level
     cdef public sy
     cdef public systring
+    cdef public level

     cdef long current_level(self)
     #cpdef commentline(self, text)

I didn't commit it, just go ahead and do so if it works for you.

Stefan
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to