mirror of https://github.com/python/cpython.git
Fix bug:
[ 1327110 ] wrong TypeError traceback in generator expressions by removing the code that can stomp on the users' TypeError raised by the iterable argument to ''.join() -- PySequence_Fast (now?) gives a perfectly reasonable message itself. Also, a couple of tests.
This commit is contained in:
parent
aee2e2829d
commit
b2308bb9be
|
@ -657,6 +657,15 @@ def test_join(self):
|
|||
self.checkraises(TypeError, ' ', 'join')
|
||||
self.checkraises(TypeError, ' ', 'join', 7)
|
||||
self.checkraises(TypeError, ' ', 'join', Sequence([7, 'hello', 123L]))
|
||||
try:
|
||||
def f():
|
||||
yield 4 + ""
|
||||
self.fixtype(' ').join(f())
|
||||
except TypeError, e:
|
||||
if '+' not in str(e):
|
||||
self.fail('join() ate exception message')
|
||||
else:
|
||||
self.fail('exception not raised')
|
||||
|
||||
def test_formatting(self):
|
||||
self.checkequal('+hello+', '+%s+', '__mod__', 'hello')
|
||||
|
|
|
@ -51,6 +51,17 @@ def test_join(self):
|
|||
|
||||
self.checkraises(TypeError, string_tests.BadSeq1(), 'join', ' ')
|
||||
self.checkequal('a b c', string_tests.BadSeq2(), 'join', ' ')
|
||||
try:
|
||||
def f():
|
||||
yield 4 + ""
|
||||
self.fixtype(' ').join(f())
|
||||
except TypeError, e:
|
||||
if '+' not in str(e):
|
||||
self.fail('join() ate exception message')
|
||||
else:
|
||||
self.fail('exception not raised')
|
||||
|
||||
|
||||
|
||||
|
||||
class ModuleTest(unittest.TestCase):
|
||||
|
|
|
@ -1620,10 +1620,6 @@ string_join(PyStringObject *self, PyObject *orig)
|
|||
|
||||
seq = PySequence_Fast(orig, "");
|
||||
if (seq == NULL) {
|
||||
if (PyErr_ExceptionMatches(PyExc_TypeError))
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"sequence expected, %.80s found",
|
||||
orig->ob_type->tp_name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -4148,10 +4148,6 @@ PyUnicode_Join(PyObject *separator, PyObject *seq)
|
|||
|
||||
fseq = PySequence_Fast(seq, "");
|
||||
if (fseq == NULL) {
|
||||
if (PyErr_ExceptionMatches(PyExc_TypeError))
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"sequence expected, %.80s found",
|
||||
seq->ob_type->tp_name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue