Author: Ronan Lamy <ronan.l...@gmail.com>
Branch: reflowing
Changeset: r88646:3c5e062cf847
Date: 2016-11-24 18:18 +0000
http://bitbucket.org/pypy/pypy/changeset/3c5e062cf847/

Log:    Reinstate the annotation hack that was removed in db07794f9b14

diff --git a/rpython/annotator/bookkeeper.py b/rpython/annotator/bookkeeper.py
--- a/rpython/annotator/bookkeeper.py
+++ b/rpython/annotator/bookkeeper.py
@@ -510,7 +510,13 @@
         results = []
         for desc in pbc.descriptions:
             results.append(desc.pycall(whence, args, v_result, op))
-        s_result = unionof(*results)
+        # According to the fundamental annotation invariant, we should have
+        # unionof(*results).contains(v_result.annotation), but some
+        # specializers (e.g. argtype) don't respect that, so we make sure to
+        # return a generalisation of v_result.annotation.
+        s_result = v_result.annotation if v_result and v_result.annotation 
else s_ImpossibleValue
+        for result in results:
+            s_result = unionof(s_result, result)
         return s_result
 
     def emulate_pbc_call(self, unique_key, pbc, args_s, replace=[], 
callback=None):
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to