Commit 8282f3f8 authored by Stefan Behnel's avatar Stefan Behnel Committed by GitHub

Always bind Cython functions (#3106)

* Special-case setting __new__ in class

* Always bind Cython functions
parents 352c4191 1bb26b96
......@@ -552,21 +552,6 @@ static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit,
static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type)
{
__pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) {
Py_INCREF(func);
return func;
}
if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) {
if (type == NULL)
type = (PyObject *)(Py_TYPE(obj));
return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type)));
}
if (obj == Py_None)
obj = NULL;
return __Pyx_PyMethod_New(func, obj, type);
}
......
......@@ -376,6 +376,18 @@ class TestUnboundMethod:
def meth(self): pass
class TestStaticmethod(object):
"""
>>> x = TestStaticmethod()
>>> x.staticmeth(42)
42
>>> x.staticmeth.__get__(42)()
42
"""
@staticmethod
def staticmeth(arg): return arg
cdef class TestOptimisedBuiltinMethod:
"""
>>> obj = TestOptimisedBuiltinMethod()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment