diff --git a/Lib/test/test_bool.py b/Lib/test/test_bool.py index 6da00aacd6..cc547fbfde 100644 --- a/Lib/test/test_bool.py +++ b/Lib/test/test_bool.py @@ -6,9 +6,6 @@ import os class BoolTest(unittest.TestCase): - - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_subclass(self): try: class C(bool): diff --git a/vm/src/builtins/int.rs b/vm/src/builtins/int.rs index 46b81de56b..1db61d5f08 100644 --- a/vm/src/builtins/int.rs +++ b/vm/src/builtins/int.rs @@ -1,4 +1,4 @@ -use super::{float, PyByteArray, PyBytes, PyStr, PyType, PyTypeRef}; +use super::{float, PyBool, PyByteArray, PyBytes, PyStr, PyType, PyTypeRef}; use crate::{ builtins::PyStrRef, bytesinner::PyBytesInner, @@ -213,6 +213,11 @@ impl Constructor for PyInt { type Args = IntOptions; fn py_new(cls: PyTypeRef, options: Self::Args, vm: &VirtualMachine) -> PyResult { + if cls.is(PyBool::class(vm)) { + return Err( + vm.new_type_error("int.__new__(bool) is not safe, use bool.__new__()".to_owned()) + ); + } let value = if let OptionalArg::Present(val) = options.val_options { if let OptionalArg::Present(base) = options.base { let base = base