diff options
Diffstat (limited to 'src/libcmd')
-rw-r--r-- | src/libcmd/command.cc | 7 | ||||
-rw-r--r-- | src/libcmd/repl.cc | 9 |
2 files changed, 9 insertions, 7 deletions
diff --git a/src/libcmd/command.cc b/src/libcmd/command.cc index ee5102a6a..9cf2ff5e3 100644 --- a/src/libcmd/command.cc +++ b/src/libcmd/command.cc @@ -137,9 +137,10 @@ ref<EvalState> EvalCommand::getEvalState() if (error) printError("%s\n\n" ANSI_BOLD "Starting REPL to allow you to inspect the current state of the evaluator.\n" ANSI_NORMAL, error->what()); - if (expr.staticEnv) { - auto vm = mapStaticEnvBindings(evalState.symbols, *expr.staticEnv.get(), env); - runRepl(*const_cast<EvalState*>(&evalState), *vm); + auto se = evalState->getStaticEnv(expr); + if (se) { + auto vm = mapStaticEnvBindings(evalState->symbols, *se.get(), env); + runRepl(evalState, *vm); } }; } diff --git a/src/libcmd/repl.cc b/src/libcmd/repl.cc index cb5d5bb34..5b17f2fb2 100644 --- a/src/libcmd/repl.cc +++ b/src/libcmd/repl.cc @@ -441,8 +441,9 @@ void NixRepl::loadDebugTraceEnv(DebugTrace & dt) { initEnv(); - if (dt.expr.staticEnv) { - auto vm = mapStaticEnvBindings(state->symbols, *dt.expr.staticEnv.get(), dt.env); + auto se = state->getStaticEnv(dt.expr); + if (se) { + auto vm = mapStaticEnvBindings(state->symbols, *se.get(), dt.env); // add staticenv vars. for (auto & [name, value] : *(vm.get())) @@ -516,7 +517,7 @@ bool NixRepl::processLine(std::string line) else if (debuggerHook && (command == ":env")) { for (const auto & [idx, i] : enumerate(state->debugTraces)) { if (idx == debugTraceIndex) { - printEnvBindings(state->symbols, i.expr, i.env); + printEnvBindings(*state, i.expr, i.env); break; } } @@ -533,7 +534,7 @@ bool NixRepl::processLine(std::string line) std::cout << "\n" << ANSI_BLUE << idx << ANSI_NORMAL << ": "; showDebugTrace(std::cout, state->positions, i); std::cout << std::endl; - printEnvBindings(state->symbols, i.expr, i.env); + printEnvBindings(*state, i.expr, i.env); loadDebugTraceEnv(i); break; } |