diff --git a/src/arraymath.jl b/src/arraymath.jl index 4410e3d1..8d9d75a3 100644 --- a/src/arraymath.jl +++ b/src/arraymath.jl @@ -1,4 +1,4 @@ -@inline zeros(::Type{SA}) where {SA <: StaticArray{<:Tuple}} = zeros(Base.typeintersect(SA, AbstractArray{Float64})) +@inline zeros(::Type{SA}) where {SA <: StaticArray{<:Tuple}} = zeros(typeintersect(SA, AbstractArray{Float64})) @inline zeros(::Type{SA}) where {SA <: StaticArray{<:Tuple, T}} where T = _zeros(Size(SA), SA) @generated function _zeros(::Size{s}, ::Type{SA}) where {s, SA <: StaticArray} T = eltype(SA) @@ -16,7 +16,7 @@ end end -@inline ones(::Type{SA}) where {SA <: StaticArray{<:Tuple}} = ones(Base.typeintersect(SA, AbstractArray{Float64})) +@inline ones(::Type{SA}) where {SA <: StaticArray{<:Tuple}} = ones(typeintersect(SA, AbstractArray{Float64})) @inline ones(::Type{SA}) where {SA <: StaticArray{<:Tuple, T}} where T = _ones(Size(SA), SA) @generated function _ones(::Size{s}, ::Type{SA}) where {s, SA <: StaticArray} T = eltype(SA) diff --git a/src/convert.jl b/src/convert.jl index c81361be..bcf5a817 100644 --- a/src/convert.jl +++ b/src/convert.jl @@ -112,7 +112,7 @@ function adapt_size(::Type{SA}, x) where {SA<:StaticArray} _no_precise_size(SA, x) end end - SA′ = Base.typeintersect(SA, StaticArrayNoEltype{SZ,tuple_length(SZ)}) + SA′ = typeintersect(SA, StaticArrayNoEltype{SZ,tuple_length(SZ)}) SA′ === Union{} && _no_precise_size(SA, x) return SA′ end @@ -139,7 +139,7 @@ function adapt_eltype(::Type{SA}, x) where {SA<:StaticArray} else eltype(x) end - return Base.typeintersect(SA, AbstractArray{T}) + return typeintersect(SA, AbstractArray{T}) end need_rewrap(::Type{<:StaticArray}, x) = false diff --git a/src/util.jl b/src/util.jl index 725ac0cc..a26e8548 100644 --- a/src/util.jl +++ b/src/util.jl @@ -4,6 +4,12 @@ else const var"@_inline_meta" = Base.var"@inline" end +# Julia 1.9 removed the `@pure` annotation in favor off Concrete-Eval +# This behaves unfavorable with `julia --check-bounds=no` +Base.@pure function typeintersect(@nospecialize(a),@nospecialize(b)) + Base.typeintersect(a,b) +end + # For convenience TupleN{T,N} = NTuple{N,T}