Skip to content

Commit 740aeed

Browse files
authored
Merge pull request RustPython#5405 from crazymerlyn/fix-set-intersection-update
Fix set intersection_update implementation
2 parents b5c1fd9 + b36c95b commit 740aeed

File tree

2 files changed

+3
-11
lines changed

2 files changed

+3
-11
lines changed

Lib/test/test_weakset.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,8 +322,6 @@ def test_ixor(self):
322322
else:
323323
self.assertNotIn(c, self.s)
324324

325-
# TODO: RUSTPYTHON
326-
@unittest.expectedFailure
327325
def test_inplace_on_self(self):
328326
t = self.s.copy()
329327
t |= t

vm/src/builtins/set.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -391,16 +391,10 @@ impl PySetInner {
391391
others: impl std::iter::Iterator<Item = ArgIterable>,
392392
vm: &VirtualMachine,
393393
) -> PyResult<()> {
394-
let mut temp_inner = self.copy();
394+
let temp_inner = self.fold_op(others, PySetInner::intersection, vm)?;
395395
self.clear();
396-
for iterable in others {
397-
for item in iterable.iter(vm)? {
398-
let obj = item?;
399-
if temp_inner.contains(&obj, vm)? {
400-
self.add(obj, vm)?;
401-
}
402-
}
403-
temp_inner = self.copy()
396+
for obj in temp_inner.elements() {
397+
self.add(obj, vm)?;
404398
}
405399
Ok(())
406400
}

0 commit comments

Comments
 (0)