[Cython] Fused types don't work with cdef classes?

Robert Bradshaw robertwb at gmail.com
Wed Feb 13 09:07:45 CET 2013


Yes, this is a bug; there is a bad interaction between fused types and
special methods.

I created http://trac.cython.org/cython_trac/ticket/802

On Fri, Feb 8, 2013 at 8:54 AM, Dave Hirschfeld
<dave.hirschfeld at gmail.com> wrote:
> Is this a bug?
> The following code fails to compile on windows VS2012, 32bit Python2.7 with a
> recent 0.19-pre github cython:
>
>
> cimport cython
>
> ctypedef fused char_or_float:
>     cython.char
>     cython.float
>
>
> cdef class FusedExample:
>
>     def __init__(self, char_or_float x):
>         pass
> #
>
> Resulting in the following exception:
>
> C:\temp>C:\dev\bin\Python27\python.exe setup.py build_ext --inplace --
> compiler=msvc
> Compiling example.pyx because it changed.
> Cythonizing example.pyx
> running build_ext
> building 'example' extension
> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\cl.exe
>     /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -I.
>     -IC:\dev\code\Gazprom.MT\pricing\gazprom\mt\pricing
>     -IC:\dev\bin\Python27\lib\site-packages\numpy\core\include
>     "-IC:\dev\lib\Intel\Composer XE 2013\mkl\include"
>     -IC:\dev\bin\Python27\include
>     -IC:\dev\bin\Python27\PC
>     /Tp example.cpp
>     /Fobuild\temp.win32-2.7\Release\example.obj
>     /EHsc /openmp
>     example.cpp
> example.cpp(1630) : error C2062: type 'int' unexpected
> example.cpp(1630) : error C2143: syntax error : missing ';' before '{'
> example.cpp(1630) : error C2447: '{' : missing function header (old-style formal
> list?)
> example.cpp(1687) : error C2062: type 'int' unexpected
> example.cpp(1687) : error C2143: syntax error : missing ';' before '{'
> example.cpp(1687) : error C2447: '{' : missing function header (old-style formal
> list?)
> example.cpp(3869) : error C2440: 'initializing' : cannot convert
>         from 'PyObject *(__cdecl *)(PyObject *,PyObject *,PyObject *)' to
> 'initproc'
>         None of the functions with this name in scope match the target type
> error: command '"C:\Program Files (x86)\Microsoft Visual Studio
> 11.0\VC\BIN\cl.exe"'
> failed with exit status 2
>
>
> If the cdef is removed from the class it compiles fine. Are fused types supposed
> to work with cdef classes?
>
>
> Thanks,
> Dave
>
> _______________________________________________
> cython-devel mailing list
> cython-devel at python.org
> http://mail.python.org/mailman/listinfo/cython-devel


More information about the cython-devel mailing list