Diffractor.jl
Diffractor.jl copied to clipboard
Fix `rrule_via_ad` return type
trafficstars
This ought to return a tuple; what it returns now works in some contexts but not https://github.com/JuliaDiff/ChainRules.jl/pull/644 .
julia> using Diffractor, ChainRulesCore
julia> ret = rrule_via_ad(Diffractor.DiffractorRuleConfig(), x -> log(exp(x)), 2)
Diffractor.OpticBundle{Float64}(2.0, (::Any)::Tuple{ZeroTangent, Any}->◌)
julia> y, bk = ret; # ok
julia> Tuple(ret)
ERROR: MethodError: no method matching length(::Diffractor.OpticBundle{Float64})
Originally added in https://github.com/JuliaDiff/Diffractor.jl/pull/45, thus my fault...