diff --git a/base/abstractarray.jl b/base/abstractarray.jl index 3773502f0cd26..fd615a535cb80 100644 --- a/base/abstractarray.jl +++ b/base/abstractarray.jl @@ -387,7 +387,7 @@ function eachindex(A::AbstractArray, B::AbstractArray...) @inline eachindex(IndexStyle(A,B...), A, B...) end -eachindex(::IndexLinear, A::Union{Array, Memory}) = unchecked_oneto(length(A)) +eachindex(::IndexLinear, A::Union{Array, Memory}) = unchecked_oneto(length(A)::Int) eachindex(::IndexLinear, A::AbstractArray) = (@inline; oneto(length(A))) eachindex(::IndexLinear, A::AbstractVector) = (@inline; axes1(A)) function eachindex(::IndexLinear, A::AbstractArray, B::AbstractArray...) diff --git a/test/arrayops.jl b/test/arrayops.jl index f9c592e672973..007dc87fd5a8d 100644 --- a/test/arrayops.jl +++ b/test/arrayops.jl @@ -2654,6 +2654,13 @@ let A = zeros(Int, 2, 2), B = zeros(Float64, 2, 2) end end +@testset "return type inference of linear `eachindex` for `Array` and `Memory`" begin + f = a -> eachindex(IndexLinear(), a) + for typ in (Array, Memory, Union{Array, Memory}) + @test isconcretetype(Base.infer_return_type(f, Tuple{typ})) + end +end + # issue #14482 @inferred map(Int8, Int[0])