Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r90405:98f4a2ce0fa5 Date: 2017-02-27 16:31 +0100 http://bitbucket.org/pypy/pypy/changeset/98f4a2ce0fa5/
Log: Test and fix (from unicode-utf8): an obscure case where we get convert_from_to() that targets SomeImpossibleValue. diff --git a/rpython/rtyper/rmodel.py b/rpython/rtyper/rmodel.py --- a/rpython/rtyper/rmodel.py +++ b/rpython/rtyper/rmodel.py @@ -359,6 +359,10 @@ def ll_str(self, nothing): raise AssertionError("unreachable code") impossible_repr = VoidRepr() +class __extend__(pairtype(Repr, VoidRepr)): + def convert_from_to((r_from, r_to), v, llops): + return inputconst(lltype.Void, None) + class SimplePointerRepr(Repr): "Convenience Repr for simple ll pointer types with no operation on them." diff --git a/rpython/rtyper/test/test_rpbc.py b/rpython/rtyper/test/test_rpbc.py --- a/rpython/rtyper/test/test_rpbc.py +++ b/rpython/rtyper/test/test_rpbc.py @@ -1746,6 +1746,29 @@ res = self.interpret(g, [1]) assert res == True + def test_convert_from_anything_to_impossible(self): + def f1(): + return 42 + def f2(): + raise ValueError + def f3(): + raise ValueError + def f(i): + if i > 5: + f = f2 + else: + f = f3 + try: + f() + except ValueError: + pass + if i > 1: + f = f2 + else: + f = f1 + return f() + self.interpret(f, [-5]) + # ____________________________________________________________ def test_hlinvoke_simple(): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit