Commit caf17be1 authored by Michael W. Hudson's avatar Michael W. Hudson

I had the inheritance cycle stuff backwards. Oops!

parent e16e01fa
......@@ -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;
}
}
}
......
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