diff --git a/src/structarray.jl b/src/structarray.jl index 0f13ad4..187850d 100644 --- a/src/structarray.jl +++ b/src/structarray.jl @@ -290,13 +290,14 @@ for type in ( :(Tuple{Union{Integer, AbstractUnitRange}, Vararg{Union{Integer, AbstractUnitRange}}}), # disambiguation with Base :(Tuple{Union{Integer, Base.OneTo}, Vararg{Union{Integer, Base.OneTo}}}), + :(Tuple{Integer, Vararg{Integer}}), ) @eval function Base.similar(::Type{<:StructArray{T, N, C}}, sz::$(type)) where {T, N, C} return buildfromschema(typ -> similar(typ, sz), T, C) end - @eval function Base.similar(s::StructArray, S::Type, sz::$(type)) - return _similar(s, S, sz) + @eval function Base.similar(s::StructArray, ::Type{T}, sz::$(type)) where {T} + return _similar(s, T, sz) end end @@ -471,8 +472,9 @@ for type in ( # mimic OffsetArrays signature :(Tuple{Union{Integer, AbstractUnitRange, Colon}, Vararg{Union{Integer, AbstractUnitRange, Colon}}}), # disambiguation with Base + :(Tuple{Integer, Vararg{Integer}}), :(Tuple{Union{Integer, Base.OneTo}, Vararg{Union{Integer, Base.OneTo}}}), - :(Tuple{Vararg{Union{Colon, Integer}}}), + :(Tuple{Union{Colon, Integer}, Vararg{Union{Colon, Integer}}}), :(Tuple{Vararg{Union{Colon, Int}}}), :(Tuple{Colon}), ) diff --git a/test/runtests.jl b/test/runtests.jl index 0a57817..64deb02 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -396,6 +396,10 @@ end @test s isa Matrix{Float32} @test size(s) == (2, 2) + s = similar(t, Float32, (Int8(2), 2)) + @test s isa Matrix{Float32} + @test size(s) == (2, 2) + s = similar(t, Float32, 0:1, 2) @test s isa OffsetMatrix{Float32, Matrix{Float32}} @test axes(s) == (0:1, 1:2) @@ -1043,6 +1047,8 @@ end @test rs.a == [1 3; 2 4] @test rs.b == ["a" "c"; "b" "d"] + @test reshape(s, (Int8(2), 2)) == reshape(s, (2, 2)) + rs = reshape(s, (:,)) @test rs.a == s.a @test rs.b == s.b @@ -1630,5 +1636,5 @@ end end @testset "project quality" begin - Aqua.test_all(StructArrays, ambiguities=(; broken=true)) + Aqua.test_all(StructArrays) end