FunctionalCollections.jl icon indicating copy to clipboard operation
FunctionalCollections.jl copied to clipboard

PersistentHashMap: `get` with default throws KeyError

Open georgematheos opened this issue 5 years ago • 0 comments

I've been getting some keyerrors when calling get(m, key, 0) where m::PersistentHashMap.

Based on a cursory look at the FunctionalCollections source code, it looks to me like the issue is arising because when checking whether there is a value for the key so it knows whether to return the default, the method get(::PersistentHashMap, key, default) instead checks whether there is a value for any key with the same hash as key. I don't think I understand the source code fully enough to be sure this is the problem, though.

(I'm referring to the following method, defined at PersistentHashMap.jl:149 on my install:)

function Base.get(m::PersistentHashMap, key, default)
    val = get(m.trie, reinterpret(Int, hash(key)), NotFound())
    (val === NotFound()) && return default
    val[key]
end

georgematheos avatar May 24 '20 00:05 georgematheos