From baf868e8513d84d1f46c0ab431c4e52e48d6397b Mon Sep 17 00:00:00 2001 From: Keno Fischer Date: Sun, 28 Oct 2018 16:07:26 -0400 Subject: [PATCH] Add VERSION check around broadcast piracy --- src/tracker/array.jl | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/tracker/array.jl b/src/tracker/array.jl index c75b5c1c..c7d1178b 100644 --- a/src/tracker/array.jl +++ b/src/tracker/array.jl @@ -434,26 +434,28 @@ end using Requires # https://github.com/FluxML/Flux.jl/issues/353 -@init Requires.isprecompiling() || @eval Base.Broadcast begin - function flatten(bc::Broadcasted{Style}) where {Style} - isflat(bc) && return bc - args = cat_nested(bc) - let makeargs = make_makeargs(bc), f = bc.f - newf = @inline function(args::Vararg{Any,N}) where N - f(makeargs(args...)...) +if VERSION < v"1.1.0-DEV.548" + @init Requires.isprecompiling() || @eval Base.Broadcast begin + function flatten(bc::Broadcasted{Style}) where {Style} + isflat(bc) && return bc + args = cat_nested(bc) + let makeargs = make_makeargs(bc), f = bc.f + newf = @inline function(args::Vararg{Any,N}) where N + f(makeargs(args...)...) + end + return Broadcasted{Style}(newf, args, bc.axes) end - return Broadcasted{Style}(newf, args, bc.axes) end - end - @inline function make_makeargs(makeargs, t::Tuple{<:Broadcasted,Vararg{Any}}) - bc = t[1] - let makeargs = make_makeargs(makeargs, tail(t)), f = bc.f - let makeargs = make_makeargs(makeargs, bc.args) - headargs, tailargs = make_headargs(bc.args), make_tailargs(bc.args) - return @inline function(args::Vararg{Any,N}) where N - args1 = makeargs(args...) - a, b = headargs(args1...), tailargs(args1...) - (f(a...), b...) + @inline function make_makeargs(makeargs, t::Tuple{<:Broadcasted,Vararg{Any}}) + bc = t[1] + let makeargs = make_makeargs(makeargs, tail(t)), f = bc.f + let makeargs = make_makeargs(makeargs, bc.args) + headargs, tailargs = make_headargs(bc.args), make_tailargs(bc.args) + return @inline function(args::Vararg{Any,N}) where N + args1 = makeargs(args...) + a, b = headargs(args1...), tailargs(args1...) + (f(a...), b...) + end end end end