It is kind of weird to me that Vector{Float64} is promoted to Vector{Any}. It doesn’t seem like there’d be a performance benefit to allocating a new array with an abstract element type (of course, promotion is easy to get around: Any[a, b]). Besides, it doesn’t look like promoting parameters happen in general:
mutable struct X{T}
y::T
end
a = X(1.5)
b = X{Any}(1)
f = [a,b]
#=
2-element Vector{X}:
X{Float64}(1.5)
X{Any}(1)
=#