[pypy-commit] pypy fix-strbuf: (fijal, arigo)

arigo noreply at buildbot.pypy.org
Sun Jul 26 14:32:37 CEST 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: fix-strbuf
Changeset: r78668:b21a6e8e8f70
Date: 2015-07-26 14:32 +0200
http://bitbucket.org/pypy/pypy/changeset/b21a6e8e8f70/

Log:	(fijal, arigo)

	Argh, bug and fix

diff --git a/rpython/rlib/rstring.py b/rpython/rlib/rstring.py
--- a/rpython/rlib/rstring.py
+++ b/rpython/rlib/rstring.py
@@ -687,12 +687,12 @@
 class __extend__(pairtype(SomeStringBuilder, SomeStringBuilder)):
 
     def union((obj1, obj2)):
-        return obj1
+        return SomeStringBuilder()
 
 class __extend__(pairtype(SomeUnicodeBuilder, SomeUnicodeBuilder)):
 
     def union((obj1, obj2)):
-        return obj1
+        return SomeUnicodeBuilder()
 
 class PrebuiltStringBuilderEntry(ExtRegistryEntry):
     _type_ = StringBuilder
diff --git a/rpython/rtyper/test/test_rbuilder.py b/rpython/rtyper/test/test_rbuilder.py
--- a/rpython/rtyper/test/test_rbuilder.py
+++ b/rpython/rtyper/test/test_rbuilder.py
@@ -217,12 +217,17 @@
 
     def test_string_builder_union(self):
         s = StringBuilder()
+        s.append('foo')
 
         def f(i):
             if i % 2:
                 s2 = StringBuilder()
+                s2.append('x')
             else:
                 s2 = s
-            return s2.build()
+            return len(s2.build())
 
-        self.interpret(f, [3])
+        res = self.interpret(f, [33])
+        assert res == 1
+        res = self.interpret(f, [34])
+        assert res == 3


More information about the pypy-commit mailing list