[pypy-commit] pypy default: fix union

fijal noreply at buildbot.pypy.org
Thu Jul 23 22:06:53 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: 
Changeset: r78642:df782d94c19b
Date: 2015-07-23 22:07 +0200
http://bitbucket.org/pypy/pypy/changeset/df782d94c19b/

Log:	fix union

diff --git a/rpython/rlib/rstring.py b/rpython/rlib/rstring.py
--- a/rpython/rlib/rstring.py
+++ b/rpython/rlib/rstring.py
@@ -684,6 +684,16 @@
     _about_ = UnicodeBuilder
     use_unicode = True
 
+class __extend__(pairtype(SomeStringBuilder, SomeStringBuilder)):
+
+    def union((obj1, obj2)):
+        return obj1
+
+class __extend__(pairtype(SomeUnicodeBuilder, SomeUnicodeBuilder)):
+
+    def union((obj1, obj2)):
+        return obj1
+
 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
@@ -214,3 +214,15 @@
 
         res = self.interpret(f, [])
         assert res == 3
+
+    def test_string_builder_union(self):
+        s = StringBuilder()
+
+        def f(i):
+            if i % 2:
+                s2 = StringBuilder()
+            else:
+                s2 = s
+            return s2.build()
+
+        self.interpret(f, [3])


More information about the pypy-commit mailing list