[Cython] ComprehensionNode problem

Vitja Makarov vitja.makarov at gmail.com
Sun Aug 28 22:19:38 CEST 2011


I've started #715 ticket investigation.


Here is minimal test case:

# cython: language_level=3
def foo(target):
    return [(e for e in t) for t in target]

Crash in the ticket is related to GeneratorExpressionScope (name is
not correct, actually ScopedExprScope or NestedScope)

If you set languange_level to 2 you will see next error:
...
Compiler crash traceback from this point on:
  File "/home/vitja/work/cython-vitek-git/Cython/Compiler/ExprNodes.py",
line 7732, in __init__
    if not result_type.create_from_py_utility_code(env):
AttributeError: 'UnspecifiedType' object has no attribute
'create_from_py_utility_code'


Since ComprehensionNode.append and ComprehensionNode.loop.body is the
same generator body is created twice in MarkClosureVisitor

So the issue could be solved in two ways:

 - Write special handler for ComprehensionNode in MarkClosureVisitor
 - Remove append child attribute from ComprehensionNode (it can be
removed completely or just from children attribute list)


-- 
vitja.


More information about the cython-devel mailing list