[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