move ignore-try to EvalSettings

This commit is contained in:
Ben Burdette 2022-07-11 10:47:09 -06:00
parent 6ac8200ff5
commit a3629ab0cc
4 changed files with 8 additions and 12 deletions

View file

@ -91,12 +91,6 @@ EvalCommand::EvalCommand()
.description = "start an interactive environment if evaluation fails", .description = "start an interactive environment if evaluation fails",
.handler = {&startReplOnEvalErrors, true}, .handler = {&startReplOnEvalErrors, true},
}); });
addFlag({
.longName = "ignore-try",
.description = "ignore exceptions in try clauses during debug",
.handler = {&ignoreExceptionsDuringTry, true},
});
} }
EvalCommand::~EvalCommand() EvalCommand::~EvalCommand()
@ -128,9 +122,6 @@ ref<EvalState> EvalCommand::getEvalState()
if (startReplOnEvalErrors) { if (startReplOnEvalErrors) {
evalState->debugRepl = &runRepl; evalState->debugRepl = &runRepl;
}; };
if (ignoreExceptionsDuringTry) {
evalState->ignoreTry = ignoreExceptionsDuringTry;
};
} }
return ref<EvalState>(evalState); return ref<EvalState>(evalState);
} }

View file

@ -467,7 +467,6 @@ EvalState::EvalState(
, debugRepl(nullptr) , debugRepl(nullptr)
, debugStop(false) , debugStop(false)
, debugQuit(false) , debugQuit(false)
, ignoreTry(false)
, trylevel(0) , trylevel(0)
, regexCache(makeRegexCache()) , regexCache(makeRegexCache())
#if HAVE_BOEHMGC #if HAVE_BOEHMGC

View file

@ -130,7 +130,6 @@ public:
void (* debugRepl)(ref<EvalState> es, const ValMap & extraEnv); void (* debugRepl)(ref<EvalState> es, const ValMap & extraEnv);
bool debugStop; bool debugStop;
bool debugQuit; bool debugQuit;
bool ignoreTry;
int trylevel; int trylevel;
std::list<DebugTrace> debugTraces; std::list<DebugTrace> debugTraces;
std::map<const Expr*, const std::shared_ptr<const StaticEnv>> exprEnvs; std::map<const Expr*, const std::shared_ptr<const StaticEnv>> exprEnvs;
@ -648,6 +647,13 @@ struct EvalSettings : Config
Setting<bool> useEvalCache{this, true, "eval-cache", Setting<bool> useEvalCache{this, true, "eval-cache",
"Whether to use the flake evaluation cache."}; "Whether to use the flake evaluation cache."};
Setting<bool> ignoreExceptionsDuringTry{this, false, "ignore-try",
R"(
If set to true, ignore exceptions inside 'tryEval' calls when evaluating nix expressions in
debug mode (using the --debugger flag). By default the debugger will pause on all exceptions.
)"};
}; };
extern EvalSettings evalSettings; extern EvalSettings evalSettings;

View file

@ -856,7 +856,7 @@ static void prim_tryEval(EvalState & state, const PosIdx pos, Value * * args, Va
MaintainCount trylevel(state.trylevel); MaintainCount trylevel(state.trylevel);
void (* savedDebugRepl)(ref<EvalState> es, const ValMap & extraEnv) = nullptr; void (* savedDebugRepl)(ref<EvalState> es, const ValMap & extraEnv) = nullptr;
if (state.debugRepl && state.ignoreTry) if (state.debugRepl && evalSettings.ignoreExceptionsDuringTry)
{ {
/* to prevent starting the repl from exceptions withing a tryEval, null it. */ /* to prevent starting the repl from exceptions withing a tryEval, null it. */
savedDebugRepl = state.debugRepl; savedDebugRepl = state.debugRepl;