Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r50269:b1a1441f2980 Date: 2011-12-07 17:18 +0100 http://bitbucket.org/pypy/pypy/changeset/b1a1441f2980/
Log: Fixes. Now micronumpy passes :-) diff --git a/pypy/objspace/fake/objspace.py b/pypy/objspace/fake/objspace.py --- a/pypy/objspace/fake/objspace.py +++ b/pypy/objspace/fake/objspace.py @@ -1,7 +1,7 @@ from pypy.interpreter.baseobjspace import W_Root, ObjSpace from pypy.interpreter.baseobjspace import Wrappable, SpaceCache from pypy.interpreter import argument, gateway -from pypy.interpreter.typedef import TypeDef +from pypy.interpreter.typedef import TypeDef, GetSetProperty from pypy.annotation.model import SomeInstance, s_None from pypy.rpython.extregistry import ExtRegistryEntry from pypy.rpython.lltypesystem import lltype @@ -113,11 +113,13 @@ return w_some_obj() def newtuple(self, list_w): - is_root(list_w[NonConstant(0)]) + for w_x in list_w: + is_root(w_x) return w_some_obj() def newlist(self, list_w): - is_root(list_w[NonConstant(0)]) + for w_x in list_w: + is_root(w_x) return w_some_obj() def newslice(self, w_start, w_end, w_step): @@ -131,8 +133,11 @@ raise NotImplementedError def wrap(self, x): - if isinstance(x, gateway.interp2app): - self._see_interp2app(x) + if not we_are_translated(): + if isinstance(x, gateway.interp2app): + self._see_interp2app(x) + if isinstance(x, GetSetProperty): + self._see_getsetproperty(x) return w_some_obj() wrap._annspecialcase_ = "specialize:argtype(1)" @@ -146,6 +151,21 @@ check = func_with_new_name(check, 'check__' + interp2app.name) self._seen_extras.append(check) + def _see_getsetproperty(self, getsetproperty): + "NOT_RPYTHON" + space = self + def checkprop(): + getsetproperty.fget(getsetproperty, space, w_some_obj()) + if getsetproperty.fset is not None: + getsetproperty.fset(getsetproperty, space, w_some_obj(), + w_some_obj()) + if getsetproperty.fdel is not None: + getsetproperty.fdel(getsetproperty, space, w_some_obj()) + if not getsetproperty.name.startswith('<'): + checkprop = func_with_new_name(checkprop, + 'checkprop__' + getsetproperty.name) + self._seen_extras.append(checkprop) + def call_obj_args(self, w_callable, w_obj, args): is_root(w_callable) is_root(w_obj) @@ -187,6 +207,18 @@ return instantiate(cls) allocate_instance._annspecialcase_ = "specialize:arg(1)" + def decode_index(self, w_index_or_slice, seqlength): + is_root(w_index_or_slice) + return (NonConstant(42), NonConstant(42), NonConstant(42)) + + def decode_index4(self, w_index_or_slice, seqlength): + is_root(w_index_or_slice) + return (NonConstant(42), NonConstant(42), + NonConstant(42), NonConstant(42)) + + def exec_(self, *args, **kwds): + pass + # ---------- def translates(self, func=None, argtypes=None): @@ -225,7 +257,8 @@ for name in (ObjSpace.ConstantTable + ObjSpace.ExceptionTable + ['int', 'str', 'float', 'long', 'tuple', 'list', - 'dict', 'unicode']): + 'dict', 'unicode', 'complex', 'slice', 'bool', + 'type']): setattr(FakeObjSpace, 'w_' + name, w_some_obj()) # for (name, _, arity, _) in ObjSpace.MethodTable: @@ -254,3 +287,13 @@ for value in typedef.rawdict.values(): cache.space.wrap(value) return w_some_obj() + +class FakeCompiler(object): + pass +FakeObjSpace.default_compiler = FakeCompiler() + +class FakeModule(object): + def get(self, name): + name + "xx" # check that it's a string + return w_some_obj() +FakeObjSpace.sys = FakeModule() diff --git a/pypy/objspace/fake/test/test_checkmodule.py b/pypy/objspace/fake/test/test_checkmodule.py --- a/pypy/objspace/fake/test/test_checkmodule.py +++ b/pypy/objspace/fake/test/test_checkmodule.py @@ -1,8 +1,7 @@ import py -from pypy.objspace.fake.checkmodule import checkmodule from pypy.objspace.fake.objspace import FakeObjSpace, is_root from pypy.interpreter.baseobjspace import Wrappable -from pypy.interpreter.typedef import TypeDef +from pypy.interpreter.typedef import TypeDef, GetSetProperty from pypy.interpreter.gateway import interp2app, W_Root, ObjSpace @@ -35,6 +34,17 @@ space.translates() assert check +def test_wrap_GetSetProperty(): + see, check = make_checker() + def foobar(w_obj, space): + is_root(w_obj) + see() + return space.w_None + space = FakeObjSpace() + space.wrap(GetSetProperty(foobar)) + space.translates() + assert check + def test_gettypefor_untranslated(): see, check = make_checker() @@ -51,7 +61,3 @@ assert not check space.translates() assert check - - -def test_itertools_module(): - checkmodule('itertools') diff --git a/pypy/objspace/fake/test/test_objspace.py b/pypy/objspace/fake/test/test_objspace.py --- a/pypy/objspace/fake/test/test_objspace.py +++ b/pypy/objspace/fake/test/test_objspace.py @@ -69,3 +69,6 @@ space = self.space space.translates(lambda: (space.unpackiterable(W_Root()), space.unpackiterable(W_Root(), 42))) + + def test_newlist(self): + self.space.newlist([W_Root(), W_Root()]) diff --git a/pypy/objspace/fake/test/test_zmodules.py b/pypy/objspace/fake/test/test_zmodules.py new file mode 100644 --- /dev/null +++ b/pypy/objspace/fake/test/test_zmodules.py @@ -0,0 +1,10 @@ +from pypy.config.pypyoption import working_modules +from pypy.objspace.fake.checkmodule import checkmodule +from pypy.tool.sourcetools import compile2 + + +for name in sorted(working_modules): + exec compile2("""\ + def test_module_%s(): + checkmodule(%r) + """ % (name, name)) diff --git a/pypy/translator/translator.py b/pypy/translator/translator.py --- a/pypy/translator/translator.py +++ b/pypy/translator/translator.py @@ -150,11 +150,11 @@ from pypy.translator.tool.graphpage import FlowGraphPage FlowGraphPage(self).display() - def viewcg(self, center_graph=None): + def viewcg(self, center_graph=None, huge=100): """Shows the whole call graph and the class hierarchy, based on the computed annotations.""" from pypy.translator.tool.graphpage import TranslatorPage - TranslatorPage(self, center_graph=center_graph).display() + TranslatorPage(self, center_graph=center_graph, huge=huge).display() _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit