Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion base/range.jl
Original file line number Diff line number Diff line change
Expand Up @@ -773,7 +773,7 @@ let bigints = Union{Int, UInt, Int64, UInt64, Int128, UInt128}
else
a = div(unsigned(diff), s) % typeof(diff)
end
return Integer(a) + oneunit(a)
return convert(T, a) + oneunit(T)
end
function checked_length(r::OrdinalRange{T}) where T<:bigints
s = step(r)
Expand Down
4 changes: 4 additions & 0 deletions test/ranges.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2031,6 +2031,10 @@ end
@test typeof(step(r)) === Int8
end

@testset "length(StepRange()) type stability" begin
typeof(length(StepRange(1,Int128(1),1))) == typeof(length(StepRange(1,Int128(1),0)))
end

@testset "LinRange eltype for element types that wrap integers" begin
struct RealWrapper{T <: Real} <: Real
x :: T
Expand Down