aboutsummaryrefslogtreecommitdiff
path: root/src/nix-instantiate/main.cc
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2006-08-24 13:39:22 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2006-08-24 13:39:22 +0000
commit943ab38a0d0969004de231a6b3e89df88ffc6ccf (patch)
tree10852ca08d48ce59858ebc64702f1de8b7b51629 /src/nix-instantiate/main.cc
parentf41297fdcecaa1ba12d238d1754457d319426579 (diff)
* Refactoring: move strictEval to libexpr.
Diffstat (limited to 'src/nix-instantiate/main.cc')
-rw-r--r--src/nix-instantiate/main.cc45
1 files changed, 1 insertions, 44 deletions
diff --git a/src/nix-instantiate/main.cc b/src/nix-instantiate/main.cc
index 29a28c3d8..5eaaf5b2a 100644
--- a/src/nix-instantiate/main.cc
+++ b/src/nix-instantiate/main.cc
@@ -135,56 +135,13 @@ static void printResult(EvalState & state, Expr e,
}
-Expr strictEval(EvalState & state, Expr e)
-{
- e = evalExpr(state, e);
-
- ATermList as;
-
- if (matchAttrs(e, as)) {
- ATermList as2 = ATempty;
- for (ATermIterator i(as); i; ++i) {
- ATerm name; Expr e; ATerm pos;
- if (!matchBind(*i, name, e, pos)) abort(); /* can't happen */
- as2 = ATinsert(as2, makeBind(name, strictEval(state, e), pos));
- }
- return makeAttrs(ATreverse(as2));
- }
-
- ATermList formals;
- ATerm body, pos;
-
- if (matchFunction(e, formals, body, pos)) {
- ATermList formals2 = ATempty;
-
- for (ATermIterator i(formals); i; ++i) {
- Expr name; ValidValues valids; ATerm dummy;
- if (!matchFormal(*i, name, valids, dummy)) abort();
-
- ATermList valids2;
- if (matchValidValues(valids, valids2)) {
- ATermList valids3 = ATempty;
- for (ATermIterator j(valids2); j; ++j)
- valids3 = ATinsert(valids3, strictEval(state, *j));
- valids = makeValidValues(ATreverse(valids3));
- }
-
- formals2 = ATinsert(formals2, makeFormal(name, valids, dummy));
- }
- return makeFunction(ATreverse(formals2), body, pos);
- }
-
- return e;
-}
-
-
Expr doEval(EvalState & state, string attrPath, bool parseOnly, bool strict,
const ATermMap & autoArgs, Expr e)
{
e = findAlongAttrPath(state, attrPath, autoArgs, e);
if (!parseOnly)
if (strict)
- e = strictEval(state, e);
+ e = strictEvalExpr(state, e);
else
e = evalExpr(state, e);
return e;