diff --git a/src/ParsingDriver.cc b/src/ParsingDriver.cc index 9b9741df..89d32bc8 100644 --- a/src/ParsingDriver.cc +++ b/src/ParsingDriver.cc @@ -2054,6 +2054,13 @@ ParsingDriver::end_planner_objective(expr_t expr) void ParsingDriver::ramsey_model() { + // Some checks to ensure correct error messages (see #90) + if (ramsey_policy_seen) + error("A 'ramsey_model' statement cannot follow a 'ramsey_policy' statement."); + if (ramsey_model_seen) + error("Several 'ramsey_model' statements cannot appear in a given .mod file."); + ramsey_model_seen = true; + if (!mod_file->symbol_table.exists("optimal_policy_discount_factor")) { if (!planner_discount) @@ -2081,6 +2088,13 @@ ParsingDriver::ramsey_policy() { warning("The 'ramsey_policy' statement is deprecated. Please use 'ramsey_model', 'stoch_simul', and 'evaluate_planner_objective' instead."); + // Some checks to ensure correct error messages (see #90) + if (ramsey_model_seen) + error("A 'ramsey_policy' statement cannot follow a 'ramsey_model' statement."); + if (ramsey_policy_seen) + error("Several 'ramsey_policy' statements cannot appear in a given .mod file."); + ramsey_policy_seen = true; + if (!mod_file->symbol_table.exists("optimal_policy_discount_factor")) { if (!planner_discount) diff --git a/src/ParsingDriver.hh b/src/ParsingDriver.hh index 78063f70..2d7f321e 100644 --- a/src/ParsingDriver.hh +++ b/src/ParsingDriver.hh @@ -274,6 +274,11 @@ private: //! True when parsing pac_model statement bool parsing_pac_model{false}; + //! True if a ramsey_model statement has already been seen + bool ramsey_model_seen{false}; + //! True if a ramsey_policy statement has already been seen + bool ramsey_policy_seen{false}; + public: ParsingDriver(WarningConsolidation &warnings_arg, bool nostrict_arg) : warnings{warnings_arg}, nostrict{nostrict_arg}