[pypy-svn] r39660 - pypy/dist/pypy/rpython

fijal at codespeak.net fijal at codespeak.net
Fri Mar 2 12:49:58 CET 2007


Author: fijal
Date: Fri Mar  2 12:49:56 2007
New Revision: 39660

Modified:
   pypy/dist/pypy/rpython/extfunc.py
Log:
Postpone annotation() a bit


Modified: pypy/dist/pypy/rpython/extfunc.py
==============================================================================
--- pypy/dist/pypy/rpython/extfunc.py	(original)
+++ pypy/dist/pypy/rpython/extfunc.py	Fri Mar  2 12:49:56 2007
@@ -27,12 +27,15 @@
 class ExtFuncEntry(ExtRegistryEntry):
     def compute_result_annotation(self, *args_s):
         if self.signature_args is not None:
-            assert len(args_s) == len(self.signature_args),\
+            signature_args = [annotation(arg, self.bookkeeper)
+                              for arg in self.signature_args]
+            assert len(args_s) == len(signature_args),\
                    "Argument number mismatch"
-            for arg, expected in zip(args_s, self.signature_args):
+            for arg, expected in zip(args_s, signature_args):
                 arg = unionof(arg, expected)
                 assert expected.contains(arg)
-        return self.signature_result
+        signature_result = annotation(self.signature_result, self.bookkeeper)
+        return signature_result
 
     def specialize_call(self, hop):
         rtyper = hop.rtyper
@@ -65,8 +68,8 @@
         if args is None:
             signature_args = None
         else:
-            signature_args = [annotation(arg) for arg in args]
-        signature_result = annotation(result)
+            signature_args = args
+        signature_result = result
         name=export_name
         if llimpl:
             lltypeimpl = llimpl



More information about the Pypy-commit mailing list