vereq(ff.__get__(0, int)(42), (int, 42))
vereq(ff.__get__(0)(42), (int, 42))
+ # Test super() with classmethods (SF bug 535444)
+ veris(C.goo.im_self, C)
+ veris(D.goo.im_self, D)
+ veris(super(D,D).goo.im_self, D)
+ veris(super(D,d).goo.im_self, D)
+ vereq(super(D,D).goo(), (D,))
+ vereq(super(D,d).goo(), (D,))
+
def classmethods_in_c():
if verbose: print "Testing C-based class methods..."
import xxsubtype as spam
if (su->obj != NULL) {
PyObject *mro, *res, *tmp, *dict;
+ PyTypeObject *starttype;
descrgetfunc f;
int i, n;
- mro = su->obj->ob_type->tp_mro;
+ starttype = su->obj->ob_type;
+ mro = starttype->tp_mro;
+
if (mro == NULL)
n = 0;
else {
break;
}
if (i >= n && PyType_Check(su->obj)) {
- mro = ((PyTypeObject *)(su->obj))->tp_mro;
+ starttype = (PyTypeObject *)(su->obj);
+ mro = starttype->tp_mro;
if (mro == NULL)
n = 0;
else {
Py_INCREF(res);
f = res->ob_type->tp_descr_get;
if (f != NULL) {
- tmp = f(res, su->obj, res);
+ tmp = f(res, su->obj, (PyObject *)starttype);
Py_DECREF(res);
res = tmp;
}