Vitja Makarov, 06.12.2010 08:33:
> 2010/12/6 Stefan Behnel:
>> Vitja Makarov, 06.12.2010 07:05:
>>> 2010/12/6 Stefan Behnel:
>>>> Vitja Makarov, 05.12.2010 08:41:
>>>>>
>>>>> I've updated patch.
>>>>>
>>>>> I removed pretty_name, bad idea should use name instead in
>>>>> pydeclare_lambda.
>>>>> `is_lambda` is now called `is_anonymous`, that means that entry itself
>>>>> doesn't know how it will be named inside scope, so its anonymous (both
>>>>> lambda and pyfunctions)
>>>>
>>>> That's ok and the patch looks good to me now.
>>>>
>>>> However, it lacks error tests and the modified code actually fails to 
>>>> detect
>>>> redefinitions of cdef functions as Python functions and vice versa, which 
>>>> is
>>>> not supported (and IMHO doesn't make sense either). Similarly, 
>>>> redefinitions
>>>> in cdef classes aren't currently supported but are not detected either.
>>>>
>>>> I've attached a patch that currently breaks cpdef functions, but that
>>>> handles (and tests) at least some of the error cases. I'm not sure what to
>>>> do to fix the cpdef functions, though.
>>>
>>> I can't say it breaks cpdefs, this is "classic" cython behavior.
>>
>> Did you try running the test suite with it?
>
> I mean that cython wo redefinition patches will copile code like this
> but gcc will not:
>
> cpdef foo(): pass
> cpdef foo(): pass
>
> xxx.c:444: error: redefinition of ‘__pyx_f_3xxx_foo’

Right. That needs fixing, but I agree that it's not related to your patch.


>>> May by we need some flag like is_hardcoded?
>>
>> Which would mean what exactly?
>
> Means that symbol is defined in method table, bad name for flag.
>
> So as I understand when function is cpdef it first declare cfunction,
> then pycfunction.
>
> So entry is always of type CFunction so maybe this flag should be
> called has_pyfunction? and error message should be raised in
> _declare_pyfunction() if has_pyfunction flag is set?

Something like that. There should be a way to detect a cpdef function and 
to prevent overriding cdef functions otherwise.

Stefan
_______________________________________________
Cython-dev mailing list
Cython-dev@codespeak.net
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to