Skip to content

Commit

Permalink
Merge pull request #7 from timholy/teh/getindex
Browse files Browse the repository at this point in the history
Fix r[::AbstractUnitRange]
  • Loading branch information
timholy authored Aug 22, 2016
2 parents 5244474 + baa7501 commit a91de1f
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 2 deletions.
7 changes: 7 additions & 0 deletions src/URange.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@ Base.start{T}(r::URange{T}) = oftype(r.start + one(T), r.start)

Base.intersect{T1<:Integer,T2<:Integer}(r::URange{T1}, s::URange{T2}) = URange(max(first(r),first(s)), min(last(r),last(s)))

@inline function Base.getindex{R,S<:Integer}(r::URange{R}, s::AbstractUnitRange{S})
@boundscheck checkbounds(r, s)
f = first(r)
strt = f + first(s) - 1
URange{R}(strt, strt+length(s)-1)
end

Base.promote_rule{T1,T2}(::Type{URange{T1}},::Type{URange{T2}}) =
URange{promote_type(T1,T2)}
Base.convert{T<:Real}(::Type{URange{T}}, r::URange{T}) = r
Expand Down
4 changes: 2 additions & 2 deletions src/ZeroRange.jl
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ Base.done{T}(r::ZeroRange{T}, i) = i == oftype(i, r.len)
convert(T, i-1)
end

@inline function Base.getindex{T}(r::ZeroRange{T}, s::AbstractUnitRange)
@inline function Base.getindex{R,S<:Integer}(r::ZeroRange{R}, s::AbstractUnitRange{S})
@boundscheck checkbounds(r, s)
T(first(s)-1):T(last(s)-1)
R(first(s)-1):R(last(s)-1)
end

Base.intersect(r::ZeroRange, s::ZeroRange) = ZeroRange(min(r.len,s.len))
Expand Down
1 change: 1 addition & 0 deletions test/urange.jl
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ using ModU: URange
@test r[9] == 3
@test_throws BoundsError r[10]
@test_throws BoundsError r[0]
@test r[2:8] === URange(T(-4), T(2))
@test r+1 === -T(4):T(4)
@test 2*r === -T(10):T(2):T(6)
k = -6
Expand Down

0 comments on commit a91de1f

Please sign in to comment.