diff --git a/src/DataStructures.jl b/src/DataStructures.jl index 0e501c4ad..6e77e1474 100644 --- a/src/DataStructures.jl +++ b/src/DataStructures.jl @@ -76,9 +76,12 @@ module DataStructures @deprecate queue Queue @deprecate add! push! - @deprecate OrderedSet(a, b...) OrderedSet({a, b...}) + @deprecate HashDict{K,V}(ks::AbstractArray{K}, vs::AbstractArray{V}) HashDict{K,V,Unordered}(ks,vs) + @deprecate HashDict(ks, vs) HashDict{Any,Any,Unordered}(ks, vs) + @deprecate OrderedDict(ks, vs) OrderedDict(zip(ks,vs)) @deprecate OrderedDict{K,V}(ks::AbstractArray{K}, vs::AbstractArray{V}) OrderedDict{K,V}(zip(ks,vs)) @deprecate OrderedDict{K,V}(::Type{K},::Type{V}) OrderedDict{K,V}() + @deprecate OrderedSet(a, b...) OrderedSet({a, b...}) end diff --git a/src/hashdict.jl b/src/hashdict.jl index 39d473dc5..1ed26f4a1 100644 --- a/src/hashdict.jl +++ b/src/hashdict.jl @@ -55,12 +55,23 @@ type HashDict{K,V,O<:Union(Ordered,Unordered)} <: Associative{K,V} end HashDict() = HashDict{Any,Any,Unordered}() +HashDict(kv::()) = HashDict() +HashDict(kv) = hash_dict_with_eltype(kv, eltype(kv)) + +hash_dict_with_eltype{K,V}(kv, ::Type{(K,V)}) = HashDict{K,V}(kv) +hash_dict_with_eltype(kv, t) = HashDict{Any,Any}(kv) -HashDict{K,V}(ks::AbstractArray{K}, vs::AbstractArray{V}) = HashDict{K,V,Unordered}(ks,vs) -HashDict(ks, vs) = HashDict{Any,Any,Unordered}(ks, vs) HashDict{K,V}(kv::AbstractArray{(K,V)}) = HashDict{K,V,Unordered}(kv) if VERSION >= v"0.4.0-dev+980" HashDict{K,V}(ps::Pair{K,V}...) = HashDict{K,V,Unordered}(ps...) + HashDict{K,V}(kv::(Pair{K,V}...,)) = HashDict{K,V}(kv) + HashDict{K} (kv::(Pair{K}...,)) = HashDict{K,Any}(kv) + HashDict{V} (kv::(Pair{TypeVar(:K),V}...,)) = HashDict{Any,V}(kv) + HashDict (kv::(Pair...,)) = HashDict{Any,Any}(kv) + + HashDict{K,V}(kv::AbstractArray{Pair{K,V}}) = HashDict{K,V}(kv) + + hash_dict_with_eltype{K,V}(kv, ::Type{Pair{K,V}}) = HashDict{K,V}(kv) end # TODO: these could be more efficient diff --git a/src/ordereddict.jl b/src/ordereddict.jl index 624704e88..ccaa78e78 100644 --- a/src/ordereddict.jl +++ b/src/ordereddict.jl @@ -28,10 +28,10 @@ end OrderedDict() = OrderedDict{Any,Any}() OrderedDict(kv::()) = OrderedDict() -OrderedDict(kv) = ordered_dictwith_eltype(kv, eltype(kv)) +OrderedDict(kv) = ordered_dict_with_eltype(kv, eltype(kv)) -ordered_dictwith_eltype{K,V}(kv, ::Type{(K,V)}) = OrderedDict{K,V}(kv) -ordered_dictwith_eltype(kv, t) = OrderedDict{Any,Any}(kv) +ordered_dict_with_eltype{K,V}(kv, ::Type{(K,V)}) = OrderedDict{K,V}(kv) +ordered_dict_with_eltype(kv, t) = OrderedDict{Any,Any}(kv) if VERSION >= v"0.4.0-dev+980" OrderedDict{K,V}(ps::Pair{K,V}...) = OrderedDict{K,V}(ps...) @@ -42,7 +42,7 @@ if VERSION >= v"0.4.0-dev+980" OrderedDict{K,V}(kv::AbstractArray{Pair{K,V}}) = OrderedDict{K,V}(kv) - ordered_dictwith_eltype{K,V}(kv, ::Type{Pair{K,V}}) = OrderedDict{K,V}(kv) + ordered_dict_with_eltype{K,V}(kv, ::Type{Pair{K,V}}) = OrderedDict{K,V}(kv) end copy(d::OrderedDict) = OrderedDict(d)