summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2001-08-12 03:43:35 (GMT)
committerGuido van Rossum <guido@python.org>2001-08-12 03:43:35 (GMT)
commit8de8680d071df3bddcb5d56a06d11697a32a922e (patch)
tree3031808e4a4c939b423871b8d0b6c38b786b3525 /Objects
parent9d4fe4298ece1acf3401c6b4849d2cb56238d710 (diff)
downloadcpython-8de8680d071df3bddcb5d56a06d11697a32a922e.zip
cpython-8de8680d071df3bddcb5d56a06d11697a32a922e.tar.gz
cpython-8de8680d071df3bddcb5d56a06d11697a32a922e.tar.bz2
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.
Diffstat (limited to 'Objects')
-rw-r--r--Objects/typeobject.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 37d9491..098d591 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -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);