[pypy-svn] r8592 - in pypy/dist/pypy: annotation translator/test
mwh at codespeak.net
mwh at codespeak.net
Wed Jan 26 10:54:58 CET 2005
Author: mwh
Date: Wed Jan 26 10:54:58 2005
New Revision: 8592
Modified:
pypy/dist/pypy/annotation/binaryop.py
pypy/dist/pypy/annotation/builtin.py
pypy/dist/pypy/translator/test/snippet.py
pypy/dist/pypy/translator/test/test_annrpython.py
Log:
union(SomeSlice, SomeSlice)
builtin_slice (mainly so I could write the tests for the above)
tests.
Modified: pypy/dist/pypy/annotation/binaryop.py
==============================================================================
--- pypy/dist/pypy/annotation/binaryop.py (original)
+++ pypy/dist/pypy/annotation/binaryop.py Wed Jan 26 10:54:58 2005
@@ -199,6 +199,14 @@
generalize(dic1.factories, obj2, s_value)
+class __extend__(pairtype(SomeSlice, SomeSlice)):
+
+ def union((slic1, slic2)):
+ return SomeSlice(unionof(slic1.start, slic2.start),
+ unionof(slic1.stop, slic2.stop),
+ unionof(slic1.step, slic2.step))
+
+
class __extend__(pairtype(SomeTuple, SomeInteger)):
def getitem((tup1, int2)):
Modified: pypy/dist/pypy/annotation/builtin.py
==============================================================================
--- pypy/dist/pypy/annotation/builtin.py (original)
+++ pypy/dist/pypy/annotation/builtin.py Wed Jan 26 10:54:58 2005
@@ -4,7 +4,7 @@
import types
from pypy.annotation.model import SomeInteger, SomeObject, SomeChar, SomeBool
-from pypy.annotation.model import SomeList, SomeString, SomeTuple
+from pypy.annotation.model import SomeList, SomeString, SomeTuple, SomeSlice
from pypy.annotation.bookkeeper import getbookkeeper
from pypy.annotation.factory import ListFactory
from pypy.objspace.flow.model import Constant
@@ -138,6 +138,21 @@
s.knowntype = types.CodeType
return s
+def builtin_slice(*args):
+ bk = getbookkeeper()
+ if len(args) == 1:
+ return SomeSlice(
+ bk.immutablevalue(None), args[0], bk.immutablevalue(None))
+ elif len(args) == 2:
+ return SomeSlice(
+ args[0], args[1], bk.immutablevalue(None))
+ elif len(args) == 3:
+ return SomeSlice(
+ args[0], args[1], args[2])
+ else:
+ raise Exception, "bogus call to slice()"
+
+
def exception_init(s_self, *args):
s_self.setattr(immutablevalue('args'), SomeTuple(args))
Modified: pypy/dist/pypy/translator/test/snippet.py
==============================================================================
--- pypy/dist/pypy/translator/test/snippet.py (original)
+++ pypy/dist/pypy/translator/test/snippet.py Wed Jan 26 10:54:58 2005
@@ -694,3 +694,8 @@
d = {'a' : 1}
return d.items()
+def slice_union(x):
+ if x:
+ return slice(1)
+ else:
+ return slice(0, 10, 2)
Modified: pypy/dist/pypy/translator/test/test_annrpython.py
==============================================================================
--- pypy/dist/pypy/translator/test/test_annrpython.py (original)
+++ pypy/dist/pypy/translator/test/test_annrpython.py Wed Jan 26 10:54:58 2005
@@ -397,7 +397,6 @@
s = a.build_types(snippet.simple_slice, [list])
assert isinstance(s, annmodel.SomeList)
-
def test_simple_iter_list(self):
a = RPythonAnnotator()
s = a.build_types(snippet.simple_iter, [list])
@@ -463,6 +462,10 @@
assert isinstance(s_key, annmodel.SomeString)
assert isinstance(s_value, annmodel.SomeInteger)
+ def test_slice_union(self):
+ a = RPythonAnnotator()
+ s = a.build_types(snippet.slice_union, [int])
+ assert isinstance(s, annmodel.SomeSlice)
def g(n):
More information about the Pypy-commit
mailing list