[pypy-commit] pypy signatures: Support floats in signatures

Greg Price noreply at buildbot.pypy.org
Tue Dec 4 07:49:44 CET 2012


Author: Greg Price <price at mit.edu>
Branch: signatures
Changeset: r59322:f48ed5fc47db
Date: 2012-12-03 21:06 -0800
http://bitbucket.org/pypy/pypy/changeset/f48ed5fc47db/

Log:	Support floats in signatures

diff --git a/pypy/annotation/types.py b/pypy/annotation/types.py
--- a/pypy/annotation/types.py
+++ b/pypy/annotation/types.py
@@ -2,15 +2,27 @@
 from pypy.annotation.listdef import ListDef
 
 
+def float():
+    return model.SomeFloat()
+
+def singlefloat():
+    return model.SomeSingleFloat()
+
+def longfloat():
+    return model.SomeLongFloat()
+
+
 def int():
     return model.SomeInteger()
 
+
 def str():
     return model.SomeString()
 
 def char():
     return model.SomeChar()
 
+
 def list(element):
     listdef = ListDef(None, element, mutated=True, resized=True)
     return model.SomeList(listdef)
@@ -19,5 +31,6 @@
     listdef = ListDef(None, element, mutated=True, resized=False)
     return model.SomeList(listdef)
 
+
 def instance(class_):
     return lambda bookkeeper: model.SomeInstance(bookkeeper.getuniqueclassdef(class_))
diff --git a/pypy/rlib/test/test_signature.py b/pypy/rlib/test/test_signature.py
--- a/pypy/rlib/test/test_signature.py
+++ b/pypy/rlib/test/test_signature.py
@@ -75,6 +75,14 @@
     def str_to_int(s):
         return s
 
+
+def test_signature_float():
+    @signature(types.longfloat(), types.singlefloat(), returns=types.float())
+    def f(a, b):
+        return 3.0
+    assert getsig(f) == [model.SomeLongFloat(), model.SomeSingleFloat(), model.SomeFloat()]
+
+
 def test_signature_list():
     @signature(types.list(types.int()), returns=types.int())
     def f(a):
@@ -127,6 +135,7 @@
         l.append(2)
     check_annotator_fails(try_append)
 
+
 def test_signature_instance():
     class C1(object):
         pass


More information about the pypy-commit mailing list