[pypy-commit] pypy py3.5: Add error/warning for re.split('')

arigo pypy.commits at gmail.com
Sat Oct 15 08:26:25 EDT 2016


Author: Armin Rigo <arigo at tunes.org>
Branch: py3.5
Changeset: r87814:bd88b9bb4db8
Date: 2016-10-15 14:25 +0200
http://bitbucket.org/pypy/pypy/changeset/bd88b9bb4db8/

Log:	Add error/warning for re.split('')

diff --git a/pypy/module/_sre/interp_sre.py b/pypy/module/_sre/interp_sre.py
--- a/pypy/module/_sre/interp_sre.py
+++ b/pypy/module/_sre/interp_sre.py
@@ -262,6 +262,14 @@
     @unwrap_spec(maxsplit=int)
     def split_w(self, w_string, maxsplit=0):
         space = self.space
+        if self.code[0] != rsre_core.OPCODE_INFO or self.code[3] == 0:
+            if self.code[0] == rsre_core.OPCODE_INFO and self.code[4] == 0:
+                raise oefmt(space.w_ValueError,
+                            "split() requires a non-empty pattern match.")
+            space.warn(
+                space.wrap("split() requires a non-empty pattern match."),
+                space.w_FutureWarning)
+        #
         splitlist = []
         n = 0
         last = 0
diff --git a/pypy/module/_sre/test/test_app_sre.py b/pypy/module/_sre/test/test_app_sre.py
--- a/pypy/module/_sre/test/test_app_sre.py
+++ b/pypy/module/_sre/test/test_app_sre.py
@@ -1041,3 +1041,8 @@
         import re
         assert re.search(".+ab", "wowowowawoabwowo")
         assert None == re.search(".+ab", "wowowaowowo")
+
+    def test_split_nonempty(self):
+        import re
+        raises(ValueError, re.split, '', '')
+        re.split("a*", '')    # -> warning


More information about the pypy-commit mailing list