Skip to content

Commit 9e92fc6

Browse files
Merge pull request #670 from visr/retcode
Remove check in `check_error!`
2 parents 9d87ca0 + 14f6bce commit 9e92fc6

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/integrator_interface.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -643,8 +643,8 @@ Same as `check_error` but also set solution's return code
643643
"""
644644
function check_error!(integrator::DEIntegrator)
645645
code = check_error(integrator)
646+
integrator.sol = solution_new_retcode(integrator.sol, code)
646647
if code != ReturnCode.Success
647-
integrator.sol = solution_new_retcode(integrator.sol, code)
648648
postamble!(integrator)
649649
end
650650
return code

test/integrator_tests.jl

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
using SciMLBase
2-
mutable struct DummySolution
3-
retcode::Any
2+
3+
struct DummySolution
4+
retcode::SciMLBase.ReturnCode.T
45
end
56

7+
SciMLBase.solution_new_retcode(::DummySolution, code) = DummySolution(code)
8+
69
mutable struct DummyIntegrator{Alg, IIP, U, T} <: SciMLBase.DEIntegrator{Alg, IIP, U, T}
710
uprev::U
811
tprev::T
@@ -46,6 +49,9 @@ function SciMLBase.done(integrator::DummyIntegrator)
4649
integrator.t > 10
4750
end
4851

52+
SciMLBase.check_error(::DummyIntegrator) = ReturnCode.Success
53+
SciMLBase.postamble!(::DummyIntegrator) = nothing
54+
4955
integrator = DummyIntegrator()
5056
@test step_dt!(integrator, 1.5) == 2
5157
@test step_dt!(integrator, 1.5, true) == 1.5
@@ -62,3 +68,14 @@ for (uprev, tprev, u, t) in intervals(DummyIntegrator())
6268
end
6369
@test eltype(collect(intervals(DummyIntegrator()))) ==
6470
Tuple{Vector{Float64}, Float64, Vector{Float64}, Float64}
71+
72+
@test integrator.sol.retcode == ReturnCode.Default
73+
@test check_error(integrator) == ReturnCode.Success
74+
@test integrator.sol.retcode == ReturnCode.Default
75+
@test SciMLBase.check_error!(integrator) == ReturnCode.Success
76+
@test integrator.sol.retcode == ReturnCode.Success
77+
78+
let
79+
integrator = DummyIntegrator()
80+
@test 0 == @allocated SciMLBase.check_error!(integrator)
81+
end

0 commit comments

Comments
 (0)