Skip to content

Commit 904dbc5

Browse files
authored
Fix Vararg warnings (#212)
* Fix Vararg warnings. Closes #208 * Fix test
1 parent f09012e commit 904dbc5

File tree

7 files changed

+29
-17
lines changed

7 files changed

+29
-17
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ComponentArrays"
22
uuid = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66"
33
authors = ["Jonnie Diegelman <47193959+jonniedie@users.noreply.github.com>"]
4-
version = "0.13.12"
4+
version = "0.13.13"
55

66
[deps]
77
ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"

src/array_interface.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,10 @@ function Base.vcat(x::AbstractComponentVecOrMat, y::AbstractComponentVecOrMat)
5959
end
6060
Base.vcat(x::CV...) where {CV<:AdjOrTransComponentArray} = ComponentArray(reduce(vcat, map(y->getdata(y.parent)', x)), getaxes(x[1]))
6161
Base.vcat(x::ComponentVector, args...) = vcat(getdata(x), getdata.(args)...)
62-
Base.vcat(x::ComponentVector, args::Union{Number, UniformScaling, AbstractVecOrMat}...) = vcat(getdata(x), getdata.(args)...)
62+
Base.vcat(x::ComponentVector, args::Vararg{Union{Number, UniformScaling, AbstractVecOrMat}}) = vcat(getdata(x), getdata.(args)...)
6363
Base.vcat(x::ComponentVector, args::Vararg{AbstractVector{T}, N}) where {T,N} = vcat(getdata(x), getdata.(args)...)
6464

65-
function Base.hvcat(row_lengths::NTuple{N,Int}, xs::AbstractComponentVecOrMat...) where {N}
65+
function Base.hvcat(row_lengths::NTuple{N,Int}, xs::Vararg{AbstractComponentVecOrMat}) where {N}
6666
i = 1
6767
idxs = UnitRange{Int}[]
6868
for row_length in row_lengths
@@ -91,28 +91,28 @@ Base.to_index(x::ComponentArray, i) = i
9191

9292
# Get ComponentArray index
9393
Base.@propagate_inbounds Base.getindex(x::ComponentArray, idx::CartesianIndex) = getdata(x)[idx]
94-
Base.@propagate_inbounds Base.getindex(x::ComponentArray, idx::FlatIdx...) = getdata(x)[idx...]
95-
Base.@propagate_inbounds function Base.getindex(x::ComponentArray, idx::FlatOrColonIdx...)
94+
Base.@propagate_inbounds Base.getindex(x::ComponentArray, idx::Vararg{FlatIdx}) = getdata(x)[idx...]
95+
Base.@propagate_inbounds function Base.getindex(x::ComponentArray, idx::Vararg{FlatOrColonIdx})
9696
axs = map((ax, i) -> getindex(ax, i).ax, getaxes(x), idx)
9797
axs = remove_nulls(axs...)
9898
return ComponentArray(getdata(x)[idx...], axs...)
9999
end
100100
Base.@propagate_inbounds Base.getindex(x::ComponentArray, ::Colon) = getdata(x)[:]
101-
Base.@propagate_inbounds Base.getindex(x::ComponentArray, ::Colon...) = x
101+
Base.@propagate_inbounds Base.getindex(x::ComponentArray, ::Colon, ::Vararg{Colon}) = x
102102
@inline Base.getindex(x::ComponentArray, idx...) = getindex(x, toval.(idx)...)
103-
@inline Base.getindex(x::ComponentArray, idx::Val...) = _getindex(getindex, x, idx...)
103+
@inline Base.getindex(x::ComponentArray, idx::Vararg{Val}) = _getindex(getindex, x, idx...)
104104

105105
# Set ComponentArray index
106106
Base.@propagate_inbounds Base.setindex!(x::ComponentArray, v, idx::FlatOrColonIdx...) = setindex!(getdata(x), v, idx...)
107107
Base.@propagate_inbounds Base.setindex!(x::ComponentArray, v, ::Colon) = setindex!(getdata(x), v, :)
108108
@inline Base.setindex!(x::ComponentArray, v, idx...) = setindex!(x, v, toval.(idx)...)
109-
@inline Base.setindex!(x::ComponentArray, v, idx::Val...) = _setindex!(x, v, idx...)
109+
@inline Base.setindex!(x::ComponentArray, v, idx::Vararg{Val}) = _setindex!(x, v, idx...)
110110

111111
# Explicitly view
112-
Base.@propagate_inbounds Base.view(x::ComponentArray, idx::ComponentArrays.FlatIdx...) = view(getdata(x), idx...)
112+
Base.@propagate_inbounds Base.view(x::ComponentArray, idx::Vararg{ComponentArrays.FlatIdx}) = view(getdata(x), idx...)
113113
Base.@propagate_inbounds Base.view(x::ComponentArray, idx...) = _getindex(view, x, toval.(idx)...)
114114

115-
Base.@propagate_inbounds Base.maybeview(x::ComponentArray, idx::ComponentArrays.FlatIdx...) = Base.maybeview(getdata(x), idx...)
115+
Base.@propagate_inbounds Base.maybeview(x::ComponentArray, idx::Vararg{ComponentArrays.FlatIdx}) = Base.maybeview(getdata(x), idx...)
116116
Base.@propagate_inbounds Base.maybeview(x::ComponentArray, idx...) = _getindex(Base.maybeview, x, toval.(idx)...)
117117

118118
# Generated get and set index methods to do all of the heavy lifting in the type domain

src/axis.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ abstract type AbstractAxis{IdxMap} end
77
# struct FlatAxis <: AbstractAxis{NamedTuple()} end
88

99
struct NullAxis <: AbstractAxis{nothing} end
10-
const VarAxes = Tuple{Vararg{<:AbstractAxis}}
10+
const VarAxes = Tuple{Vararg{AbstractAxis}}
1111

1212

1313
"""
@@ -50,7 +50,7 @@ Axis(;kwargs...) = Axis((;kwargs...))
5050
function Axis(symbols::Union{AbstractVector{Symbol}, NTuple{N,Symbol}}) where {N}
5151
return Axis(NamedTuple{(symbols...,)}((eachindex(symbols)...,)))
5252
end
53-
Axis(symbols::Symbol...) = Axis(symbols)
53+
Axis(symbols::Vararg{Symbol}) = Axis(symbols)
5454

5555
const FlatAxis = Axis{NamedTuple()}
5656
const NullorFlatAxis = Union{NullAxis, FlatAxis}
@@ -138,7 +138,7 @@ const NotPartitionedAxis = Union{Axis{IdxMap}, FlatAxis, NullAxis, ShapedAxis{Sh
138138
const NotShapedOrPartitionedAxis = Union{Axis{IdxMap}, FlatAxis, NullAxis} where {IdxMap}
139139

140140

141-
Base.merge(axs::Axis...) = Axis(merge(indexmap.(axs)...))
141+
Base.merge(axs::Vararg{Axis}) = Axis(merge(indexmap.(axs)...))
142142

143143
Base.firstindex(ax::AbstractAxis) = first(viewindex(first(indexmap(ax))))
144144
Base.lastindex(ax::AbstractAxis) = last(viewindex(last(indexmap(ax))))

src/componentarray.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ julia> collect(x)
3131
2
3232
```
3333
"""
34-
struct ComponentArray{T,N,A<:AbstractArray{T,N},Axes<:Tuple{Vararg{<:AbstractAxis}}} <: DenseArray{T,N}
34+
struct ComponentArray{T,N,A<:AbstractArray{T,N},Axes<:Tuple{Vararg{AbstractAxis}}} <: DenseArray{T,N}
3535
data::A
3636
axes::Axes
3737
end

src/similar_convert_copy.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
const CombinedAnyDims = Tuple{<:CombinedAxis, Vararg{<:CombinedOrRegularAxis}}
2-
const AnyCombinedAnyDims = Tuple{<:CombinedOrRegularAxis, <:CombinedAxis, Vararg{<:CombinedOrRegularAxis}}
3-
const CombinedCombinedAnyDims = Tuple{<:CombinedAxis, <:CombinedAxis, Vararg{<:CombinedOrRegularAxis}}
1+
const CombinedAnyDims = Tuple{<:CombinedAxis, Vararg{CombinedOrRegularAxis}}
2+
const AnyCombinedAnyDims = Tuple{<:CombinedOrRegularAxis, <:CombinedAxis, Vararg{CombinedOrRegularAxis}}
3+
const CombinedCombinedAnyDims = Tuple{<:CombinedAxis, <:CombinedAxis, Vararg{CombinedOrRegularAxis}}
44

55
# Similar
66
Base.similar(x::ComponentArray) = ComponentArray(similar(getdata(x)), getaxes(x)...)

test/Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[deps]
22
ArrayInterfaceCore = "30b0a656-2188-435a-8636-2ec0e6a096e2"
3+
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
34
FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41"
45
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
56
Functors = "d9f16b24-f501-4c13-a1f2-28368ffc5196"

test/runtests.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using ComponentArrays
2+
using BenchmarkTools
23
using ForwardDiff
34
using InvertedIndices
45
using LabelledArrays
@@ -37,6 +38,16 @@ _a, _b, _c = Val.((:a, :b, :c))
3738

3839

3940
## Tests
41+
@testset "Allocations and Inference" begin
42+
@test @ballocated($ca.c.a.a) == 0
43+
@test @ballocated(@view $ca[:c]) == 0
44+
@test @ballocated(@view $cmat[:c, :c]) == 0
45+
46+
f = (out, x) -> (out .= x .+ x)
47+
out = deepcopy(ca)
48+
@test @ballocated($f($out, $ca)) == 0
49+
end
50+
4051
@testset "Utilities" begin
4152
@test_deprecated ComponentArrays.getval.(fastindices(:a, :b, :c)) == (:a, :b, :c)
4253
@test_deprecated fastindices(:a, Val(:b)) == (Val(:a), Val(:b))

0 commit comments

Comments
 (0)