Fix parsing for allowing def statements only where legal.
authorCraig Citro <craigcitro@gmail.com>
Thu, 7 Jan 2010 18:59:59 +0000 (10:59 -0800)
committerCraig Citro <craigcitro@gmail.com>
Thu, 7 Jan 2010 18:59:59 +0000 (10:59 -0800)
Cython/Compiler/Parsing.py

index ec346a23a674f40355fd1edb1d929cc7756e67f6..6db439c9bb8288789bb48ea9cc253eb3853e8fb9 100644 (file)
@@ -1658,8 +1658,10 @@ def p_statement(s, ctx, first_statement = 0):
         if ctx.api:
             error(s.pos, "'api' not allowed with this statement")
         elif s.sy == 'def':
-            #if ctx.level not in ('module', 'class', 'c_class', 'c_class_pxd', 'property', 'function'):
-            #    s.error('def statement not allowed here')
+            # def statements aren't allowed in pxd files, except
+            # as part of a cdef class
+            if ('pxd' in ctx.level) and (ctx.level != 'c_class_pxd'):
+                s.error('def statement not allowed here')
             s.level = ctx.level
             return p_def_statement(s, decorators)
         elif s.sy == 'class':