Skip to content

Commit be70066

Browse files
authored
Merge pull request #31369 from JuliaLang/kf/broadcastedsize
Defined size(::Broadcasted)
2 parents 8c0b550 + 967c81f commit be70066

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

base/broadcast.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,8 @@ _eachindex(t::Tuple) = CartesianIndices(t)
222222
Base.ndims(::Broadcasted{<:Any,<:NTuple{N,Any}}) where {N} = N
223223
Base.ndims(::Type{<:Broadcasted{<:Any,<:NTuple{N,Any}}}) where {N} = N
224224

225-
Base.length(bc::Broadcasted) = prod(map(length, axes(bc)))
225+
Base.size(bc::Broadcasted) = map(length, axes(bc))
226+
Base.length(bc::Broadcasted) = prod(size(bc))
226227

227228
function Base.iterate(bc::Broadcasted)
228229
iter = eachindex(bc)

test/broadcast.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ Base.getindex(A::ArrayData, i::Integer...) = A.data[i...]
433433
Base.setindex!(A::ArrayData, v::Any, i::Integer...) = setindex!(A.data, v, i...)
434434
Base.size(A::ArrayData) = size(A.data)
435435
Base.similar(bc::Broadcast.Broadcasted{Broadcast.ArrayStyle{A}}, ::Type{T}) where {A,T} =
436-
A(Array{T}(undef, length.(axes(bc))))
436+
A(Array{T}(undef, size(bc)))
437437

438438
struct Array19745{T,N} <: ArrayData{T,N}
439439
data::Array{T,N}
@@ -497,7 +497,7 @@ struct AD2DimStyle <: Broadcast.AbstractArrayStyle{2}; end
497497
AD2DimStyle(::Val{2}) = AD2DimStyle()
498498
AD2DimStyle(::Val{N}) where {N} = Broadcast.DefaultArrayStyle{N}()
499499
Base.similar(bc::Broadcast.Broadcasted{AD2DimStyle}, ::Type{T}) where {T} =
500-
AD2Dim(Array{T}(undef, length.(axes(bc))))
500+
AD2Dim(Array{T}(undef, size(bc)))
501501
Base.BroadcastStyle(::Type{T}) where {T<:AD2Dim} = AD2DimStyle()
502502

503503
@testset "broadcasting for custom AbstractArray" begin

0 commit comments

Comments
 (0)