Skip to content

Commit e33d96f

Browse files
committed
Fix breakage on 0.5-dev. Ref JuliaLang/julia#13803
1 parent ef0ee79 commit e33d96f

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

src/broadcast.jl

+23-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,20 @@
11
using DataArrays, Base.@get!
22
using Base.Broadcast: bitcache_chunks, bitcache_size, dumpbitcache,
3-
promote_eltype, broadcast_shape, eltype_plus, type_minus, type_div,
4-
type_pow
3+
promote_eltype, broadcast_shape, eltype_plus
4+
5+
if isdefined(Base.Broadcast, :type_minus)
6+
using Base.Broadcast: type_minus, type_div, type_pow
7+
const _type_minus = type_minus
8+
const _type_rdiv = type_div
9+
const _type_ldiv = type_div
10+
const _type_pow = type_pow
11+
else
12+
using Base.Broadcast: promote_op
13+
_type_minus(T, S) = promote_op(Base.SubFun(), T, S)
14+
_type_rdiv(T, S) = promote_op(Base.RDivFun(), T, S)
15+
_type_ldiv(T, S) = promote_op(Base.LDivFun(), T, S)
16+
_type_pow(T, S) = promote_op(Base.PowFun(), T, S)
17+
end
518

619
# Check that all arguments are broadcast compatible with shape
720
# Differs from Base in that we check for exact matches
@@ -282,30 +295,30 @@ Base.(:(.*))(A::(@compat Union{DataArray{Bool}, PooledDataArray{Bool}}), B::BitA
282295
@da_broadcast_vararg Base.(:(.*))(As...) = databroadcast(*, As...)
283296
@da_broadcast_binary Base.(:(.%))(A, B) = databroadcast(%, A, B)
284297
@da_broadcast_vararg Base.(:(.+))(As...) = broadcast!(+, DataArray(eltype_plus(As...), broadcast_shape(As...)), As...)
285-
@da_broadcast_binary Base.(:(.-))(A, B) = broadcast!(-, DataArray(type_minus(eltype(A), eltype(B)), broadcast_shape(A,B)), A, B)
286-
@da_broadcast_binary Base.(:(./))(A, B) = broadcast!(/, DataArray(type_div(eltype(A), eltype(B)), broadcast_shape(A, B)), A, B)
287-
@da_broadcast_binary Base.(:(.\))(A, B) = broadcast!(\, DataArray(type_div(eltype(A), eltype(B)), broadcast_shape(A, B)), A, B)
298+
@da_broadcast_binary Base.(:(.-))(A, B) = broadcast!(-, DataArray(_type_minus(eltype(A), eltype(B)), broadcast_shape(A,B)), A, B)
299+
@da_broadcast_binary Base.(:(./))(A, B) = broadcast!(/, DataArray(_type_rdiv(eltype(A), eltype(B)), broadcast_shape(A, B)), A, B)
300+
@da_broadcast_binary Base.(:(.\))(A, B) = broadcast!(\, DataArray(_type_ldiv(eltype(A), eltype(B)), broadcast_shape(A, B)), A, B)
288301
Base.(:(.^))(A::(@compat Union{DataArray{Bool}, PooledDataArray{Bool}}), B::(@compat Union{DataArray{Bool}, PooledDataArray{Bool}})) = databroadcast(>=, A, B)
289302
Base.(:(.^))(A::BitArray, B::(@compat Union{DataArray{Bool}, PooledDataArray{Bool}})) = databroadcast(>=, A, B)
290303
Base.(:(.^))(A::AbstractArray{Bool}, B::(@compat Union{DataArray{Bool}, PooledDataArray{Bool}})) = databroadcast(>=, A, B)
291304
Base.(:(.^))(A::(@compat Union{DataArray{Bool}, PooledDataArray{Bool}}), B::BitArray) = databroadcast(>=, A, B)
292305
Base.(:(.^))(A::(@compat Union{DataArray{Bool}, PooledDataArray{Bool}}), B::AbstractArray{Bool}) = databroadcast(>=, A, B)
293-
@da_broadcast_binary Base.(:(.^))(A, B) = broadcast!(^, DataArray(type_pow(eltype(A), eltype(B)), broadcast_shape(A, B)), A, B)
306+
@da_broadcast_binary Base.(:(.^))(A, B) = broadcast!(^, DataArray(_type_pow(eltype(A), eltype(B)), broadcast_shape(A, B)), A, B)
294307

295308
# XXX is a PDA the right return type for these?
296309
Base.broadcast(f::Function, As::PooledDataArray...) = pdabroadcast(f, As...)
297310
Base.(:(.*))(As::PooledDataArray...) = pdabroadcast(*, As...)
298311
Base.(:(.%))(A::PooledDataArray, B::PooledDataArray) = pdabroadcast(%, A, B)
299312
Base.(:(.+))(As::PooledDataArray...) = broadcast!(+, PooledDataArray(eltype_plus(As...), broadcast_shape(As...)), As...)
300313
Base.(:(.-))(A::PooledDataArray, B::PooledDataArray) =
301-
broadcast!(-, PooledDataArray(type_minus(eltype(A), eltype(B)), broadcast_shape(A,B)), A, B)
314+
broadcast!(-, PooledDataArray(_type_minus(eltype(A), eltype(B)), broadcast_shape(A,B)), A, B)
302315
Base.(:(./))(A::PooledDataArray, B::PooledDataArray) =
303-
broadcast!(/, PooledDataArray(type_div(eltype(A), eltype(B)), broadcast_shape(A, B)), A, B)
316+
broadcast!(/, PooledDataArray(_type_rdiv(eltype(A), eltype(B)), broadcast_shape(A, B)), A, B)
304317
Base.(:(.\))(A::PooledDataArray, B::PooledDataArray) =
305-
broadcast!(\, PooledDataArray(type_div(eltype(A), eltype(B)), broadcast_shape(A, B)), A, B)
318+
broadcast!(\, PooledDataArray(_type_ldiv(eltype(A), eltype(B)), broadcast_shape(A, B)), A, B)
306319
Base.(:(.^))(A::PooledDataArray{Bool}, B::PooledDataArray{Bool}) = databroadcast(>=, A, B)
307320
Base.(:(.^))(A::PooledDataArray, B::PooledDataArray) =
308-
broadcast!(^, PooledDataArray(type_pow(eltype(A), eltype(B)), broadcast_shape(A, B)), A, B)
321+
broadcast!(^, PooledDataArray(_type_pow(eltype(A), eltype(B)), broadcast_shape(A, B)), A, B)
309322

310323
for (sf, vf) in zip(scalar_comparison_operators, array_comparison_operators)
311324
@eval begin

0 commit comments

Comments
 (0)