Commit 37d026b9 authored by Guido van Rossum's avatar Guido van Rossum

(Merge into trunk.)

Fix for SF bug #492345.  (I could've sworn I checked this in, but
apparently I didn't!)

This code:

    class Classic:
        pass

    class New(Classic):
        __metaclass__ = type

attempts to create a new-style class with only classic bases -- but it
doesn't work right.  Attempts to fix it so it works caused problems
elsewhere, so I'm now raising a TypeError in this case.
parent feff8239
......@@ -922,6 +922,16 @@ def multi():
vereq(m.m3method(), "M3 a")
vereq(m.all_method(), "M3 b")
class Classic:
pass
try:
class New(Classic):
__metaclass__ = type
except TypeError:
pass
else:
raise TestFailed, "new class with only classic bases - shouldn't be"
def diamond():
if verbose: print "Testing multiple inheritance special cases..."
class A(object):
......
......@@ -757,7 +757,9 @@ best_base(PyObject *bases)
return NULL;
}
}
assert(base != NULL);
if (base == NULL)
PyErr_SetString(PyExc_TypeError,
"a new-style class can't have only classic bases");
return base;
}
......
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