diff --git a/src/rulesets/Base/indexing.jl b/src/rulesets/Base/indexing.jl index f81ffda59..ea081c99c 100644 --- a/src/rulesets/Base/indexing.jl +++ b/src/rulesets/Base/indexing.jl @@ -126,8 +126,11 @@ This returns roughly `dx = zero(x)`, except that this is guaranteed to be mutabl and its element type is wide enough to allow `setindex!(dx, dy, inds...)`, which is exactly what `∇getindex` does next. """ -_setindex_zero(x::AbstractArray{<:Number}, dy, inds::Integer...) = fill!(similar(x, typeof(dy)), false) -_setindex_zero(x::AbstractArray{<:Number}, dy, inds...) = fill!(similar(x, eltype(dy)), false) +_setindex_zero(x::AbstractArray{<:Number}, dy, inds::Integer...) = + fill!(similar(x, typeof(dy)), false) +function _setindex_zero(x::AbstractArray{<:Number}, dy, inds...) + return fill!(similar(x, eltype(dy)), false) +end function _setindex_zero(x::AbstractArray, dy, inds::Integer...) # This allows for types which don't define zero (like Vector) and types whose zero special (like Tangent), # but always makes an abstract type. TODO: make it infer concrete type for e.g. vectors of SVectors