Commit 1a431ad3 authored by Guido van Rossum's avatar Guido van Rossum

Temporary stop-gap fix for dynamic classes, so they pass the test.

XXX This is not sufficient: if a dynamic class has no __repr__ method
(for instance), but later one is added, that doesn't add a tp_repr
slot, so repr() doesn't call the __repr__ method.  To make this work,
I'll have to add default implementations of several slots to 'object'.

XXX Also, dynamic types currently only inherit slots from their
dominant base.
parent d3548c9d
......@@ -1244,7 +1244,12 @@ PyType_Ready(PyTypeObject *type)
inherit_special(type, type->tp_base);
/* Initialize tp_dict properly */
if (!PyType_HasFeature(type, Py_TPFLAGS_DYNAMICTYPE)) {
if (PyType_HasFeature(type, Py_TPFLAGS_DYNAMICTYPE)) {
/* XXX This is not enough -- see checkin msg 2.30. */
if (type->tp_base != NULL)
inherit_slots(type, type->tp_base);
}
else {
/* For a static type, tp_dict is the consolidation
of the tp_defined of its bases in MRO. */
Py_DECREF(type->tp_dict);
......
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