Skip to content

Commit 6c3d030

Browse files
authored
Fix broadcast ambiguities with AbstractFill (#316)
1 parent 96d130a commit 6c3d030

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "FillArrays"
22
uuid = "1a297f60-69ca-5386-bcde-b61e274b549b"
3-
version = "1.9.0"
3+
version = "1.9.1"
44

55
[deps]
66
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"

src/fillbroadcast.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ broadcasted(::DefaultArrayStyle, ::typeof(*), a::AbstractZeros, b::AbstractZeros
145145
for op in (:*, :/)
146146
@eval begin
147147
broadcasted(::DefaultArrayStyle, ::typeof($op), a::AbstractZeros, b::AbstractOnes) = _broadcasted_zeros($op, a, b)
148-
broadcasted(::DefaultArrayStyle, ::typeof($op), a::AbstractZeros, b::Fill{<:Number}) = _broadcasted_zeros($op, a, b)
148+
broadcasted(::DefaultArrayStyle, ::typeof($op), a::AbstractZeros, b::AbstractFill{<:Number}) = _broadcasted_zeros($op, a, b)
149149
broadcasted(::DefaultArrayStyle, ::typeof($op), a::AbstractZeros, b::Number) = _broadcasted_zeros($op, a, b)
150150
broadcasted(::DefaultArrayStyle, ::typeof($op), a::AbstractZeros, b::AbstractRange) = _broadcasted_zeros($op, a, b)
151151
broadcasted(::DefaultArrayStyle, ::typeof($op), a::AbstractZeros, b::AbstractArray{<:Number}) = _broadcasted_zeros($op, a, b)
@@ -157,7 +157,7 @@ end
157157
for op in (:*, :\)
158158
@eval begin
159159
broadcasted(::DefaultArrayStyle, ::typeof($op), a::AbstractOnes, b::AbstractZeros) = _broadcasted_zeros($op, a, b)
160-
broadcasted(::DefaultArrayStyle, ::typeof($op), a::Fill{<:Number}, b::AbstractZeros) = _broadcasted_zeros($op, a, b)
160+
broadcasted(::DefaultArrayStyle, ::typeof($op), a::AbstractFill{<:Number}, b::AbstractZeros) = _broadcasted_zeros($op, a, b)
161161
broadcasted(::DefaultArrayStyle, ::typeof($op), a::Number, b::AbstractZeros) = _broadcasted_zeros($op, a, b)
162162
broadcasted(::DefaultArrayStyle, ::typeof($op), a::AbstractRange, b::AbstractZeros) = _broadcasted_zeros($op, a, b)
163163
broadcasted(::DefaultArrayStyle, ::typeof($op), a::AbstractArray{<:Number}, b::AbstractZeros) = _broadcasted_zeros($op, a, b)

test/runtests.jl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,26 @@ oneton(sz...) = oneton(Float64, sz...)
243243
end
244244
end
245245

246+
@testset "interface" begin
247+
struct Twos{T,N} <: FillArrays.AbstractFill{T,N,NTuple{N,Base.OneTo{Int}}}
248+
sz :: NTuple{N,Int}
249+
end
250+
Twos{T}(sz::NTuple{N,Int}) where {T,N} = Twos{T,N}(sz)
251+
Twos{T}(sz::Vararg{Int,N}) where {T,N} = Twos{T,N}(sz)
252+
Base.size(A::Twos) = A.sz
253+
FillArrays.getindex_value(A::Twos{T}) where {T} = oneunit(T) + oneunit(T)
254+
255+
@testset "broadcasting ambiguities" begin
256+
A = Twos{Int}(3)
257+
B = Zeros{Int}(size(A))
258+
@test A .* B === B
259+
@test B .* A === B
260+
@test B ./ A === Zeros{Float64}(size(A))
261+
@test A .\ B === Zeros{Float64}(size(A))
262+
@test A ./ B === Fill(Inf, size(A))
263+
end
264+
end
265+
246266
@testset "indexing" begin
247267
A = Fill(3.0,5)
248268
@test A[1:3] Fill(3.0,3)

0 commit comments

Comments
 (0)