Skip to content

Commit 76e1675

Browse files
fix: retain specialization of explicit f in remake
1 parent d819c31 commit 76e1675

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

src/remake.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ function remake(
143143
T = parameterless_type(func)
144144
f = isdefined(func, :f) ? func.f : func.f1
145145
elseif f isa AbstractSciMLFunction
146+
iip = isinplace(f)
147+
spec = specialization(f)
146148
# if `f` is a SciMLFunction, create that type
147149
T = parameterless_type(f)
148150
# properties of `f` take priority over those in the existing `func`

test/remake_tests.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,3 +417,11 @@ end
417417
prob2 = remake(prob; u0 = zeros(2))
418418
@test prob2.f.f.jac == fjac!
419419
end
420+
421+
@testset "Issue#925: `remake` retains specialization of explicit `f`" begin
422+
f = ODEFunction{false, SciMLBase.FullSpecialize}((u, p, t) -> u)
423+
prob = ODEProblem(f, nothing, nothing)
424+
@test SciMLBase.specialization(prob.f) == SciMLBase.FullSpecialize
425+
prob2 = remake(ODEProblem((u, p, t) -> 2 .* u, nothing, nothing); f = f)
426+
@test SciMLBase.specialization(prob2.f) == SciMLBase.FullSpecialize
427+
end

0 commit comments

Comments
 (0)