2010/12/6 Stefan Behnel <[email protected]>:
> 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’

>> 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?


-- 
vitja.
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to