[Cython] cython-devel: array declaration problems with current trunk
Dag Sverre Seljebotn
dagss at student.matnat.uio.no
Mon Aug 4 20:14:40 CEST 2008
Robert Bradshaw wrote:
> On Mon, 4 Aug 2008, Lisandro Dalcin wrote:
>
>> Current cython-devel trunk broke my code, for example, try to run
>> cython on this snippet:
>>
>> cdef extern from *:
>>
>> cdef void foo(int[])
>>
>> ctypedef int MyInt
>> cdef void foo(MyInt[])
>>
>> struct MyStruct:
>> pass
>> cdef void bar(MyStruct[])
>>
>> ctypedef MyStruct* MyStructP
>> cdef void baz(MyStructP[])
>>
>>
>> I get error messages like (just the first shown):
>>
>> Error converting Pyrex file to C:
>> ------------------------------------------------------------
>> ...
>> cdef extern from *:
>>
>> cdef void foo(int[])
>>
>> ctypedef int MyInt
>> cdef void foo(MyInt[])
>> ^
>> ------------------------------------------------------------
>>
>> /u/dalcinl/Devel/Cython/sandbox/arrdecl.pyx:6:23: Buffer types only
>> allowed as function local variables
>>
>
> Sorry, I didn't test any code like that. I can guess where this got
> introduced. Dag, any comments?
You guessed right :-)
I fixed this earlier, but only for native types (note that the int[]
works ok); which obviously came from a wrong assumption. I'll find a way
to fix it, check in the test case etc. etc.
However, there is of course the deeper question of overloading syntax
like this. I don't think the [] syntax buys anything above a regular
pointer notation? If so, removing support for int[]-notation altogether
would get rid of the issue and lead to a cleaner grammar. What do people
think? (Three choices: Good, bad, good but backwards compatability
overrides it.)
(Anyway that can only happen after a round of deprecation warnings etc.
so I'll definitely fix it.)
--
Dag Sverre
More information about the Cython-dev
mailing list