Author: Ronan Lamy <[email protected]>
Branch: anntype2
Changeset: r81000:6671b4b7d9b6
Date: 2015-11-27 03:56 +0000
http://bitbucket.org/pypy/pypy/changeset/6671b4b7d9b6/
Log: Clean up and add another test
diff --git a/rpython/annotator/test/test_model.py
b/rpython/annotator/test/test_model.py
--- a/rpython/annotator/test/test_model.py
+++ b/rpython/annotator/test/test_model.py
@@ -163,26 +163,36 @@
else:
return s_a.contains(s_b)
-def test_generalize_getitem(annotator):
+def annotate_op(ann, hlop, args_s):
+ for v_arg, s_arg in zip(hlop.args, args_s):
+ ann.setbinding(v_arg, s_arg)
+ with ann.bookkeeper.at_position(None):
+ try:
+ ann.consider_op(hlop)
+ except BlockedInference:
+ # BlockedInference only stops annotation along the normal path,
+ # but not along the exceptional one.
+ pass
+ return hlop.result.annotation, ann.get_exception(hlop)
+
+def test_generalize_getitem_dict(annotator):
bk = annotator.bookkeeper
- v_dict, v_key = Variable(), Variable()
- v_key.annotation = SomeInteger()
- v_dict.annotation = s_None
- hlop = op.getitem(v_dict, v_key)
- try:
- annotator.consider_op(hlop)
- except BlockedInference:
- # BlockedInference only stops annotation along the normal path,
- # but not along the exceptional one.
- pass
- v_result = hlop.result
- s_result = v_result.annotation
- s_result_exc = annotator.get_exception(hlop)
+ hlop = op.getitem(Variable(), Variable())
+ s_int = SomeInteger()
with bk.at_position(None):
- annotator.setbinding(v_dict, bk.newdict())
- try:
- annotator.consider_op(hlop)
- except BlockedInference:
- pass
- assert contains_s(v_result.annotation, s_result)
- assert contains_s(annotator.get_exception(hlop), s_result_exc)
+ s_empty_dict = bk.newdict()
+ s_value, s_exc = annotate_op(annotator, hlop, [s_None, s_int])
+ s_value2, s_exc2 = annotate_op(annotator, hlop, [s_empty_dict, s_int])
+ assert contains_s(s_value2, s_value)
+ assert contains_s(s_exc2, s_exc)
+
+def test_generalize_getitem_list(annotator):
+ bk = annotator.bookkeeper
+ hlop = op.getitem(Variable(), Variable())
+ s_int = SomeInteger()
+ with bk.at_position(None):
+ s_empty_list = bk.newlist()
+ s_value, s_exc = annotate_op(annotator, hlop, [s_None, s_int])
+ s_value2, s_exc2 = annotate_op(annotator, hlop, [s_empty_list, s_int])
+ assert contains_s(s_value2, s_value)
+ assert contains_s(s_exc2, s_exc)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit