Skip to content

Commit 83ab52e

Browse files
authored
More broadcast for IdOffsetRange that preserve type (#300)
* more IOR broadcasting * version bump to v1.12.2
1 parent 69783ab commit 83ab52e

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "OffsetArrays"
22
uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881"
3-
version = "1.12.1"
3+
version = "1.12.2"
44

55
[deps]
66
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"

src/axes.jl

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -246,12 +246,14 @@ for R in [:IIUR, :IdOffsetRange]
246246
end
247247

248248
# offset-preserve broadcasting
249-
Broadcast.broadcasted(::Base.Broadcast.DefaultArrayStyle{1}, ::typeof(-), r::IdOffsetRange{T}, x::Integer) where T =
250-
IdOffsetRange{T}(r.parent .- x, r.offset)
251-
Broadcast.broadcasted(::Base.Broadcast.DefaultArrayStyle{1}, ::typeof(+), r::IdOffsetRange{T}, x::Integer) where T =
252-
IdOffsetRange{T}(r.parent .+ x, r.offset)
253-
Broadcast.broadcasted(::Base.Broadcast.DefaultArrayStyle{1}, ::typeof(+), x::Integer, r::IdOffsetRange{T}) where T =
254-
IdOffsetRange{T}(x .+ r.parent, r.offset)
249+
Broadcast.broadcasted(::Base.Broadcast.DefaultArrayStyle{1}, ::typeof(-), r::IdOffsetRange, x::Integer) =
250+
IdOffsetRange(r.parent .- x, r.offset)
251+
Broadcast.broadcasted(::Base.Broadcast.DefaultArrayStyle{1}, ::typeof(+), r::IdOffsetRange, x::Integer) =
252+
IdOffsetRange(r.parent .+ x, r.offset)
253+
Broadcast.broadcasted(::Base.Broadcast.DefaultArrayStyle{1}, ::typeof(+), x::Integer, r::IdOffsetRange) =
254+
IdOffsetRange(x .+ r.parent, r.offset)
255+
Broadcast.broadcasted(::Base.Broadcast.DefaultArrayStyle{1}, ::typeof(big), r::IdOffsetRange) =
256+
IdOffsetRange(big.(r.parent), r.offset)
255257

256258
Base.show(io::IO, r::IdOffsetRange) = print(io, IdOffsetRange, "(values=",first(r), ':', last(r),", indices=",first(eachindex(r)),':',last(eachindex(r)), ")")
257259

test/runtests.jl

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,19 @@ end
158158

159159
# broadcasting behavior with scalars (issue #104)
160160
r3 = (1 .+ OffsetArrays.IdOffsetRange(3:5, -1) .+ 1) .- 1
161+
@test r3 isa OffsetArrays.IdOffsetRange
161162
@test same_value(r3, 3:5)
162-
check_indexed_by(r3, 0:2)
163+
check_indexed_by(r3, axes(r3,1))
164+
165+
r = OffsetArrays.IdOffsetRange(3:5, -1)
166+
rc = copyto!(similar(r), r)
167+
n = big(typemax(Int))
168+
@test @inferred(broadcast(+, r, n)) == @inferred(broadcast(+, n, r)) == rc .+ n
169+
@test @inferred(broadcast(-, r, n)) == rc .- n
170+
@test @inferred(broadcast(big, r)) == big.(rc)
171+
for n in Any[2, big(typemax(Int))]
172+
@test @inferred(broadcast(+, r, n)) == @inferred(broadcast(+, n, r)) == rc .+ n
173+
end
163174

164175
@testset "Idempotent indexing" begin
165176
@testset "Indexing into an IdOffsetRange" begin

0 commit comments

Comments
 (0)