From 7cc2a5431f34bbb186f621ff97cc49cc36aeefb0 Mon Sep 17 00:00:00 2001 From: Snowapril Date: Sat, 14 Aug 2021 21:56:22 +0900 Subject: [PATCH] Fix frozenset copy to return self (#2883) Fix frozenset copy to return zelf if called on frozenset instance --- Lib/test/test_set.py | 2 -- vm/src/builtins/set.rs | 11 ++++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Lib/test/test_set.py b/Lib/test/test_set.py index 287cb77d5..b34e6e262 100644 --- a/Lib/test/test_set.py +++ b/Lib/test/test_set.py @@ -724,8 +724,6 @@ class TestFrozenSet(TestJointOps, unittest.TestCase): results.add(hash(self.thetype(seq))) self.assertEqual(len(results), 1) - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_copy(self): dup = self.s.copy() self.assertEqual(id(self.s), id(dup)) diff --git a/vm/src/builtins/set.rs b/vm/src/builtins/set.rs index 3ed14f6f9..e05b5ce24 100644 --- a/vm/src/builtins/set.rs +++ b/vm/src/builtins/set.rs @@ -652,9 +652,14 @@ impl PyFrozenSet { } #[pymethod] - fn copy(&self) -> Self { - Self { - inner: self.inner.copy(), + fn copy(zelf: PyRef, vm: &VirtualMachine) -> PyRef { + if zelf.class().is(&vm.ctx.types.frozenset_type) { + zelf + } else { + Self { + inner: zelf.inner.copy(), + } + .into_ref(vm) } }