Author: Brian Kearns <[email protected]>
Branch: py3k
Changeset: r62052:c0ea2f3113b3
Date: 2013-03-04 23:14 -0500
http://bitbucket.org/pypy/pypy/changeset/c0ea2f3113b3/
Log: merge heads
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
@@ -104,7 +104,8 @@
if endpos < pos: endpos = pos
if space.is_true(space.isinstance(w_string, space.w_unicode)):
unicodestr = space.unicode_w(w_string)
- if not space.isinstance_w(self.w_pattern, space.w_unicode):
+ if not (space.is_none(self.w_pattern) or
+ space.isinstance_w(self.w_pattern, space.w_unicode)):
raise OperationError(space.w_TypeError, space.wrap(
"can't use a string pattern on a bytes-like object"))
if pos > len(unicodestr): pos = len(unicodestr)
@@ -113,7 +114,8 @@
pos, endpos, self.flags)
else:
str = space.bufferstr_w(w_string)
- if space.isinstance_w(self.w_pattern, space.w_unicode):
+ if (not space.is_none(self.w_pattern) and
+ space.isinstance_w(self.w_pattern, space.w_unicode)):
raise OperationError(space.w_TypeError, space.wrap(
"can't use a bytes pattern on a string-like object"))
if pos > len(str): pos = len(str)
@@ -292,6 +294,10 @@
w_srepat = space.allocate_instance(W_SRE_Pattern, w_subtype)
srepat = space.interp_w(W_SRE_Pattern, w_srepat)
srepat.space = space
+ # Type check
+ if not (space.is_none(w_pattern) or
+ space.isinstance_w(w_pattern, space.w_unicode)):
+ space.bufferstr_w(w_pattern)
srepat.w_pattern = w_pattern # the original uncompiled pattern
srepat.flags = flags
srepat.code = code
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
@@ -93,6 +93,10 @@
import re, _weakref
_weakref.ref(re.compile(r""))
+ def test_pattern_check(self):
+ import _sre
+ raises(TypeError, _sre.compile, {}, 0, [])
+
class AppTestSreMatch:
spaceconfig = dict(usemodules=('array',))
@@ -325,6 +329,12 @@
assert ("bla", "") == (p.search().group(0), p.search().group(0))
assert None == p.search()
+ def test_no_pattern(self):
+ import sre_compile, sre_parse
+ sre_pattern = sre_compile.compile(
+ sre_parse.SubPattern(sre_parse.Pattern()))
+ assert sre_pattern.scanner('s') is not None
+
class AppTestGetlower:
spaceconfig = dict(usemodules=('_locale',))
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit