mirror of https://github.com/python/cpython
I had the inheritance cycle stuff backwards. Oops!
This commit is contained in:
parent
e16e01fac6
commit
caf17be1b7
|
@ -3452,6 +3452,7 @@ def mutable_bases():
|
|||
pass
|
||||
d = D()
|
||||
e = E()
|
||||
D.__bases__ = (C,)
|
||||
D.__bases__ = (C2,)
|
||||
vereq(d.meth(), 1)
|
||||
vereq(e.meth(), 1)
|
||||
|
@ -3492,6 +3493,13 @@ def mutable_bases():
|
|||
# actually, we'll have crashed by here...
|
||||
raise TestFailed, "shouldn't be able to create inheritance cycles"
|
||||
|
||||
try:
|
||||
D.__bases__ = (E,)
|
||||
except TypeError:
|
||||
pass
|
||||
else:
|
||||
raise TestFailed, "shouldn't be able to create inheritance cycles"
|
||||
|
||||
# let's throw a classic class into the mix:
|
||||
class Classic:
|
||||
def meth2(self):
|
||||
|
|
|
@ -208,10 +208,12 @@ type_set_bases(PyTypeObject *type, PyObject *value, void *context)
|
|||
type->tp_name, ob->ob_type->tp_name);
|
||||
return -1;
|
||||
}
|
||||
if (PyType_IsSubtype(type, (PyTypeObject*)ob)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"a __bases__ item causes an inheritance cycle");
|
||||
return -1;
|
||||
if (PyType_Check(ob)) {
|
||||
if (PyType_IsSubtype((PyTypeObject*)ob, type)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"a __bases__ item causes an inheritance cycle");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue