Author: Greg Price <pr...@mit.edu> Branch: signatures Changeset: r59312:0e521e989742 Date: 2012-12-02 17:04 -0800 http://bitbucket.org/pypy/pypy/changeset/0e521e989742/
Log: Basic support for list types in signatures diff --git a/pypy/annotation/types.py b/pypy/annotation/types.py --- a/pypy/annotation/types.py +++ b/pypy/annotation/types.py @@ -1,4 +1,5 @@ from pypy.annotation import model +from pypy.annotation.listdef import ListDef def int(): @@ -6,3 +7,7 @@ def str(): return model.SomeString() + +def list(element): + listdef = ListDef(None, element, mutated=True, resized=True) + return model.SomeList(listdef) diff --git a/pypy/rlib/test/test_objectmodel.py b/pypy/rlib/test/test_objectmodel.py --- a/pypy/rlib/test/test_objectmodel.py +++ b/pypy/rlib/test/test_objectmodel.py @@ -556,6 +556,22 @@ def str_to_int(s): return s +def test_signature_list(): + @signature(types.list(types.int()), returns=types.int()) + def f(a): + return len(a) + argtype = getsig(f)[0] + assert isinstance(argtype, model.SomeList) + item = argtype.listdef.listitem + assert item.s_value == model.SomeInteger() + + @check_annotator_fails + def ok_for_body(): + f(['a']) + @check_annotator_fails + def bad_for_body(): + f('a') + def getgraph(f, argtypes): from pypy.translator.translator import TranslationContext, graphof _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit