aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr
diff options
context:
space:
mode:
Diffstat (limited to 'src/libexpr')
-rw-r--r--src/libexpr/get-drvs.cc7
-rw-r--r--src/libexpr/get-drvs.hh8
2 files changed, 7 insertions, 8 deletions
diff --git a/src/libexpr/get-drvs.cc b/src/libexpr/get-drvs.cc
index b7e16de7f..66689e3e8 100644
--- a/src/libexpr/get-drvs.cc
+++ b/src/libexpr/get-drvs.cc
@@ -267,15 +267,14 @@ static bool getDerivation(EvalState & state, Value & v,
}
-bool getDerivation(EvalState & state, Value & v, DrvInfo & drv,
+std::experimental::optional<DrvInfo> getDerivation(EvalState & state, Value & v,
bool ignoreAssertionFailures)
{
Done done;
DrvInfos drvs;
getDerivation(state, v, "", drvs, done, ignoreAssertionFailures);
- if (drvs.size() != 1) return false;
- drv = drvs.front();
- return true;
+ if (drvs.size() != 1) return {};
+ return std::move(drvs.front());
}
diff --git a/src/libexpr/get-drvs.hh b/src/libexpr/get-drvs.hh
index 82fb8a3ac..32294e458 100644
--- a/src/libexpr/get-drvs.hh
+++ b/src/libexpr/get-drvs.hh
@@ -75,10 +75,10 @@ typedef list<DrvInfo> DrvInfos;
#endif
-/* If value `v' denotes a derivation, store information about the
- derivation in `drv' and return true. Otherwise, return false. */
-bool getDerivation(EvalState & state, Value & v, DrvInfo & drv,
- bool ignoreAssertionFailures);
+/* If value `v' denotes a derivation, return a DrvInfo object
+ describing it. Otherwise return nothing. */
+std::experimental::optional<DrvInfo> getDerivation(EvalState & state,
+ Value & v, bool ignoreAssertionFailures);
void getDerivations(EvalState & state, Value & v, const string & pathPrefix,
Bindings & autoArgs, DrvInfos & drvs,