@@ -105,23 +105,23 @@ unsafe_length_one_to(lst::Int) = lst
105105unsafe_length_one_to (:: StaticInt{L} ) where {L} = lst
106106
107107Base. @propagate_inbounds function Base. getindex (r:: OptionallyStaticUnitRange , i:: Integer )
108- if known_first (r) === oneunit (r )
108+ if known_first (r) === oneunit (eltype (r) )
109109 return get_index_one_to (r, i)
110110 else
111111 return get_index_unit_range (r, i)
112112 end
113113end
114114
115115@inline function get_index_one_to (r, i)
116- @boundscheck if ((i > 0 ) & (i <= last (r)))
116+ @boundscheck if ((i < 1 ) || (i > last (r)))
117117 throw (BoundsError (r, i))
118118 end
119119 return convert (eltype (r), i)
120120end
121121
122122@inline function get_index_unit_range (r, i)
123123 val = first (r) + (i - 1 )
124- @boundscheck if i > 0 && val <= last (r) && val >= first (r)
124+ @boundscheck if (i < 1 ) || ( val > last (r) && val < first (r) )
125125 throw (BoundsError (r, i))
126126 end
127127 return convert (eltype (r), val)
@@ -169,15 +169,15 @@ function Base.length(r::OptionallyStaticUnitRange)
169169 if isempty (r)
170170 return 0
171171 else
172- if known_first (r) === 0
172+ if known_first (r) === 1
173173 return unsafe_length_one_to (last (r))
174174 else
175175 return unsafe_length_unit_range (first (r), last (r))
176176 end
177177 end
178178end
179179
180- unsafe_length_unit_range (start:: Integer , stop:: Integer ) = Int (start - stop + 1 )
180+ unsafe_length_unit_range (start:: Integer , stop:: Integer ) = Int ((stop - start) + 1 )
181181
182182"""
183183 indices(x[, d])
0 commit comments