diff --git a/src/utils.jl b/src/utils.jl index c4487140..a47577be 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -93,12 +93,14 @@ recursive_one(a::T) where {T<:Number} = one(a) recursive_bottom_eltype(a) = a == eltype(a) ? a : recursive_bottom_eltype(eltype(a)) recursive_unitless_bottom_eltype(a) = recursive_unitless_bottom_eltype(typeof(a)) +recursive_unitless_bottom_eltype(a::Type{Any}) = Any recursive_unitless_bottom_eltype(a::Type{T}) where T = recursive_unitless_bottom_eltype(eltype(a)) recursive_unitless_bottom_eltype(a::Type{T}) where {T<:AbstractArray} = recursive_unitless_bottom_eltype(eltype(a)) recursive_unitless_bottom_eltype(a::Type{T}) where {T<:Number} = eltype(a) == Number ? Float64 : typeof(one(eltype(a))) recursive_unitless_bottom_eltype(::Type{<:Enum{T}}) where T = T recursive_unitless_eltype(a) = recursive_unitless_eltype(eltype(a)) +recursive_unitless_eltype(a::Type{Any}) = Any recursive_unitless_eltype(a::Type{T}) where {T<:StaticArray} = similar_type(a,recursive_unitless_eltype(eltype(a))) recursive_unitless_eltype(a::Type{T}) where {T<:Array} = Array{recursive_unitless_eltype(eltype(a)),ndims(a)} recursive_unitless_eltype(a::Type{T}) where {T<:Number} = typeof(one(eltype(a)))