[pypy-commit] pypy default: Merge heads
amauryfa
noreply at buildbot.pypy.org
Thu Sep 13 00:17:07 CEST 2012
Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch:
Changeset: r57308:c341aab543ab
Date: 2012-09-13 00:16 +0200
http://bitbucket.org/pypy/pypy/changeset/c341aab543ab/
Log: Merge heads
diff --git a/pypy/module/micronumpy/__init__.py b/pypy/module/micronumpy/__init__.py
--- a/pypy/module/micronumpy/__init__.py
+++ b/pypy/module/micronumpy/__init__.py
@@ -1,21 +1,9 @@
from pypy.interpreter.mixedmodule import MixedModule
-class PyPyModule(MixedModule):
- interpleveldefs = {
- 'debug_repr': 'interp_extras.debug_repr',
- 'remove_invalidates': 'interp_extras.remove_invalidates',
- 'set_invalidation': 'interp_extras.set_invalidation',
- }
- appleveldefs = {}
-
class Module(MixedModule):
applevel_name = '_numpypy'
- submodules = {
- 'pypy': PyPyModule
- }
-
interpleveldefs = {
'ndarray': 'interp_numarray.W_NDimArray',
'dtype': 'interp_dtype.W_Dtype',
diff --git a/pypy/module/micronumpy/interp_extras.py b/pypy/module/micronumpy/interp_extras.py
deleted file mode 100644
--- a/pypy/module/micronumpy/interp_extras.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from pypy.interpreter.gateway import unwrap_spec
-from pypy.module.micronumpy.interp_numarray import BaseArray, get_numarray_cache
-
-
- at unwrap_spec(array=BaseArray)
-def debug_repr(space, array):
- return space.wrap(array.find_sig().debug_repr())
-
- at unwrap_spec(array=BaseArray)
-def remove_invalidates(space, array):
- """ Array modification will no longer invalidate any of it's
- potential children. Use only for performance debugging
- """
- del array.invalidates[:]
- return space.w_None
-
- at unwrap_spec(arg=bool)
-def set_invalidation(space, arg):
- get_numarray_cache(space).enable_invalidation = arg
diff --git a/pypy/rlib/parsing/test/test_tree.py b/pypy/rlib/parsing/test/test_tree.py
new file mode 100644
--- /dev/null
+++ b/pypy/rlib/parsing/test/test_tree.py
@@ -0,0 +1,90 @@
+import py
+
+from pypy.rlib.parsing.tree import Nonterminal, Symbol
+from pypy.rlib.parsing.lexer import Token, SourcePos
+
+class TestTreeAppLevel(object):
+
+ def test_nonterminal_simple(self):
+ pos = SourcePos(1,2,3)
+ tree = Nonterminal(symbol="a",
+ children=[
+ Symbol(symbol="b",
+ additional_info="b",
+ token=Token(name="B",
+ source="b",
+ source_pos=pos))])
+ assert tree.getsourcepos() == pos
+
+ def test_nonterminal_nested(self):
+ pos = SourcePos(1,2,3)
+ tree = Nonterminal(symbol="a",
+ children=[
+ Nonterminal(symbol="c",
+ children=[
+ Symbol(symbol="b",
+ additional_info="b",
+ token=Token(name="B",
+ source="b",
+ source_pos=pos))])])
+ assert tree.getsourcepos() == pos
+
+ def test_nonterminal_simple_empty(self):
+ tree = Nonterminal(symbol="a",
+ children=[])
+ assert len(tree.children) == 0 # trivial
+ py.test.raises(IndexError, tree.getsourcepos)
+
+ def test_nonterminal_nested_empty(self):
+ tree = Nonterminal(symbol="a",
+ children=[Nonterminal(symbol="c",
+ children=[Nonterminal(symbol="c",
+ children=[Nonterminal(symbol="c",
+ children=[Nonterminal(symbol="c",
+ children=[Nonterminal(symbol="c",
+ children=[Nonterminal(symbol="c",
+ children=[])])])])])])])
+ assert len(tree.children) != 0 # the not-so-trivial part.
+ py.test.raises(IndexError, tree.getsourcepos)
+
+class BaseTestTreeTranslated(object):
+
+ def compile(self, f):
+ raise NotImplementedError
+
+ def test_nonterminal_simple_empty(self):
+ def foo():
+ tree = Nonterminal(symbol="a",
+ children=[])
+ return tree.getsourcepos()
+ f = self.compile(foo)
+ py.test.raises(IndexError, f)
+
+ def test_nonterminal_nested_empty(self):
+ def foo():
+ tree = Nonterminal(symbol="a",
+ children=[Nonterminal(symbol="c",
+ children=[Nonterminal(symbol="c",
+ children=[Nonterminal(symbol="c",
+ children=[Nonterminal(symbol="c",
+ children=[Nonterminal(symbol="c",
+ children=[Nonterminal(symbol="c",
+ children=[])])])])])])])
+ return tree.getsourcepos()
+ f = self.compile(foo)
+ py.test.raises(IndexError, f)
+
+
+class TestTreeTranslatedLLType(BaseTestTreeTranslated):
+
+ def compile(self, f):
+ from pypy.translator.c.test.test_genc import compile
+ return compile(f, [])
+
+class TestTreeTranslatedOOType(BaseTestTreeTranslated):
+
+ def compile(self, f):
+ from pypy.translator.cli.test.runtest import compile_function
+ return compile_function(f, [], auto_raise_exc=True, exctrans=True)
+
+
diff --git a/pypy/rlib/parsing/tree.py b/pypy/rlib/parsing/tree.py
--- a/pypy/rlib/parsing/tree.py
+++ b/pypy/rlib/parsing/tree.py
@@ -53,7 +53,10 @@
self.symbol = symbol
def getsourcepos(self):
- return self.children[0].getsourcepos()
+ try:
+ return self.children[0].getsourcepos()
+ except IndexError:
+ raise
def __str__(self):
return "%s(%s)" % (self.symbol, ", ".join([str(c) for c in self.children]))
More information about the pypy-commit
mailing list