From 42c9cbf9ca6edad0c4beabee137d3ce6384c42e2 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Thu, 9 Oct 2025 20:53:48 +0200 Subject: [PATCH] Use ref where non-null --- src/libcmd/include/nix/cmd/installable-flake.hh | 2 +- src/libcmd/installable-flake.cc | 8 ++++---- src/libcmd/installables.cc | 3 +-- src/libflake/flake.cc | 2 +- src/libflake/include/nix/flake/flake.hh | 2 +- src/nix/flake.cc | 4 ++-- 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/libcmd/include/nix/cmd/installable-flake.hh b/src/libcmd/include/nix/cmd/installable-flake.hh index f3237c915..9f449ad48 100644 --- a/src/libcmd/include/nix/cmd/installable-flake.hh +++ b/src/libcmd/include/nix/cmd/installable-flake.hh @@ -69,7 +69,7 @@ struct InstallableFlake : InstallableValue */ std::vector> getCursors(EvalState & state) override; - std::shared_ptr getLockedFlake() const; + ref getLockedFlake() const; FlakeRef nixpkgsFlakeRef() const; }; diff --git a/src/libcmd/installable-flake.cc b/src/libcmd/installable-flake.cc index 5431100d3..65f48fa2b 100644 --- a/src/libcmd/installable-flake.cc +++ b/src/libcmd/installable-flake.cc @@ -185,16 +185,16 @@ std::vector> InstallableFlake::getCursors(EvalState return res; } -std::shared_ptr InstallableFlake::getLockedFlake() const +ref InstallableFlake::getLockedFlake() const { if (!_lockedFlake) { flake::LockFlags lockFlagsApplyConfig = lockFlags; // FIXME why this side effect? lockFlagsApplyConfig.applyNixConfig = true; - _lockedFlake = - std::make_shared(lockFlake(flakeSettings, *state, flakeRef, lockFlagsApplyConfig)); + _lockedFlake = make_ref(lockFlake(flakeSettings, *state, flakeRef, lockFlagsApplyConfig)); } - return _lockedFlake; + // _lockedFlake is now non-null but still just a shared_ptr + return ref(_lockedFlake); } FlakeRef InstallableFlake::nixpkgsFlakeRef() const diff --git a/src/libcmd/installables.cc b/src/libcmd/installables.cc index 7d6ec5199..f0f36378b 100644 --- a/src/libcmd/installables.cc +++ b/src/libcmd/installables.cc @@ -342,8 +342,7 @@ void completeFlakeRefWithFragment( parseFlakeRef(fetchSettings, expandTilde(flakeRefS), std::filesystem::current_path().string()); auto evalCache = openEvalCache( - *evalState, - std::make_shared(lockFlake(flakeSettings, *evalState, flakeRef, lockFlags))); + *evalState, make_ref(lockFlake(flakeSettings, *evalState, flakeRef, lockFlags))); auto root = evalCache->getRoot(); diff --git a/src/libflake/flake.cc b/src/libflake/flake.cc index b9a2388c7..26b3ef2a0 100644 --- a/src/libflake/flake.cc +++ b/src/libflake/flake.cc @@ -954,7 +954,7 @@ std::optional LockedFlake::getFingerprint(ref store, const f Flake::~Flake() {} -ref openEvalCache(EvalState & state, std::shared_ptr lockedFlake) +ref openEvalCache(EvalState & state, ref lockedFlake) { auto fingerprint = state.settings.useEvalCache && state.settings.pureEval ? lockedFlake->getFingerprint(state.store, state.fetchSettings) diff --git a/src/libflake/include/nix/flake/flake.hh b/src/libflake/include/nix/flake/flake.hh index ba27bd09e..b3168144c 100644 --- a/src/libflake/include/nix/flake/flake.hh +++ b/src/libflake/include/nix/flake/flake.hh @@ -222,7 +222,7 @@ void callFlake(EvalState & state, const LockedFlake & lockedFlake, Value & v); /** * Open an evaluation cache for a flake. */ -ref openEvalCache(EvalState & state, std::shared_ptr lockedFlake); +ref openEvalCache(EvalState & state, ref lockedFlake); } // namespace flake diff --git a/src/nix/flake.cc b/src/nix/flake.cc index 18be64bba..cf05f6943 100644 --- a/src/nix/flake.cc +++ b/src/nix/flake.cc @@ -1155,7 +1155,7 @@ struct CmdFlakeShow : FlakeCommand, MixJSON evalSettings.enableImportFromDerivation.setDefault(false); auto state = getEvalState(); - auto flake = std::make_shared(lockFlake()); + auto flake = make_ref(lockFlake()); auto localSystem = std::string(settings.thisSystem.get()); std::function & attrPath, const Symbol & attr)> @@ -1443,7 +1443,7 @@ struct CmdFlakeShow : FlakeCommand, MixJSON return j; }; - auto cache = openEvalCache(*state, flake); + auto cache = openEvalCache(*state, ref(flake)); auto j = visit(*cache->getRoot(), {}, fmt(ANSI_BOLD "%s" ANSI_NORMAL, flake->flake.lockedRef), ""); if (json)