aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr
diff options
context:
space:
mode:
authorGuillaume Maudoux <guillaume.maudoux@tweag.io>2022-03-04 22:51:56 +0100
committerGuillaume Maudoux <guillaume.maudoux@tweag.io>2022-03-04 22:51:56 +0100
commit57684d62475c9ec37e2abc2b7df2ec3581d0f011 (patch)
tree4479a771b0183113a38079e5a0034d8e988c0ade /src/libexpr
parented02fa3c403d4ab92c0e32c9d033231f46f87c85 (diff)
fixup! s/forceValue/forceFunction/ where applicable
Diffstat (limited to 'src/libexpr')
-rw-r--r--src/libexpr/eval.cc19
-rw-r--r--src/libexpr/primops.cc10
2 files changed, 8 insertions, 21 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc
index b2a8651d9..03329645f 100644
--- a/src/libexpr/eval.cc
+++ b/src/libexpr/eval.cc
@@ -747,14 +747,6 @@ LocalNoInlineNoReturn(void throwEvalError(const Pos & p1, const char * s, const
});
}
-LocalNoInlineNoReturn(void throwTypeError(const Pos & pos, const char * s))
-{
- throw TypeError({
- .msg = hintfmt(s),
- .errPos = pos
- });
-}
-
LocalNoInlineNoReturn(void throwTypeError(const Pos & pos, const char * s, const ExprLambda & fun, const Symbol & s2))
{
throw TypeError({
@@ -763,11 +755,6 @@ LocalNoInlineNoReturn(void throwTypeError(const Pos & pos, const char * s, const
});
}
-//LocalNoInlineNoReturn(void throwTypeError(const char * s, const Value & v))
-//{
-// throw TypeError(s, showType(v));
-//}
-
LocalNoInlineNoReturn(void throwTypeError(const Pos & pos, const char * s, const Value & v))
{
throw AssertionError({
@@ -1371,7 +1358,7 @@ void EvalState::callFunction(Value & fun, size_t nrArgs, Value * * args, Value &
for (auto & i : lambda.formals->formals) {
auto j = args[0]->attrs->get(i.name);
if (!j) {
- if (!i.def) throwTypeError(pos, "%1% called without required argument '%2%'",
+ if (!i.def) throwTypeError(pos, "Function %1% called without required argument '%2%'",
lambda, i.name);
env2.values[displ++] = i.def->maybeThunk(*this, env2);
} else {
@@ -1387,7 +1374,7 @@ void EvalState::callFunction(Value & fun, size_t nrArgs, Value * * args, Value &
user. */
for (auto & i : *args[0]->attrs)
if (!lambda.formals->has(i.name))
- throwTypeError(pos, "%1% called with unexpected argument '%2%'", lambda, i.name);
+ throwTypeError(pos, "Function %1% called with unexpected argument '%2%'", lambda, i.name);
abort(); // can't happen
}
}
@@ -2059,7 +2046,7 @@ Path EvalState::coerceToPath(const Pos & pos, Value & v, PathSet & context, cons
StorePath EvalState::coerceToStorePath(const Pos & pos, Value & v, PathSet & context, const std::string & errorCtx)
{
- auto path = coerceToString(pos, v, context, false, false, errorCtx).toOwned();
+ auto path = coerceToString(pos, v, context, false, false, true, errorCtx).toOwned();
if (auto storePath = store->maybeParseStorePath(path))
return *storePath;
throw EvalError({
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc
index b56293c30..a72d0f12a 100644
--- a/src/libexpr/primops.cc
+++ b/src/libexpr/primops.cc
@@ -683,12 +683,12 @@ static void prim_genericClosure(EvalState & state, const Pos & pos, Value * * ar
res.push_back(e);
/* Call the `operator' function with `e' as argument. */
- Value call;
- call.mkApp(op->value, e);
- state.forceList(call, pos, "While evaluating the return value of the `operator` passed to builtins.genericClosure");
+ Value res;
+ state.callFunction(*op->value, 1, &e, res, *op->pos);
+ state.forceList(res, pos, "While evaluating the return value of the `operator` passed to builtins.genericClosure");
/* Add the values returned by the operator to the work set. */
- for (auto elem : call.listItems()) {
+ for (auto elem : res.listItems()) {
state.forceValue(*elem, pos);
workSet.push_back(elem);
}
@@ -2033,7 +2033,7 @@ static void prim_path(EvalState & state, const Pos & pos, Value * * args, Value
else if (attr.name == state.sName)
name = state.forceStringNoCtx(*attr.value, *attr.pos, "while evaluating the `name` attribute passed to builtins.path");
else if (n == "filter")
- state.forceFunction(filterFun = *attr.value, *attr.pos, "While evaluating the `filter` parameter passed to builtins.path");
+ state.forceFunction(*(filterFun = attr.value), *attr.pos, "While evaluating the `filter` parameter passed to builtins.path");
else if (n == "recursive")
method = FileIngestionMethod { state.forceBool(*attr.value, *attr.pos, "While evaluating the `recursive` attribute passed to builtins.path") };
else if (n == "sha256")