From fdbf4da5d14fd0a5caade040cafe241e217e7676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Str=C3=B6mer?= Date: Tue, 19 Nov 2024 09:47:39 +0100 Subject: [PATCH] feat: properly detect (deprecated) return values of addon functions (related to #30) --- src/IESopt.jl | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/IESopt.jl b/src/IESopt.jl index dbe7fcee..dbacc08b 100644 --- a/src/IESopt.jl +++ b/src/IESopt.jl @@ -71,8 +71,14 @@ function _build_model!(model::JuMP.Model) # Only execute a function if it exists. if addon_fi in names(prop.addon; all=true) @info "Invoking addon" addon = name step = addon_fi - if !Base.invokelatest(getfield(prop.addon, addon_fi), model, prop.config) + ret = Base.invokelatest(getfield(prop.addon, addon_fi), model, prop.config) + if isnothing(ret) + @warn "Please make sure your addon returns `true` or `false` in every step to indicate success/failure" addon = + name step = addon_fi + elseif ret === false @critical "Addon returned error" addon = name step = addon_fi + elseif ret !== true + @warn "Addon returned unexpected value: `$(ret)`" addon = name step = addon_fi end end end