Skip to content

Commit c29a9e2

Browse files
reshape with Val (#907)
* reshape with Val * check type inference * Require at least one SOneTo in rdims Co-authored-by: Mateusz Baran <mateuszbaran89@gmail.com> * version bump to v1.2.2 Co-authored-by: Mateusz Baran <mateuszbaran89@gmail.com>
1 parent 5d0802e commit c29a9e2

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "StaticArrays"
22
uuid = "90137ffa-7385-5640-81b9-e52037218182"
3-
version = "1.2.1"
3+
version = "1.2.2"
44

55
[deps]
66
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"

src/abstractarray.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,9 @@ end
204204

205205
reshape(a::Array, ::Size{S}) where {S} = SizedArray{Tuple{S...}}(a)
206206

207+
Base.rdims(out::Val{N}, inds::Tuple{SOneTo, Vararg{SOneTo}}) where {N} = Base.rdims(ntuple(i -> SOneTo(1), Val(N)), inds)
208+
Base.rdims(out::Tuple{Any}, inds::Tuple{SOneTo, Vararg{SOneTo}}) = (SOneTo(Base.rdims_trailing(inds...)),)
209+
207210
@inline vec(a::StaticArray) = reshape(a, Size(prod(Size(typeof(a)))))
208211

209212
@inline copy(a::StaticArray) = typeof(a)(Tuple(a))

test/SArray.jl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,22 @@
151151
@test (@inferred view(m, 1, 1, CartesianIndex(1))) === Scalar(m[1, 1])
152152

153153
@test reverse(m) == reverse(reverse(collect(m), dims = 2), dims = 1)
154+
155+
m1 = reshape(m, Val(1))
156+
157+
m1 = @inferred reshape(m, Val(1))
158+
159+
@test m1 isa SVector
160+
@test all(((x, y),) -> isequal(x,y), zip(m, m1))
161+
162+
m2 = @inferred reshape(m, Val(2))
163+
@test m2 === m
164+
165+
m3 = @inferred reshape(m, Val(3))
166+
@test eltype(m3) == eltype(m)
167+
@test ndims(m3) == 3
168+
@test size(m3) == (size(m)..., 1)
169+
@test all(((x, y),) -> isequal(x,y), zip(m, m3))
154170
end
155171

156172
@testset "promotion" begin

0 commit comments

Comments
 (0)