From 2be998eeb4f5b016d672df5fdc3e48c557bba55d Mon Sep 17 00:00:00 2001 From: skye Date: Sat, 28 Feb 2026 16:29:22 -0500 Subject: [PATCH] libexpr: Migrate Evaluator::evalLazily to return a Value Change-Id: I9f778407d454e141cb9b7959bbc02ed26a6a6964 --- lix/libcmd/common-eval-args.cc | 4 +--- lix/libexpr/eval.cc | 6 ++---- lix/libexpr/eval.hh | 2 +- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/lix/libcmd/common-eval-args.cc b/lix/libcmd/common-eval-args.cc index a36bdcea6..143b45c7f 100644 --- a/lix/libcmd/common-eval-args.cc +++ b/lix/libcmd/common-eval-args.cc @@ -185,9 +185,7 @@ Bindings * MixEvalArgs::getAutoArgs(Evaluator & state) for (auto & i : autoArgs) { Value v; if (i.second[0] == 'E') - state.evalLazily( - state.parseExprFromString(i.second.substr(1), CanonPath::fromCwd()), v - ); + v = state.evalLazily(state.parseExprFromString(i.second.substr(1), CanonPath::fromCwd())); else v = {NewValueAs::string, ((std::string_view) i.second).substr(1)}; res.insert(state.symbols.create(i.first), v); diff --git a/lix/libexpr/eval.cc b/lix/libexpr/eval.cc index 200cdc259..bdc3d6b84 100644 --- a/lix/libexpr/eval.cc +++ b/lix/libexpr/eval.cc @@ -844,14 +844,12 @@ Value::List * EvalMemory::newList(size_t size) return list; } - -void Evaluator::evalLazily(Expr & e, Value & v) +Value Evaluator::evalLazily(Expr & e) { - v = {NewValueAs::thunk, mem, builtins.env, e}; stats.nrThunks++; + return {NewValueAs::thunk, mem, builtins.env, e}; } - void EvalState::mkPos(Value & v, PosIdx p) { auto origin = ctx.positions.originOf(p); diff --git a/lix/libexpr/eval.hh b/lix/libexpr/eval.hh index 76bb0349b..e5bca7824 100644 --- a/lix/libexpr/eval.hh +++ b/lix/libexpr/eval.hh @@ -554,7 +554,7 @@ public: /** * Creates a thunk that will evaluate the given expression when forced. */ - void evalLazily(Expr & e, Value & v); + Value evalLazily(Expr & e); /** If debugging is enabled, returns the next trace. Otherwise, std::nullopt. */ std::optional nextDebugTrace() const;