@@ -176,23 +176,22 @@ end
176176
177177# If setting A or b for DualLinearCache, put the Dual-stripped versions in the LinearCache
178178function Base. setproperty! (dc:: DualLinearCache , sym:: Symbol , val)
179- # If the property is A or b, also update it in the LinearCache
180- if sym === :A || sym === :b || sym === :u
181- setproperty! (dc. linear_cache, sym, nodual_value (val))
182- elseif hasfield (DualLinearCache, sym)
183- setfield! (dc,sym,val)
184- elseif hasfield (LinearSolve. LinearCache, sym)
185- setproperty! (dc. linear_cache, sym, val)
186- end
187-
188-
189- # Update the partials if setting A or b
190179 if sym === :A
180+ setproperty! (dc. linear_cache, sym, nodual_value (val))
181+ setfield! (dc, :dual_A , val)
191182 setfield! (dc, :partials_A , partial_vals (val))
192183 elseif sym === :b
184+ setproperty! (dc. linear_cache, sym, nodual_value (val))
185+ setfield! (dc, :dual_b , val)
193186 setfield! (dc, :partials_b , partial_vals (val))
194187 elseif sym === :u
188+ setproperty! (dc. linear_cache, sym, nodual_value (val))
189+ setfield! (dc, :dual_u , val)
195190 setfield! (dc, :partials_u , partial_vals (val))
191+ elseif hasfield (DualLinearCache, sym)
192+ setfield! (dc,sym,val)
193+ elseif hasfield (LinearSolve. LinearCache, sym)
194+ setproperty! (dc. linear_cache, sym, val)
196195 end
197196end
198197
0 commit comments