Skip to content

Commit fcbb388

Browse files
authored
Merge pull request RustPython#4168 from jopemachine/fix-testisinstance
Fix `test_infinite_recursion_via_bases_tuple`, `test_infinite_cycle_in_bases`
2 parents e02afc4 + faace16 commit fcbb388

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

Lib/test/test_isinstance.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,6 @@ def __bases__(self):
316316
self.assertRaises(RecursionError, issubclass, int, X())
317317
self.assertRaises(RecursionError, isinstance, 1, X())
318318

319-
@unittest.skip("TODO: RUSTPYTHON")
320319
def test_infinite_recursion_via_bases_tuple(self):
321320
"""Regression test for bpo-30570."""
322321
class Failure(object):
@@ -326,7 +325,6 @@ def __getattr__(self, attr):
326325
with self.assertRaises(RecursionError):
327326
issubclass(Failure(), int)
328327

329-
@unittest.skip("TODO: RUSTPYTHON")
330328
def test_infinite_cycle_in_bases(self):
331329
"""Regression test for bpo-30570."""
332330
class X:

vm/src/protocol/object.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,8 +382,11 @@ impl PyObject {
382382
continue;
383383
}
384384
_ => {
385-
for i in 0..n {
386-
if let Ok(true) = tuple.fast_getitem(i).abstract_issubclass(cls, vm) {
385+
if let Some(i) = (0..n).next() {
386+
let check = vm.with_recursion("in abstract_issubclass", || {
387+
tuple.fast_getitem(i).abstract_issubclass(cls, vm)
388+
})?;
389+
if check {
387390
return Ok(true);
388391
}
389392
}

0 commit comments

Comments
 (0)