Merge pull request #2953 from eldpswp99/resolve-deque.rotate-panic

resolve deque.rotate panic
This commit is contained in:
Jeong YunWon
2021-08-24 21:23:35 +09:00
committed by GitHub
2 changed files with 7 additions and 6 deletions

View File

@@ -436,7 +436,6 @@ class TestBasic(unittest.TestCase):
self.assertEqual(list(d), data[:i])
self.assertRaises(TypeError, d.reverse, 1) # Arity is zero
@unittest.skip("TODO: RUSTPYTHON panics")
def test_rotate(self):
s = tuple('abcde')
n = len(s)

View File

@@ -374,11 +374,13 @@ mod _collections {
fn rotate(&self, mid: OptionalArg<isize>) {
self.state.fetch_add(1);
let mut deque = self.borrow_deque_mut();
let mid = mid.unwrap_or(1);
if mid < 0 {
deque.rotate_left(-mid as usize);
} else {
deque.rotate_right(mid as usize);
if !deque.is_empty() {
let mid = mid.unwrap_or(1) % deque.len() as isize;
if mid.is_negative() {
deque.rotate_left(-mid as usize);
} else {
deque.rotate_right(mid as usize);
}
}
}