Author: Ronan Lamy <[email protected]>
Branch:
Changeset: r86825:82980a978280
Date: 2016-09-01 23:02 +0100
http://bitbucket.org/pypy/pypy/changeset/82980a978280/
Log: Fix translation and add a warning in annmodel.unionof
diff --git a/rpython/annotator/annrpython.py b/rpython/annotator/annrpython.py
--- a/rpython/annotator/annrpython.py
+++ b/rpython/annotator/annrpython.py
@@ -165,7 +165,9 @@
# graph -- it's already low-level operations!
for a, s_newarg in zip(block.inputargs, cells):
s_oldarg = a.annotation
- if not s_oldarg.contains(s_newarg):
+ # XXX: Should use s_oldarg.contains(s_newarg) but that breaks
+ # PyPy translation
+ if annmodel.unionof(s_oldarg, s_newarg) != s_oldarg:
raise annmodel.AnnotatorError(
"Late-stage annotation is not allowed to modify the "
"existing annotation for variable %s: %s" %
diff --git a/rpython/annotator/model.py b/rpython/annotator/model.py
--- a/rpython/annotator/model.py
+++ b/rpython/annotator/model.py
@@ -750,6 +750,7 @@
s1 = pair(s1, s2).union()
else:
# this is just a performance shortcut
+ # XXX: This is a lie! Grep for no_side_effects_in_union and weep.
if s1 != s2:
s1 = pair(s1, s2).union()
return s1
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit