[pypy-svn] r48335 - in pypy/branch/pypy-rpython-unicode/annotation: . test

fijal at codespeak.net fijal at codespeak.net
Tue Nov 6 13:19:18 CET 2007


Author: fijal
Date: Tue Nov  6 13:19:17 2007
New Revision: 48335

Modified:
   pypy/branch/pypy-rpython-unicode/annotation/binaryop.py
   pypy/branch/pypy-rpython-unicode/annotation/test/test_annrpython.py
Log:
Forbid mixing unicode and string (this leaves some desgin flaw around
as mixing of unichr and chr is ok)


Modified: pypy/branch/pypy-rpython-unicode/annotation/binaryop.py
==============================================================================
--- pypy/branch/pypy-rpython-unicode/annotation/binaryop.py	(original)
+++ pypy/branch/pypy-rpython-unicode/annotation/binaryop.py	Tue Nov  6 13:19:17 2007
@@ -426,10 +426,12 @@
         return SomeChar()
 
 
-class __extend__(pairtype(SomeUnicodeCodePoint, SomeUnicodeCodePoint),
-                 pairtype(SomeChar, SomeUnicodeCodePoint),
+class __extend__(pairtype(SomeChar, SomeUnicodeCodePoint),
                  pairtype(SomeUnicodeCodePoint, SomeChar)):
+    def union((uchr1, uchr2)):
+        return SomeUnicodeCodePoint()
 
+class __extend__(pairtype(SomeUnicodeCodePoint, SomeUnicodeCodePoint)):
     def union((uchr1, uchr2)):
         return SomeUnicodeCodePoint()
 
@@ -665,14 +667,8 @@
         getbookkeeper().count("str_mul", str2, int1)
         return SomeString()
 
-class __extend__(pairtype(SomeString, SomeUnicodeString),
-                 pairtype(SomeUnicodeString, SomeString),
-                 pairtype(SomeUnicodeCodePoint, SomeString),
-                 pairtype(SomeString, SomeUnicodeCodePoint),
-                 pairtype(SomeUnicodeCodePoint, SomeUnicodeString),
+class __extend__(pairtype(SomeUnicodeCodePoint, SomeUnicodeString),
                  pairtype(SomeUnicodeString, SomeUnicodeCodePoint),
-                 pairtype(SomeUnicodeString, SomeChar),
-                 pairtype(SomeChar, SomeUnicodeString),
                  pairtype(SomeUnicodeString, SomeUnicodeString)):
     def union((str1, str2)):
         return SomeUnicodeString(can_be_None=str1.can_be_none() or

Modified: pypy/branch/pypy-rpython-unicode/annotation/test/test_annrpython.py
==============================================================================
--- pypy/branch/pypy-rpython-unicode/annotation/test/test_annrpython.py	(original)
+++ pypy/branch/pypy-rpython-unicode/annotation/test/test_annrpython.py	Tue Nov  6 13:19:17 2007
@@ -2883,7 +2883,7 @@
     def test_unicode(self):
         def g(n):
             if n > 0:
-                return "xxx"
+                return unichr(1234)
             else:
                 return u"x\xe4x"
 
@@ -2913,19 +2913,12 @@
         def g(x):
             return unichr(x) + unichr(2)
 
-        def h(x):
-            return x + u'a'
-
-        def i(x):
-            return unicode(x) + 'xxx'
-
-        for func in f, h, i:
-            a = self.RPythonAnnotator()
-            s = a.build_types(f, [str])
-            assert isinstance(s, annmodel.SomeUnicodeString)
         a = self.RPythonAnnotator()
-        s = a.build_types(f, [int])
+        s = a.build_types(f, [str])
         assert isinstance(s, annmodel.SomeUnicodeString)
+        a = self.RPythonAnnotator()
+        s = a.build_types(f, [int])
+        assert isinstance(s, annmodel.SomeUnicodeString)            
 
 
 def g(n):



More information about the Pypy-commit mailing list