Yep, looks like a bug to me.

On Mon, Nov 15, 2010 at 9:04 AM, Darren Dale <[email protected]> wrote:
> I can cythonize this code:
>
> def test():
>    sentinal = '3'
>    with open('foo.txt', 'w') as f:
>        sentinal == '1' or sentinal == '2'
>
> or this:
>
> def test():
>    sentinal = '3'
>    with open('foo.txt', 'w') as f:
>        pass
>    sentinal in ('1', '2')
>
> but not this:
>
> def test():
>    sentinal = '3'
>    with open('foo.txt', 'w') as f:
>        sentinal in ('1', '2')
>
>
> $ cython test_open.pyx
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> def test():
>    sentinal = '3'
>    with open('foo.txt', 'w') as f:
>   ^
> ------------------------------------------------------------
>
> /Users/darren/temp/test/test_open.pyx:3:4: Compiler crash in
> AnalyseExpressionsTransform
>
> ModuleNode.body = StatListNode(test_open.pyx:1:0)
> StatListNode.stats[0] = DefNode(test_open.pyx:1:0,
>    modifiers = [...]/0,
>    name = 'test',
>    reqd_kw_flags_cname = '0')
> File 'Nodes.py', line 343, in analyse_expressions:
> StatListNode(test_open.pyx:2:4)
> File 'Nodes.py', line 343, in analyse_expressions:
> StatListNode(test_open.pyx:3:4)
> File 'Nodes.py', line 4914, in analyse_expressions:
> TryFinallyStatNode(test_open.pyx:3:4,
>    preserve_exception = 1)
> File 'Nodes.py', line 343, in analyse_expressions:
> StatListNode(test_open.pyx:3:4)
> File 'Nodes.py', line 4608, in analyse_expressions:
> TryExceptStatNode(test_open.pyx:3:4)
> File 'Nodes.py', line 343, in analyse_expressions:
> StatListNode(test_open.pyx:3:4)
> File 'Nodes.py', line 343, in analyse_expressions:
> StatListNode(test_open.pyx:3:4)
> File 'Nodes.py', line 3243, in analyse_expressions:
> ExprStatNode(test_open.pyx:3:4)
> File 'ExprNodes.py', line 308, in analyse_expressions:
> EvalWithTempExprNode(test_open.pyx:3:4,
>    use_managed_ref = True)
> File 'UtilNodes.py', line 239, in analyse_types:
> EvalWithTempExprNode(test_open.pyx:3:4,
>    use_managed_ref = True)
> File 'ExprNodes.py', line 5664, in analyse_types:
> BoolBinopNode(test_open.pyx:3:4,
>    operator = 'or',
>    use_managed_ref = True)
> File 'ExprNodes.py', line 4892, in analyse_types:
> TypecastNode(test_open.pyx:3:4,
>    use_managed_ref = True)
> File 'ExprNodes.py', line 6138, in analyse_types:
> PrimaryCmpNode(test_open.pyx:3:4,
>    operator = '==',
>    use_managed_ref = True)
> File 'ExprNodes.py', line 5840, in is_cpp_comparison:
> PrimaryCmpNode(test_open.pyx:3:4,
>    operator = '==',
>    use_managed_ref = True)
>
> Compiler crash traceback from this point on:
>  File 
> "/Users/darren/.local/lib/python3.1/site-packages/Cython/Compiler/ExprNodes.py",
> line 5841, in is_cpp_comparison
>    return self.operand1.type.is_cpp_class or self.operand2.type.is_cpp_class
> AttributeError: 'NoneType' object has no attribute 'is_cpp_class'
> _______________________________________________
> Cython-dev mailing list
> [email protected]
> http://codespeak.net/mailman/listinfo/cython-dev
>
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to