[pypy-svn] r40528 - in pypy/dist/pypy/translator/cli: . test

antocuni at codespeak.net antocuni at codespeak.net
Thu Mar 15 14:34:00 CET 2007


Author: antocuni
Date: Thu Mar 15 14:33:57 2007
New Revision: 40528

Modified:
   pypy/dist/pypy/translator/cli/dotnet.py
   pypy/dist/pypy/translator/cli/test/test_dotnet.py
Log:
fix the annotation of unbox



Modified: pypy/dist/pypy/translator/cli/dotnet.py
==============================================================================
--- pypy/dist/pypy/translator/cli/dotnet.py	(original)
+++ pypy/dist/pypy/translator/cli/dotnet.py	Thu Mar 15 14:33:57 2007
@@ -391,8 +391,9 @@
         TYPE = type_s.const
         if isinstance(TYPE, (type, types.ClassType)):
             # it's a user-defined class, so we return SomeInstance
+            # can_be_None == True because it can always return None, if it fails
             classdef = self.bookkeeper.getuniqueclassdef(TYPE)
-            return SomeInstance(classdef, can_be_None=x_s.can_be_None)
+            return SomeInstance(classdef, can_be_None=True)
         else:
             assert TYPE in BOXABLE_TYPES
             return OverloadingResolver.lltype_to_annotation(TYPE)

Modified: pypy/dist/pypy/translator/cli/test/test_dotnet.py
==============================================================================
--- pypy/dist/pypy/translator/cli/test/test_dotnet.py	(original)
+++ pypy/dist/pypy/translator/cli/test/test_dotnet.py	Thu Mar 15 14:33:57 2007
@@ -94,6 +94,17 @@
         s = a.build_types(fn, [])
         assert isinstance(s, annmodel.SomeInteger)
 
+    def test_unbox_can_be_None(self):
+        class Foo:
+            pass
+        def fn():
+            x = box(42)
+            return unbox(x, Foo)
+        a = RPythonAnnotator()
+        s = a.build_types(fn, [])
+        assert isinstance(s, annmodel.SomeInstance)
+        assert s.can_be_None
+
     def test_array(self):
         def fn():
             x = ArrayList()


More information about the pypy-svn mailing list