Skip to content

Commit eb95d65

Browse files
committed
Inline blocksizes for better type-inference
1 parent 1e5feaa commit eb95d65

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

src/blocks.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ julia> blocksizes(A,2)
125125
```
126126
"""
127127
blocksizes(A::AbstractArray) = BlockSizes(A)
128-
blocksizes(A::AbstractArray, d::Integer) = blocklengths(axes(A, d))
128+
@inline blocksizes(A::AbstractArray, d::Integer) = blocklengths(axes(A, d))
129129

130130
struct BlockSizes{T,N,A<:AbstractArray{<:Any,N}} <: AbstractArray{T,N}
131131
array::A

test/test_blocks.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,14 @@ end
127127
@test blocksizes(A, 1) == [2, 3]
128128
@test blocksizes(A, 2) == [3, 1]
129129
end
130+
131+
@testset "Inference: issue #425" begin
132+
x = BlockedArray(rand(4, 4), [2, 2], [2, 2])
133+
bs1 = @inferred (x -> blocksizes(x, 1))(x)
134+
@test bs1 == [2,2]
135+
bs4 = @inferred (x -> blocksizes(x, 4))(x)
136+
@test bs4 == 1:1
137+
end
130138
end
131139

132140
end # module

0 commit comments

Comments
 (0)