2011/9/2 Robert Bradshaw
> On Sun, Aug 28, 2011 at 1:19 PM, Vitja Makarov
>> 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
>> 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)
> +1 to the latter option (which I see is what you did, thanks).
I've also found one interesting bug in genexpr implementation
In CPython iterator is evaluated before genexpr is created.
g = (i for i in Foo())
will print in cpython:
and in cython:
Don't know how to deal with it now.