(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.
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index 1ec7c19..ea987f2 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -922,6 +922,16 @@
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):