No, promote_type is working. I think this is intended behavior: if you construct a Dict with keys and/or values of different types, then it will default to using Any. For example:
julia> Dict(3=>4, 3.5=>4.5) Dict{Any,Any} with 2 entries: 3 => 4 3.5 => 4.5 This was true in Julia 0.4 as well. In Julia 0.5, now that functions have their own types, Dict(sin=>sin, cos=>cos) also produces Any. I wonder whether the Dict constructor should use the typejoin of its entries instead?