Merge pull request #471 from FluxML/kf/broadcastvcheck
Add VERSION check around broadcast piracy
This commit is contained in:
commit
59cfe3e891
@ -434,26 +434,28 @@ end
|
|||||||
using Requires
|
using Requires
|
||||||
|
|
||||||
# https://github.com/FluxML/Flux.jl/issues/353
|
# https://github.com/FluxML/Flux.jl/issues/353
|
||||||
@init Requires.isprecompiling() || @eval Base.Broadcast begin
|
if VERSION < v"1.1.0-DEV.548"
|
||||||
function flatten(bc::Broadcasted{Style}) where {Style}
|
@init Requires.isprecompiling() || @eval Base.Broadcast begin
|
||||||
isflat(bc) && return bc
|
function flatten(bc::Broadcasted{Style}) where {Style}
|
||||||
args = cat_nested(bc)
|
isflat(bc) && return bc
|
||||||
let makeargs = make_makeargs(bc), f = bc.f
|
args = cat_nested(bc)
|
||||||
newf = @inline function(args::Vararg{Any,N}) where N
|
let makeargs = make_makeargs(bc), f = bc.f
|
||||||
f(makeargs(args...)...)
|
newf = @inline function(args::Vararg{Any,N}) where N
|
||||||
|
f(makeargs(args...)...)
|
||||||
|
end
|
||||||
|
return Broadcasted{Style}(newf, args, bc.axes)
|
||||||
end
|
end
|
||||||
return Broadcasted{Style}(newf, args, bc.axes)
|
|
||||||
end
|
end
|
||||||
end
|
@inline function make_makeargs(makeargs, t::Tuple{<:Broadcasted,Vararg{Any}})
|
||||||
@inline function make_makeargs(makeargs, t::Tuple{<:Broadcasted,Vararg{Any}})
|
bc = t[1]
|
||||||
bc = t[1]
|
let makeargs = make_makeargs(makeargs, tail(t)), f = bc.f
|
||||||
let makeargs = make_makeargs(makeargs, tail(t)), f = bc.f
|
let makeargs = make_makeargs(makeargs, bc.args)
|
||||||
let makeargs = make_makeargs(makeargs, bc.args)
|
headargs, tailargs = make_headargs(bc.args), make_tailargs(bc.args)
|
||||||
headargs, tailargs = make_headargs(bc.args), make_tailargs(bc.args)
|
return @inline function(args::Vararg{Any,N}) where N
|
||||||
return @inline function(args::Vararg{Any,N}) where N
|
args1 = makeargs(args...)
|
||||||
args1 = makeargs(args...)
|
a, b = headargs(args1...), tailargs(args1...)
|
||||||
a, b = headargs(args1...), tailargs(args1...)
|
(f(a...), b...)
|
||||||
(f(a...), b...)
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user