diff --git a/src/ordered_robin_dict.jl b/src/ordered_robin_dict.jl index 917e1a84b..141a5f757 100644 --- a/src/ordered_robin_dict.jl +++ b/src/ordered_robin_dict.jl @@ -132,7 +132,7 @@ function Base.setindex!(h::OrderedRobinDict{K, V}, v0, key0) where {K,V} else @assert haskey(h, key0) @inbounds orig_v = h.vals[index] - (orig_v != v0) && (@inbounds h.vals[index] = v0) + !isequal(orig_v, v0) && (@inbounds h.vals[index] = v0) end check_for_rehash(h) && rehash!(h) @@ -305,8 +305,8 @@ julia> haskey(D, 'c') false ``` """ -Base.haskey(h::OrderedRobinDict, key) = (get(h.dict, key, -2) > 0) -Base.in(key, v::Base.KeySet{K,T}) where {K,T<:OrderedRobinDict{K}} = (get(v.dict, key, -1) >= 0) +Base.haskey(h::OrderedRobinDict, key) = (get(h.dict, key, -1) > 0) +Base.in(key, v::Base.KeySet{K,T}) where {K,T<:OrderedRobinDict{K}} = (get(v.dict.dict, key, -1) >= 0) """ getkey(collection, key, default) diff --git a/test/runtests.jl b/test/runtests.jl index 33927d2a4..d44fe5bc5 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -8,7 +8,8 @@ import DataStructures: IntSet @test [] == detect_ambiguities(Core, DataStructures) @test [] == detect_ambiguities(Base, DataStructures) -tests = ["deprecations", +tests = [ + "deprecations", "int_set", "sparse_int_set", "deque", diff --git a/test/test_ordered_robin_dict.jl b/test/test_ordered_robin_dict.jl index 2a78fc7aa..79efa6572 100644 --- a/test/test_ordered_robin_dict.jl +++ b/test/test_ordered_robin_dict.jl @@ -78,6 +78,13 @@ @test od60[14] == 15 end + @testset "Fixes issue 857" begin + h = OrderedRobinDict{Any,Any}([("a", missing), ("b", -2)]) + @test 5 == (h["a"] = 5) + @test "b" in keys(h) + @test haskey(h,"b") + end + # ############################# # Copied and modified from Base/test/dict.jl