diff --git a/src/fillbroadcast.jl b/src/fillbroadcast.jl index 646ffd7a..c0a6a158 100644 --- a/src/fillbroadcast.jl +++ b/src/fillbroadcast.jl @@ -2,18 +2,18 @@ map(f::Function, r::AbstractFill) = Fill(f(getindex_value(r)), axes(r)) -function map(f::Function, vs::AbstractFill{<:Any,1}...) - stop = mapreduce(length, min, vs) - val = f(map(getindex_value, vs)...) +function map(f::Function, v::AbstractFill{<:Any,1}, ws::AbstractFill{<:Any,1}...) + stop = mapreduce(length, min, (v, ws...)) + val = f(map(getindex_value, (v, ws...))...) Fill(val, stop) end -function map(f::Function, rs::AbstractFill...) - if _maplinear(rs...) - map(f, map(vec, rs)...) +function map(f::Function, q::AbstractFill, rs::AbstractFill...) + if _maplinear(q, rs...) + map(f, map(vec, (q, rs...))...) else - val = f(map(getindex_value, rs)...) - Fill(val, axes(first(rs))) + val = f(map(getindex_value, (q, rs...))...) + Fill(val, axes(q)) end end diff --git a/test/runtests.jl b/test/runtests.jl index 1ef5e605..196593dc 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -839,6 +839,10 @@ end @test map(+, x1, x2) === Fill(3.0, 5) @test map(+, x2, x2) === x2 .+ x2 @test_throws DimensionMismatch map(+, x2', x2) + + # Issue https://github.com/JuliaArrays/FillArrays.jl/issues/179 + @test map(() -> "ok") == "ok" # was MethodError: reducing over an empty collection is not allowed + @test mapreduce(() -> "ok", *) == "ok" end @testset "mapreduce" begin