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

antocuni at codespeak.net antocuni at codespeak.net
Wed Jan 31 17:00:19 CET 2007


Author: antocuni
Date: Wed Jan 31 17:00:18 2007
New Revision: 37676

Modified:
   pypy/dist/pypy/translator/cli/ilgenerator.py
   pypy/dist/pypy/translator/cli/test/test_dotnet.py
Log:
Make unbox returning None instead of throwing an exception when it
fails.



Modified: pypy/dist/pypy/translator/cli/ilgenerator.py
==============================================================================
--- pypy/dist/pypy/translator/cli/ilgenerator.py	(original)
+++ pypy/dist/pypy/translator/cli/ilgenerator.py	Wed Jan 31 17:00:18 2007
@@ -337,7 +337,7 @@
 
     def downcast(self, TYPE):
         type = self.cts.lltype_to_cts(TYPE)
-        return self.ilasm.opcode('castclass', type)
+        return self.ilasm.opcode('isinst', type)
 
     def instantiate(self):
         self.call_signature('object [pypylib]pypy.runtime.Utils::RuntimeNew(class [mscorlib]System.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	Wed Jan 31 17:00:18 2007
@@ -346,6 +346,15 @@
         res = self.interpret(fn, [])
         assert res is True
 
+    def test_unbox_instance_fail(self):
+        class Foo:
+            pass
+        def fn():
+            b_obj = box(42)
+            return unbox(b_obj, Foo)
+        res = self.interpret(fn, [])
+        assert res is None
+
     def test_instance_wrapping(self):
         class Foo:
             pass



More information about the Pypy-commit mailing list