Skip to content

Commit 5015445

Browse files
authored
Resolve ambiguities in #231 (#230)
1 parent dd57233 commit 5015445

File tree

3 files changed

+16
-15
lines changed

3 files changed

+16
-15
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ jobs:
1919
- '1.8'
2020
- '1.9'
2121
- '1' # Leave this line unchanged. '1' will automatically expand to the latest stable 1.x release of Julia.
22+
- '1.10.0-beta3'
2223
os:
2324
- ubuntu-latest
2425
arch:

src/array_interface.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ second_axis(::ComponentVector) = FlatAxis()
3333

3434
# Are all these methods necessary?
3535
# TODO: See what we can reduce down to without getting ambiguity errors
36-
Base.vcat(x::ComponentVector, y::AbstractVector) = vcat(getdata(x), y)
37-
Base.vcat(x::AbstractVector, y::ComponentVector) = vcat(x, getdata(y))
38-
function Base.vcat(x::ComponentVector, y::ComponentVector)
36+
Base.vcat(x::ComponentVector{<:Number}, y::AbstractVector{<:Number}) = vcat(getdata(x), y)
37+
Base.vcat(x::AbstractVector{<:Number}, y::ComponentVector{<:Number}) = vcat(x, getdata(y))
38+
function Base.vcat(x::ComponentVector{<:Number}, y::ComponentVector{<:Number})
3939
if reduce((accum, key) -> accum || (key in keys(x)), keys(y); init=false)
4040
return vcat(getdata(x), getdata(y))
4141
else
@@ -46,7 +46,7 @@ function Base.vcat(x::ComponentVector, y::ComponentVector)
4646
return ComponentArray(vcat(data_x, data_y), Axis((;idxmap_x..., idxmap_y...)))
4747
end
4848
end
49-
function Base.vcat(x::AbstractComponentVecOrMat, y::AbstractComponentVecOrMat)
49+
function Base.vcat(x::AbstractComponentVecOrMat{<:Number}, y::AbstractComponentVecOrMat{<:Number})
5050
ax_x, ax_y = getindex.(getaxes.((x, y)), 1)
5151
if reduce((accum, key) -> accum || (key in keys(ax_x)), keys(ax_y); init=false) || getaxes(x)[2:end] != getaxes(y)[2:end]
5252
return vcat(getdata(x), getdata(y))
@@ -57,10 +57,10 @@ function Base.vcat(x::AbstractComponentVecOrMat, y::AbstractComponentVecOrMat)
5757
return ComponentArray(vcat(data_x, data_y), Axis((;idxmap_x..., idxmap_y...)), getaxes(x)[2:end]...)
5858
end
5959
end
60-
Base.vcat(x::CV...) where {CV<:AdjOrTransComponentArray} = ComponentArray(reduce(vcat, map(y->getdata(y.parent)', x)), getaxes(x[1]))
61-
Base.vcat(x::ComponentVector, args...) = vcat(getdata(x), getdata.(args)...)
62-
Base.vcat(x::ComponentVector, args::Vararg{Union{Number, UniformScaling, AbstractVecOrMat}}) = vcat(getdata(x), getdata.(args)...)
63-
Base.vcat(x::ComponentVector, args::Vararg{AbstractVector{T}, N}) where {T,N} = vcat(getdata(x), getdata.(args)...)
60+
Base.vcat(x::CV...) where {CV<:AdjOrTransComponentArray{<:Number}} = ComponentArray(reduce(vcat, map(y->getdata(y.parent)', x)), getaxes(x[1]))
61+
Base.vcat(x::ComponentVector{<:Number}, args...) = vcat(getdata(x), getdata.(args)...)
62+
Base.vcat(x::ComponentVector{<:Number}, args::Vararg{Union{Number, UniformScaling, AbstractVecOrMat{<:Number}}}) = vcat(getdata(x), getdata.(args)...)
63+
Base.vcat(x::ComponentVector{<:Number}, args::Vararg{AbstractVector{T}, N}) where {T<:Number,N} = vcat(getdata(x), getdata.(args)...)
6464

6565
function Base.hvcat(row_lengths::NTuple{N,Int}, xs::Vararg{AbstractComponentVecOrMat}) where {N}
6666
i = 1
@@ -147,4 +147,4 @@ end
147147
Base.stride(x::ComponentArray, k) = stride(getdata(x), k)
148148
Base.stride(x::ComponentArray, k::Int64) = stride(getdata(x), k)
149149

150-
ArrayInterface.parent_type(::Type{ComponentArray{T,N,A,Axes}}) where {T,N,A,Axes} = A
150+
ArrayInterface.parent_type(::Type{ComponentArray{T,N,A,Axes}}) where {T,N,A,Axes} = A

src/componentarray.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,12 @@ const AdjOrTransComponentArray{T, A} = Union{Adjoint{T, A}, Transpose{T, A}} whe
124124
const AdjOrTransComponentVector{T} = Union{Adjoint{T, A}, Transpose{T, A}} where A<:ComponentVector
125125
const AdjOrTransComponentMatrix{T} = Union{Adjoint{T, A}, Transpose{T, A}} where A<:ComponentMatrix
126126

127-
const ComponentVecOrMat = Union{ComponentVector, ComponentMatrix}
128-
const AdjOrTransComponentVecOrMat = AdjOrTrans{T, <:ComponentVecOrMat} where T
129-
const AbstractComponentArray = Union{ComponentArray, AdjOrTransComponentArray}
130-
const AbstractComponentVecOrMat = Union{ComponentVecOrMat, AdjOrTransComponentVecOrMat}
131-
const AbstractComponentVector = Union{ComponentVector, AdjOrTransComponentVector}
132-
const AbstractComponentMatrix = Union{ComponentMatrix, AdjOrTransComponentMatrix}
127+
const ComponentVecOrMat{T} = Union{ComponentVector{T}, ComponentMatrix{T}} where{T}
128+
const AdjOrTransComponentVecOrMat{T} = AdjOrTrans{T, <:ComponentVecOrMat} where {T}
129+
const AbstractComponentArray{T} = Union{ComponentArray{T}, AdjOrTransComponentArray{T}} where{T}
130+
const AbstractComponentVecOrMat{T} = Union{ComponentVecOrMat{T}, AdjOrTransComponentVecOrMat{T}} where{T}
131+
const AbstractComponentVector{T} = Union{ComponentVector{T}, AdjOrTransComponentVector{T}} where{T}
132+
const AbstractComponentMatrix{T} = Union{ComponentMatrix{T}, AdjOrTransComponentMatrix{T}} where{T}
133133

134134

135135
## Constructor helpers

0 commit comments

Comments
 (0)