1- using ChainRulesCore: NO_FIELDS
2-
3- # ChainRulesCore.frule(Δ, ::typeof(getproperty), x::ComponentArray, s::Symbol) = frule((_, Δ), getproperty, x, Val(s))
4- # function ChainRulesCore.frule(Δ, ::typeof(getproperty), x::ComponentArray, ::Val{s}) where s
5- # zero_x = zero(x)
6- # setproperty!(zero_x, s, Δ)
7- # return getproperty(x, s), zero_x
8- # end
91ChainRulesCore. rrule (:: typeof (getproperty), x:: ComponentArray , :: Val{s} ) where s = ChainRulesCore. rrule (getproperty, x, s)
102function ChainRulesCore. rrule (:: typeof (getproperty), x:: ComponentArray , s:: Symbol )
113 function getproperty_adjoint (Δ)
@@ -17,8 +9,6 @@ function ChainRulesCore.rrule(::typeof(getproperty), x::ComponentArray, s::Symbo
179 return getproperty (x, s), getproperty_adjoint
1810end
1911
20- ChainRulesCore. rrule (:: typeof (getdata), x:: ComponentArray ) = getdata (x), Δ-> ComponentArray (Δ, getaxes (x))
21-
22- ChainRulesCore. rrule (:: Type{ComponentArray} , data, axes) = ComponentArray (data, axes), Δ-> (NO_FIELDS, getdata (Δ), getaxes (Δ))
12+ ChainRulesCore. rrule (:: typeof (getdata), x:: ComponentArray ) = getdata (x), Δ-> (ChainRulesCore. NO_FIELDS, ComponentArray (Δ, getaxes (x)))
2313
24- ChainRulesCore. rrule (:: Type{ComponentArray} , data, axes) = ComponentArray (data, axes), Δ-> (getdata (Δ), getaxes (Δ))
14+ ChainRulesCore. rrule (:: Type{ComponentArray} , data, axes) = ComponentArray (data, axes), Δ-> (ChainRulesCore . NO_FIELDS, getdata (Δ), getaxes (Δ))
0 commit comments