@@ -105,23 +105,23 @@ unsafe_length_one_to(lst::Int) = lst
105
105
unsafe_length_one_to (:: StaticInt{L} ) where {L} = lst
106
106
107
107
Base. @propagate_inbounds function Base. getindex (r:: OptionallyStaticUnitRange , i:: Integer )
108
- if known_first (r) === oneunit (r )
108
+ if known_first (r) === oneunit (eltype (r) )
109
109
return get_index_one_to (r, i)
110
110
else
111
111
return get_index_unit_range (r, i)
112
112
end
113
113
end
114
114
115
115
@inline function get_index_one_to (r, i)
116
- @boundscheck if ((i > 0 ) & (i <= last (r)))
116
+ @boundscheck if ((i < 1 ) || (i > last (r)))
117
117
throw (BoundsError (r, i))
118
118
end
119
119
return convert (eltype (r), i)
120
120
end
121
121
122
122
@inline function get_index_unit_range (r, i)
123
123
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) )
125
125
throw (BoundsError (r, i))
126
126
end
127
127
return convert (eltype (r), val)
@@ -169,15 +169,15 @@ function Base.length(r::OptionallyStaticUnitRange)
169
169
if isempty (r)
170
170
return 0
171
171
else
172
- if known_first (r) === 0
172
+ if known_first (r) === 1
173
173
return unsafe_length_one_to (last (r))
174
174
else
175
175
return unsafe_length_unit_range (first (r), last (r))
176
176
end
177
177
end
178
178
end
179
179
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 )
181
181
182
182
"""
183
183
indices(x[, d])
0 commit comments