Skip to content

Commit c1ad027

Browse files
committed
PR feedback
1 parent e88d66f commit c1ad027

2 files changed

Lines changed: 26 additions & 0 deletions

File tree

Lib/test/list_tests.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,30 @@ def infinite_gen():
228228
a[::-2] = infinite_gen()
229229
self.assertEqual(a, self.type2test(range(6)))
230230

231+
# Explicit start and stop with infinite iterator
232+
a = self.type2test(range(10))
233+
with self.assertRaises(ValueError):
234+
a[1:8:2] = infinite_gen()
235+
self.assertEqual(a, self.type2test(range(10)))
236+
237+
# Explicit start only
238+
a = self.type2test(range(10))
239+
with self.assertRaises(ValueError):
240+
a[2::3] = infinite_gen()
241+
self.assertEqual(a, self.type2test(range(10)))
242+
243+
# Explicit stop only
244+
a = self.type2test(range(10))
245+
with self.assertRaises(ValueError):
246+
a[:7:2] = infinite_gen()
247+
self.assertEqual(a, self.type2test(range(10)))
248+
249+
# Negative step with explicit start and stop
250+
a = self.type2test(range(10))
251+
with self.assertRaises(ValueError):
252+
a[8:1:-2] = infinite_gen()
253+
self.assertEqual(a, self.type2test(range(10)))
254+
231255
def test_extended_slice_assign_iterator(self):
232256
# Assigning a finite iterator with the correct length to an
233257
# extended slice should work.

Objects/listobject.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3845,9 +3845,11 @@ list_ass_subscript_lock_held(PyObject *_self, PyObject *item, PyObject *value)
38453845
PyObject *it = PyObject_GetIter(value);
38463846
if (it == NULL) {
38473847
if (PyErr_ExceptionMatches(PyExc_TypeError)) {
3848+
PyObject *exc = PyErr_GetRaisedException();
38483849
PyErr_SetString(PyExc_TypeError,
38493850
"must assign iterable "
38503851
"to extended slice");
3852+
_PyErr_ChainExceptions1(exc);
38513853
}
38523854
return -1;
38533855
}

0 commit comments

Comments
 (0)