diff --git a/Lib/test/test_with.py b/Lib/test/test_with.py index 117fb4630..b1d7a15b5 100644 --- a/Lib/test/test_with.py +++ b/Lib/test/test_with.py @@ -119,8 +119,6 @@ class FailureTestCase(unittest.TestCase): with foo: pass self.assertRaisesRegex(AttributeError, '__enter__', fooLacksEnter) - # TODO: RUSTPYTHON - @unittest.expectedFailure def testEnterAttributeError2(self): class LacksEnterAndExit(object): pass diff --git a/vm/src/frame.rs b/vm/src/frame.rs index 5f3b5f7e2..31579ab0d 100644 --- a/vm/src/frame.rs +++ b/vm/src/frame.rs @@ -775,11 +775,13 @@ impl ExecutingFrame<'_> { } bytecode::Instruction::SetupWith { end } => { let context_manager = self.pop_value(); + let enter_res = vm.call_special_method( + context_manager.clone(), + identifier!(vm, __enter__), + (), + )?; let exit = context_manager.get_attr(identifier!(vm, __exit__), vm)?; self.push_value(exit); - // Call enter: - let enter_res = - vm.call_special_method(context_manager, identifier!(vm, __enter__), ())?; self.push_block(BlockType::Finally { handler: *end }); self.push_value(enter_res); Ok(None)