[pypy-commit] pypy default: Test and fix.

arigo noreply at buildbot.pypy.org
Wed Mar 7 18:08:46 CET 2012


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r53256:d57e1fff2623
Date: 2012-03-04 23:33 +0100
http://bitbucket.org/pypy/pypy/changeset/d57e1fff2623/

Log:	Test and fix.

diff --git a/pypy/annotation/description.py b/pypy/annotation/description.py
--- a/pypy/annotation/description.py
+++ b/pypy/annotation/description.py
@@ -425,8 +425,8 @@
                 raise Exception("unsupported: class %r has mixin bases both"
                                 " before and after the regular base" % (self,))
             self.add_mixins(mixins_after, check_not_in=base)
+            self.add_mixins(mixins_before)
             self.add_sources_for_class(cls)
-            self.add_mixins(mixins_before)
 
             if base is not object:
                 self.basedesc = bookkeeper.getdesc(base)
diff --git a/pypy/annotation/test/test_annrpython.py b/pypy/annotation/test/test_annrpython.py
--- a/pypy/annotation/test/test_annrpython.py
+++ b/pypy/annotation/test/test_annrpython.py
@@ -2463,6 +2463,20 @@
         s = a.build_types(f, [])
         assert s.const == 5
 
+    def test_mixin_concrete(self):
+        class Mixin(object):
+            _mixin_ = True
+            def foo(self): return 4
+        class Concrete(Mixin):
+            def foo(self): return 5
+        def f():
+            return Concrete().foo()
+
+        assert f() == 5
+        a = self.RPythonAnnotator()
+        s = a.build_types(f, [])
+        assert s.const == 5
+
     def test_multiple_mixins_mro(self):
         # an obscure situation, but it occurred in module/micronumpy/types.py
         class A(object):


More information about the pypy-commit mailing list