[pypy-svn] r51511 - in pypy/dist/pypy/translator/cli: . test
antocuni at codespeak.net
antocuni at codespeak.net
Fri Feb 15 10:39:21 CET 2008
Author: antocuni
Date: Fri Feb 15 10:39:20 2008
New Revision: 51511
Modified:
pypy/dist/pypy/translator/cli/dotnet.py
pypy/dist/pypy/translator/cli/test/test_dotnet.py
Log:
use unbox() instead of clidowncast() to convert delegates to
StaticMethods; now box/unbox are used to (almost) consistently convert
from the OOType hierarchy to the CLI hierarchy and back.
Modified: pypy/dist/pypy/translator/cli/dotnet.py
==============================================================================
--- pypy/dist/pypy/translator/cli/dotnet.py (original)
+++ pypy/dist/pypy/translator/cli/dotnet.py Fri Feb 15 10:39:20 2008
@@ -386,7 +386,7 @@
else:
return None
- if isinstance(TYPE, ootype.OOType) and TYPE is not ootype.String:
+ if isinstance(TYPE, ootype.OOType) and TYPE is not ootype.String and not isinstance(TYPE, ootype.StaticMethod):
try:
return ootype.enforce(TYPE, x)
except TypeError:
@@ -428,7 +428,7 @@
def compute_result_annotation(self, x_s, type_s):
assert isinstance(x_s, SomeOOInstance)
- assert x_s.ootype == CLR.System.Object._INSTANCE
+ assert isinstance(x_s.ootype, NativeInstance)
assert type_s.is_constant()
TYPE = type_s.const
if isinstance(TYPE, (type, types.ClassType)):
@@ -436,6 +436,8 @@
# can_be_None == True because it can always return None, if it fails
classdef = self.bookkeeper.getuniqueclassdef(TYPE)
return SomeInstance(classdef, can_be_None=True)
+ elif isinstance(TYPE, ootype.StaticMethod):
+ return SomeOOStaticMeth(TYPE)
elif isinstance(TYPE, ootype.OOType):
return SomeOOInstance(TYPE)
else:
@@ -596,12 +598,8 @@
else:
cliClass = s_type.const
TYPE = cliClass._INSTANCE
- if isinstance(TYPE, ootype.StaticMethod):
- assert ootype.isSubclass(s_value.ootype, CLR.System.Object._INSTANCE)
- return SomeOOStaticMeth(TYPE)
- else:
- assert ootype.isSubclass(TYPE, s_value.ootype)
- return SomeOOInstance(TYPE)
+ assert ootype.isSubclass(TYPE, s_value.ootype)
+ return SomeOOInstance(TYPE)
def specialize_call(self, hop):
assert isinstance(hop.args_s[0], annmodel.SomeOOInstance)
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 Fri Feb 15 10:39:20 2008
@@ -538,7 +538,7 @@
return myfunc
def fn():
- myfunc = clidowncast(build_fn(), FUNCTYPE)
+ myfunc = unbox(build_fn(), FUNCTYPE)
return myfunc(30, 12)
res = self.interpret(fn, [])
assert res == 42
@@ -559,7 +559,7 @@
return myfunc
def fn():
- myfunc = clidowncast(build_fn(), FUNCTYPE)
+ myfunc = unbox(build_fn(), FUNCTYPE)
return myfunc(30, 12)
res = self.interpret(fn, [])
assert res == 42
More information about the Pypy-commit
mailing list