Skip to content

Commit e03b730

Browse files
twavvJeffBezanson
authored andcommitted
Fix delete! for WeakKeyDict to return the right object (#34203)
1 parent 032dbe3 commit e03b730

File tree

3 files changed

+4
-1
lines changed

3 files changed

+4
-1
lines changed

NEWS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ Standard library changes
6565

6666
* `methods` now accepts passing a module (or a list thereof) to filter methods defined in it ([#33403]).
6767

68+
* `delete!` on `WeakKeyDict`s now returns the `WeakKeyDict` itself instead of the underlying `Dict` used for implementation
69+
6870
#### Libdl
6971

7072
#### LinearAlgebra

base/weakkeydict.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ function get!(default::Callable, wkh::WeakKeyDict{K}, key) where {K}
105105
end
106106
pop!(wkh::WeakKeyDict{K}, key) where {K} = lock(() -> pop!(wkh.ht, key), wkh)
107107
pop!(wkh::WeakKeyDict{K}, key, default) where {K} = lock(() -> pop!(wkh.ht, key, default), wkh)
108-
delete!(wkh::WeakKeyDict, key) = lock(() -> delete!(wkh.ht, key), wkh)
108+
delete!(wkh::WeakKeyDict, key) = (lock(() -> delete!(wkh.ht, key), wkh); wkh)
109109
empty!(wkh::WeakKeyDict) = (lock(() -> empty!(wkh.ht), wkh); wkh)
110110
haskey(wkh::WeakKeyDict{K}, key) where {K} = lock(() -> haskey(wkh.ht, key), wkh)
111111
getindex(wkh::WeakKeyDict{K}, key) where {K} = lock(() -> getindex(wkh.ht, key), wkh)

test/dict.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -856,6 +856,7 @@ Dict(1 => rand(2,3), 'c' => "asdf") # just make sure this does not trigger a dep
856856

857857
wkd = WeakKeyDict(A=>1)
858858
@test delete!(wkd, A) == empty(wkd)
859+
@test delete!(wkd, A) === wkd
859860

860861
# issue #26939
861862
d26939 = WeakKeyDict()

0 commit comments

Comments
 (0)