2011/10/23 Stefan Behnel <stefan...@behnel.de>: > 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. >
Yes, I've added print for debug purpose actually there is: if 'pxd' in s.level: > 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. > Hmm, that will help for compiled cython. I'm running uncompiled. It seems that when lambda is spotted level is not set yet. Btw it works fine if def node precedes lamda: def foo(): pass lambda i=1: i -- vitja. _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel