|  | 
| 27 | 27 |         AbsNormSafeBestTerminationMode(Base.Fix1(maximum, abs)) | 
| 28 | 28 |     ] | 
| 29 | 29 | 
 | 
| 30 |  | -    function run_nlsolve_oop(f::F, u0, p = 2.0; solver) where {F} | 
| 31 |  | -        return @inferred solve(NonlinearProblem{false}(f, u0, p), solver; abstol = 1e-9) | 
|  | 30 | +    function run_nlsolve_oop(f::F, u0, p = 2.0; solver, broken_inferred = false) where {F} | 
|  | 31 | +        prob = NonlinearProblem{false}(f, u0, p) | 
|  | 32 | +        @test @inferred(solve(prob, solver; abstol = 1e-9)) isa | 
|  | 33 | +              SciMLBase.AbstractNonlinearSolution broken=broken_inferred | 
|  | 34 | +        return solve(prob, solver; abstol = 1e-9) | 
| 32 | 35 |     end | 
| 33 |  | -    function run_nlsolve_iip(f!::F, u0, p = 2.0; solver) where {F} | 
| 34 |  | -        return @inferred solve(NonlinearProblem{true}(f!, u0, p), solver; abstol = 1e-9) | 
|  | 36 | +    function run_nlsolve_iip(f!::F, u0, p = 2.0; solver, broken_inferred = false) where {F} | 
|  | 37 | +        prob = NonlinearProblem{true}(f!, u0, p) | 
|  | 38 | +        @test @inferred(solve(prob, solver; abstol = 1e-9)) isa | 
|  | 39 | +              SciMLBase.AbstractNonlinearSolution broken=broken_inferred | 
|  | 40 | +        return solve(prob, solver; abstol = 1e-9) | 
| 35 | 41 |     end | 
| 36 | 42 | end | 
| 37 | 43 | 
 | 
| 38 | 44 | @testitem "First Order Methods" setup=[RootfindTestSnippet] tags=[:core] begin | 
| 39 |  | -    for alg in ( | 
|  | 45 | +    @testset for alg in ( | 
| 40 | 46 |         SimpleNewtonRaphson, | 
| 41 | 47 |         SimpleTrustRegion, | 
| 42 | 48 |         (; kwargs...) -> SimpleTrustRegion(; kwargs..., nlsolve_update_rule = Val(true)) | 
|  | 
| 50 | 56 |         ) | 
| 51 | 57 |             @testset "[OOP] u0: $(typeof(u0))" for u0 in ( | 
| 52 | 58 |                 [1.0, 1.0], @SVector[1.0, 1.0], 1.0) | 
| 53 |  | -                sol = run_nlsolve_oop(quadratic_f, u0; solver = alg(; autodiff)) | 
|  | 59 | +                broken_inferred = u0 isa StaticArray && (autodiff isa AutoFiniteDiff || | 
|  | 60 | +                                   (autodiff isa AutoReverseDiff && VERSION < v"1.11")) | 
|  | 61 | +                sol = run_nlsolve_oop(quadratic_f, u0; solver = alg(; autodiff), | 
|  | 62 | +                    broken_inferred) | 
| 54 | 63 |                 @test SciMLBase.successful_retcode(sol) | 
| 55 | 64 |                 @test maximum(abs, quadratic_f(sol.u, 2.0)) < 1e-9 | 
| 56 | 65 |             end | 
|  | 
| 85 | 94 |         ) | 
| 86 | 95 |             @testset "[OOP] u0: $(typeof(u0))" for u0 in ( | 
| 87 | 96 |                 [1.0, 1.0], @SVector[1.0, 1.0], 1.0) | 
| 88 |  | -                sol = run_nlsolve_oop(quadratic_f, u0; solver = alg(; autodiff)) | 
|  | 97 | +                broken_inferred = u0 isa StaticArray && (autodiff isa AutoFiniteDiff || | 
|  | 98 | +                                   (autodiff isa AutoReverseDiff && VERSION < v"1.11")) | 
|  | 99 | +                sol = run_nlsolve_oop(quadratic_f, u0; solver = alg(; autodiff), | 
|  | 100 | +                    broken_inferred) | 
| 89 | 101 |                 @test SciMLBase.successful_retcode(sol) | 
| 90 | 102 |                 @test maximum(abs, quadratic_f(sol.u, 2.0)) < 1e-9 | 
| 91 | 103 |             end | 
|  | 
0 commit comments