[pypy-svn] r53771 - in pypy/dist/pypy/rlib: . test
fijal at codespeak.net
fijal at codespeak.net
Tue Apr 15 05:42:12 CEST 2008
Author: fijal
Date: Tue Apr 15 05:42:11 2008
New Revision: 53771
Modified:
pypy/dist/pypy/rlib/rstring.py
pypy/dist/pypy/rlib/test/test_rstring.py
Log:
Method support (no unicode!)
Modified: pypy/dist/pypy/rlib/rstring.py
==============================================================================
--- pypy/dist/pypy/rlib/rstring.py (original)
+++ pypy/dist/pypy/rlib/rstring.py Tue Apr 15 05:42:11 2008
@@ -9,6 +9,14 @@
def __init__(self, initial_space=0):
self.initial_space = initial_space
+ def method_append(self, s_item):
+ if not isinstance(s_item, annmodel.SomeString):
+ raise TypeError("Can only append strings or characters to string builder")
+ return annmodel.SomeImpossibleValue()
+
+ def method_build(self):
+ return annmodel.SomeString()
+
class StringBuilderEntry(ExtRegistryEntry):
_about_ = builder
Modified: pypy/dist/pypy/rlib/test/test_rstring.py
==============================================================================
--- pypy/dist/pypy/rlib/test/test_rstring.py (original)
+++ pypy/dist/pypy/rlib/test/test_rstring.py Tue Apr 15 05:42:11 2008
@@ -1,6 +1,7 @@
from pypy.translator.translator import TranslationContext
from pypy.rlib import rstring
+from pypy.annotation import model as annmodel
class TestAnnotationStringBuilder:
def annotate(self, func, args):
@@ -14,3 +15,13 @@
t, res = self.annotate(f, [])
assert isinstance(res, rstring.SomeStringBuilder)
+
+ def test_methods(self):
+ def f(x):
+ b = rstring.builder()
+ for i in range(x):
+ b.append("abc")
+ return b.build()
+
+ t, res = self.annotate(f, [int])
+ assert isinstance(res, annmodel.SomeString)
More information about the Pypy-commit
mailing list