diff --git a/crates/vm/src/builtins/int.rs b/crates/vm/src/builtins/int.rs index bf92d49c2..a586a8817 100644 --- a/crates/vm/src/builtins/int.rs +++ b/crates/vm/src/builtins/int.rs @@ -395,6 +395,9 @@ impl PyInt { } fn modpow(&self, other: PyObjectRef, modulus: PyObjectRef, vm: &VirtualMachine) -> PyResult { + if other.downcast_ref::().is_none() { + return Ok(vm.ctx.not_implemented()); + } let modulus = match modulus.downcast_ref::() { Some(val) => val.as_bigint(), None => return Ok(vm.ctx.not_implemented()), diff --git a/extra_tests/snippets/builtin_pow.py b/extra_tests/snippets/builtin_pow.py index d38b57c37..af21fe459 100644 --- a/extra_tests/snippets/builtin_pow.py +++ b/extra_tests/snippets/builtin_pow.py @@ -22,6 +22,9 @@ assert_raises(TypeError, pow, 2.0, 4, 5) assert pow(2, -1, 5) == 3 assert_raises(ValueError, pow, 2, 2, 0) +assert_raises(TypeError, pow, 1, None, 0) +assert_raises(TypeError, pow, True, 1.5, False) + assert_almost_equal = assert_equal