Kaydet (Commit) 3bbc0eea authored tarafından Guido van Rossum's avatar Guido van Rossum

Tighten the tests for assignment to __bases__: disallow empty tuple.

üst 3d87e3cd
......@@ -3485,6 +3485,14 @@ def test_mutable_bases():
else:
raise TestFailed, "shouldn't be able to delete .__bases__"
try:
D.__bases__ = ()
except TypeError, msg:
if str(msg) == "a new-style class can't have only classic bases":
raise TestFailed, "wrong error message for .__bases__ = ()"
else:
raise TestFailed, "shouldn't be able to set .__bases__ to ()"
try:
D.__bases__ = (D,)
except TypeError:
......
......@@ -211,6 +211,12 @@ type_set_bases(PyTypeObject *type, PyObject *value, void *context)
type->tp_name, value->ob_type->tp_name);
return -1;
}
if (PyTuple_GET_SIZE(value) == 0) {
PyErr_Format(PyExc_TypeError,
"can only assign non-empty tuple to %s.__bases__, not ()",
type->tp_name);
return -1;
}
for (i = 0; i < PyTuple_GET_SIZE(value); i++) {
ob = PyTuple_GET_ITEM(value, i);
if (!PyClass_Check(ob) && !PyType_Check(ob)) {
......
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