diff options
Diffstat (limited to 'src/libexpr')
-rw-r--r-- | src/libexpr/attr-path.cc | 6 | ||||
-rw-r--r-- | src/libexpr/eval.cc | 44 | ||||
-rw-r--r-- | src/libexpr/eval.hh | 20 | ||||
-rw-r--r-- | src/libexpr/lexer.l | 10 | ||||
-rw-r--r-- | src/libexpr/nixexpr.cc | 18 | ||||
-rw-r--r-- | src/libexpr/nixexpr.hh | 2 | ||||
-rw-r--r-- | src/libexpr/parser.y | 34 | ||||
-rw-r--r-- | src/libexpr/primops.cc | 30 |
8 files changed, 82 insertions, 82 deletions
diff --git a/src/libexpr/attr-path.cc b/src/libexpr/attr-path.cc index 45794a62d..2b72fea7e 100644 --- a/src/libexpr/attr-path.cc +++ b/src/libexpr/attr-path.cc @@ -18,7 +18,7 @@ void findAlongAttrPath(EvalState & state, const string & attrPath, string curPath; state.mkThunk_(v, e); - + foreach (Strings::iterator, i, tokens) { if (!curPath.empty()) curPath += "."; @@ -65,9 +65,9 @@ void findAlongAttrPath(EvalState & state, const string & attrPath, v = *v.list.elems[attrIndex]; } - + } } - + } diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 82287f627..e5c7226c1 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -44,7 +44,7 @@ void Bindings::sort() { std::sort(begin(), end()); } - + std::ostream & operator << (std::ostream & str, const Value & v) { @@ -291,7 +291,7 @@ void mkString(Value & v, const string & s, const PathSet & context) unsigned int n = 0; v.string.context = (const char * *) GC_MALLOC((context.size() + 1) * sizeof(char *)); - foreach (PathSet::const_iterator, i, context) + foreach (PathSet::const_iterator, i, context) v.string.context[n++] = GC_STRDUP(i->c_str()); v.string.context[n] = 0; } @@ -346,7 +346,7 @@ Env & EvalState::allocEnv(unsigned int size) /* Clear the values because maybeThunk() and lookupVar fromWith expects this. */ for (unsigned i = 0; i < size; ++i) env->values[i] = 0; - + return *env; } @@ -358,7 +358,7 @@ Value * EvalState::allocAttr(Value & vAttrs, const Symbol & name) return v; } - + void EvalState::mkList(Value & v, unsigned int length) { v.type = tList; @@ -607,7 +607,7 @@ void ExprSelect::eval(EvalState & state, Env & env, Value & v) e->eval(state, env, vTmp); try { - + foreach (AttrPath::const_iterator, i, attrPath) { nrLookups++; Bindings::iterator j; @@ -628,17 +628,17 @@ void ExprSelect::eval(EvalState & state, Env & env, Value & v) pos = j->pos; if (state.countCalls && pos) state.attrSelects[*pos]++; } - + state.forceValue(*vAttrs); - + } catch (Error & e) { if (pos) addErrorPrefix(e, "while evaluating the attribute `%1%' at %2%:\n", showAttrPath(attrPath), *pos); throw; } - + v = *vAttrs; } @@ -662,7 +662,7 @@ void ExprOpHasAttr::eval(EvalState & state, Env & env, Value & v) vAttrs = j->value; } } - + mkBool(v, true); } @@ -697,10 +697,10 @@ void EvalState::callFunction(Value & fun, Value & arg, Value & v) assert(primOp->type == tPrimOp); unsigned int arity = primOp->primOp->arity; unsigned int argsLeft = arity - argsDone; - + if (argsLeft == 1) { /* We have all the arguments, so call the primop. */ - + /* Put all the arguments in an array. */ Value * vArgs[arity]; unsigned int n = arity - 1; @@ -725,7 +725,7 @@ void EvalState::callFunction(Value & fun, Value & arg, Value & v) } return; } - + if (fun.type != tLambda) throwTypeError("attempt to call something which is not a function but %1%", showType(fun)); @@ -743,7 +743,7 @@ void EvalState::callFunction(Value & fun, Value & arg, Value & v) else { forceAttrs(arg); - + if (!fun.lambda.fun->arg.empty()) env2.values[displ++] = &arg; @@ -830,7 +830,7 @@ void ExprIf::eval(EvalState & state, Env & env, Value & v) (state.evalBool(env, cond) ? then : else_)->eval(state, env, v); } - + void ExprAssert::eval(EvalState & state, Env & env, Value & v) { if (!state.evalBool(env, cond)) @@ -838,7 +838,7 @@ void ExprAssert::eval(EvalState & state, Env & env, Value & v) body->eval(state, env, v); } - + void ExprOpNot::eval(EvalState & state, Env & env, Value & v) { mkBool(v, !state.evalBool(env, e)); @@ -911,7 +911,7 @@ void ExprOpUpdate::eval(EvalState & state, Env & env, Value & v) while (i != v1.attrs->end()) v.attrs->push_back(*i++); while (j != v2.attrs->end()) v.attrs->push_back(*j++); - + state.nrOpUpdateValuesCopied += v.attrs->size(); } @@ -996,12 +996,12 @@ void ExprConcatStrings::eval(EvalState & state, Env & env, Value & v) void EvalState::strictForceValue(Value & v) { forceValue(v); - + if (v.type == tAttrs) { foreach (Bindings::iterator, i, *v.attrs) strictForceValue(*i->value); } - + else if (v.type == tList) { for (unsigned int n = 0; n < v.list.length; ++n) strictForceValue(*v.list.elems[n]); @@ -1047,7 +1047,7 @@ string EvalState::forceString(Value & v) void copyContext(const Value & v, PathSet & context) { if (v.string.context) - for (const char * * p = v.string.context; *p; ++p) + for (const char * * p = v.string.context; *p; ++p) context.insert(*p); } @@ -1097,7 +1097,7 @@ string EvalState::coerceToString(Value & v, PathSet & context, Path path(canonPath(v.path)); if (!copyToStore) return path; - + if (nix::isDerivation(path)) throwEvalError("file names are not allowed to end in `%1%'", drvExtension); @@ -1146,7 +1146,7 @@ string EvalState::coerceToString(Value & v, PathSet & context, return result; } } - + throwTypeError("cannot coerce %1% to a string", showType(v)); } @@ -1222,7 +1222,7 @@ bool EvalState::eqValues(Value & v1, Value & v2) for (i = v1.attrs->begin(), j = v2.attrs->begin(); i != v1.attrs->end(); ++i, ++j) if (i->name != j->name || !eqValues(*i->value, *j->value)) return false; - + return true; } diff --git a/src/libexpr/eval.hh b/src/libexpr/eval.hh index b7b527bc4..f7b21f7a3 100644 --- a/src/libexpr/eval.hh +++ b/src/libexpr/eval.hh @@ -88,7 +88,7 @@ struct EvalState; std::ostream & operator << (std::ostream & str, const Value & v); -class EvalState +class EvalState { public: SymbolTable symbols; @@ -101,7 +101,7 @@ public: bool repair; private: - SrcToStore srcToStore; + SrcToStore srcToStore; /* A cache from path names to parse trees. */ std::map<Path, Expr *> parseTrees; @@ -119,7 +119,7 @@ private: SearchPath::iterator searchPathInsertionPoint; public: - + EvalState(); ~EvalState(); @@ -131,7 +131,7 @@ public: /* Parse a Nix expression from the specified string. */ Expr * parseExprFromString(const string & s, const Path & basePath); - + /* Evaluate an expression read from the given file to normal form. */ void evalFile(const Path & path, Value & v); @@ -193,21 +193,21 @@ private: unsigned int baseEnvDispl; public: - + /* The same, but used during parsing to resolve variables. */ StaticEnv staticBaseEnv; // !!! should be private private: - + void createBaseEnv(); - + void addConstant(const string & name, Value & v); void addPrimOp(const string & name, unsigned int arity, PrimOpFun primOp); inline Value * lookupVar(Env * env, const VarRef & var, bool noEval); - + friend class ExprVar; friend class ExprAttrs; friend class ExprLet; @@ -216,7 +216,7 @@ private: const Path & path, const Path & basePath); public: - + /* Do a deep equality test between two values. That is, list elements and attributes are compared recursively. */ bool eqValues(Value & v1, Value & v2); @@ -226,7 +226,7 @@ public: /* Automatically call a function for which each argument has a default value or has a binding in the `args' map. */ void autoCallFunction(Bindings & args, Value & fun, Value & res); - + /* Allocation primitives. */ Value * allocValue(); Env & allocEnv(unsigned int size); diff --git a/src/libexpr/lexer.l b/src/libexpr/lexer.l index 76cd37201..5d0360401 100644 --- a/src/libexpr/lexer.l +++ b/src/libexpr/lexer.l @@ -15,14 +15,14 @@ using namespace nix; namespace nix { - + static void initLoc(YYLTYPE * loc) { loc->first_line = loc->last_line = 1; loc->first_column = loc->last_column = 1; } - + static void adjustLoc(YYLTYPE * loc, const char * s, size_t len) { loc->first_line = loc->last_line; @@ -34,7 +34,7 @@ static void adjustLoc(YYLTYPE * loc, const char * s, size_t len) if (*s == '\n') /* cr/lf */ s++; /* fall through */ - case '\n': + case '\n': ++loc->last_line; loc->last_column = 1; break; @@ -68,7 +68,7 @@ static Expr * unescapeStr(SymbolTable & symbols, const char * s) return new ExprString(symbols.create(t)); } - + } #define YY_USER_INIT initLoc(yylloc) @@ -171,7 +171,7 @@ or { return OR_KW; } namespace nix { - + /* Horrible, disgusting hack: allow the parser to set the scanner start condition back to STRING. Necessary in interpolations like "foo${expr}bar"; after the close brace we have to go back to the diff --git a/src/libexpr/nixexpr.cc b/src/libexpr/nixexpr.cc index 72bc0a14b..2b33f7301 100644 --- a/src/libexpr/nixexpr.cc +++ b/src/libexpr/nixexpr.cc @@ -224,11 +224,11 @@ void ExprAttrs::bindVars(const StaticEnv & env) { if (recursive) { StaticEnv newEnv(false, &env); - + unsigned int displ = 0; foreach (AttrDefs::iterator, i, attrs) newEnv.vars[i->first] = i->second.displ = displ++; - + foreach (AttrDefs::iterator, i, attrs) i->second.e->bindVars(i->second.inherited ? env : newEnv); } @@ -247,9 +247,9 @@ void ExprList::bindVars(const StaticEnv & env) void ExprLambda::bindVars(const StaticEnv & env) { StaticEnv newEnv(false, &env); - + unsigned int displ = 0; - + if (!arg.empty()) newEnv.vars[arg] = displ++; if (matchAttrs) { @@ -266,14 +266,14 @@ void ExprLambda::bindVars(const StaticEnv & env) void ExprLet::bindVars(const StaticEnv & env) { StaticEnv newEnv(false, &env); - + unsigned int displ = 0; foreach (ExprAttrs::AttrDefs::iterator, i, attrs->attrs) newEnv.vars[i->first] = i->second.displ = displ++; - + foreach (ExprAttrs::AttrDefs::iterator, i, attrs->attrs) i->second.e->bindVars(i->second.inherited ? env : newEnv); - + body->bindVars(newEnv); } @@ -290,8 +290,8 @@ void ExprWith::bindVars(const StaticEnv & env) prevWith = level; break; } - - attrs->bindVars(env); + + attrs->bindVars(env); StaticEnv newEnv(true, &env); body->bindVars(newEnv); } diff --git a/src/libexpr/nixexpr.hh b/src/libexpr/nixexpr.hh index 69372a77b..8733b9c78 100644 --- a/src/libexpr/nixexpr.hh +++ b/src/libexpr/nixexpr.hh @@ -114,7 +114,7 @@ struct VarRef /* Whether the variable comes from an environment (e.g. a rec, let or function argument) or from a "with". */ bool fromWith; - + /* In the former case, the value is obtained by going `level' levels up from the current environment and getting the `displ'th value in that environment. In the latter case, the diff --git a/src/libexpr/parser.y b/src/libexpr/parser.y index 0e3086004..60ad3f079 100644 --- a/src/libexpr/parser.y +++ b/src/libexpr/parser.y @@ -12,18 +12,18 @@ %expect-rr 1 %code requires { - + #ifndef BISON_HEADER #define BISON_HEADER - + #include "util.hh" - + #include "nixexpr.hh" #include "eval.hh" namespace nix { - struct ParseData + struct ParseData { EvalState & state; SymbolTable & symbols; @@ -38,7 +38,7 @@ namespace nix { , sLetBody(symbols.create("<let-body>")) { }; }; - + } #define YY_DECL int yylex \ @@ -63,14 +63,14 @@ using namespace nix; namespace nix { - + static void dupAttr(const AttrPath & attrPath, const Pos & pos, const Pos & prevPos) { throw ParseError(format("attribute `%1%' at %2% already defined at %3%") % showAttrPath(attrPath) % pos % prevPos); } - + static void dupAttr(Symbol attr, const Pos & pos, const Pos & prevPos) { @@ -78,7 +78,7 @@ static void dupAttr(Symbol attr, const Pos & pos, const Pos & prevPos) throw ParseError(format("attribute `%1%' at %2% already defined at %3%") % showAttrPath(attrPath) % pos % prevPos); } - + static void addAttr(ExprAttrs * attrs, AttrPath & attrPath, Expr * e, const Pos & pos) @@ -121,7 +121,7 @@ static void addFormal(const Pos & pos, Formals * formals, const Formal & formal) static Expr * stripIndentation(SymbolTable & symbols, vector<Expr *> & es) { if (es.empty()) return new ExprString(symbols.create("")); - + /* Figure out the minimum indentation. Note that by design whitespace-only final lines are not taken into account. (So the " " in "\n ''" is ignored, but the " " in "\n foo''" is.) */ @@ -170,7 +170,7 @@ static Expr * stripIndentation(SymbolTable & symbols, vector<Expr *> & es) es2->push_back(*i); continue; } - + string s2; for (unsigned int j = 0; j < e->s.size(); ++j) { if (atStartOfLine) { @@ -232,7 +232,7 @@ void yyerror(YYLTYPE * loc, yyscan_t scanner, ParseData * data, const char * err %} %union { - // !!! We're probably leaking stuff here. + // !!! We're probably leaking stuff here. nix::Expr * e; nix::ExprList * list; nix::ExprAttrs * attrs; @@ -465,7 +465,7 @@ formal : ID { $$ = new Formal(data->symbols.create($1), 0); } | ID '?' expr { $$ = new Formal(data->symbols.create($1), $3); } ; - + %% @@ -478,7 +478,7 @@ formal namespace nix { - + Expr * EvalState::parse(const char * text, const Path & path, const Path & basePath) @@ -492,7 +492,7 @@ Expr * EvalState::parse(const char * text, yy_scan_string(text, scanner); int res = yyparse(scanner, &data); yylex_destroy(scanner); - + if (res) throw ParseError(data.error); try { @@ -500,7 +500,7 @@ Expr * EvalState::parse(const char * text, } catch (Error & e) { throw ParseError(format("%1%, in `%2%'") % e.msg() % path); } - + return data.result; } @@ -552,7 +552,7 @@ void EvalState::addToSearchPath(const string & s) prefix = string(s, 0, pos); path = string(s, pos + 1); } - + path = absPath(path); if (pathExists(path)) { debug(format("adding path `%1%' to the search path") % path); @@ -565,7 +565,7 @@ Path EvalState::findFile(const string & path) { foreach (SearchPath::iterator, i, searchPath) { Path res; - if (i->first.empty()) + if (i->first.empty()) res = i->second + "/" + path; else { if (path.compare(0, i->first.size(), i->first) != 0 || diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index deb66fd69..bcaa51dd6 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -37,7 +37,7 @@ std::pair<string, string> decodeContext(const string & s) /* Load and evaluate an expression from path specified by the - argument. */ + argument. */ static void prim_import(EvalState & state, Value * * args, Value & v) { PathSet context; @@ -56,7 +56,7 @@ static void prim_import(EvalState & state, Value * * args, Value & v) unsigned long long downloadSize, narSize; queryMissing(*store, singleton<PathSet>(ctx), willBuild, willSubstitute, unknown, downloadSize, narSize); - + /* !!! If using a substitute, we only need to fetch the selected output of this derivation. */ store->buildPaths(singleton<PathSet>(ctx)); @@ -197,7 +197,7 @@ static void prim_genericClosure(EvalState & state, Value * * args, Value & v) if (doneKeys.find(*key->value) != doneKeys.end()) continue; doneKeys.insert(*key->value); res.push_back(*e); - + /* Call the `operator' function with `e' as argument. */ Value call; mkApp(call, *op->value, *e); @@ -247,7 +247,7 @@ static void prim_addErrorContext(EvalState & state, Value * * args, Value & v) } -/* Try evaluating the argument. Success => {success=true; value=something;}, +/* Try evaluating the argument. Success => {success=true; value=something;}, * else => {success=false; value=false;} */ static void prim_tryEval(EvalState & state, Value * * args, Value & v) { @@ -634,7 +634,7 @@ static void prim_toFile(EvalState & state, Value * * args, Value & v) throw EvalError(format("in `toFile': the file `%1%' cannot refer to derivation outputs") % name); refs.insert(path); } - + Path storePath = settings.readOnlyMode ? computeStorePathForText(name, contents, refs) : store->addTextToStore(name, contents, refs, state.repair); @@ -651,7 +651,7 @@ struct FilterFromExpr : PathFilter { EvalState & state; Value & filter; - + FilterFromExpr(EvalState & state, Value & filter) : state(state), filter(filter) { @@ -672,12 +672,12 @@ struct FilterFromExpr : PathFilter state.callFunction(filter, arg1, fun2); Value arg2; - mkString(arg2, + mkString(arg2, S_ISREG(st.st_mode) ? "regular" : S_ISDIR(st.st_mode) ? "directory" : S_ISLNK(st.st_mode) ? "symlink" : "unknown" /* not supported, will fail! */); - + Value res; state.callFunction(fun2, arg2, res); @@ -801,12 +801,12 @@ static void prim_listToAttrs(EvalState & state, Value * * args, Value & v) for (unsigned int i = 0; i < args[0]->list.length; ++i) { Value & v2(*args[0]->list.elems[i]); state.forceAttrs(v2); - + Bindings::iterator j = v2.attrs->find(state.sName); if (j == v2.attrs->end()) throw TypeError("`name' attribute missing in a call to `listToAttrs'"); string name = state.forceStringNoCtx(*j->value); - + Bindings::iterator j2 = v2.attrs->find(state.symbols.create("value")); if (j2 == v2.attrs->end()) throw TypeError("`value' attribute missing in a call to `listToAttrs'"); @@ -830,7 +830,7 @@ static void prim_intersectAttrs(EvalState & state, Value * * args, Value & v) { state.forceAttrs(*args[0]); state.forceAttrs(*args[1]); - + state.mkAttrs(v, std::min(args[0]->attrs->size(), args[1]->attrs->size())); foreach (Bindings::iterator, i, *args[0]->attrs) { @@ -933,7 +933,7 @@ static void prim_map(EvalState & state, Value * * args, Value & v) state.mkList(v, args[1]->list.length); for (unsigned int n = 0; n < v.list.length; ++n) - mkApp(*(v.list.elems[n] = state.allocValue()), + mkApp(*(v.list.elems[n] = state.allocValue()), *args[0], *args[1]->list.elems[n]); } @@ -1105,7 +1105,7 @@ static void prim_unsafeDiscardOutputDependency(EvalState & state, Value * * args if (p.at(0) == '=') p = "~" + string(p, 1); context2.insert(p); } - + mkString(v, s, context2); } @@ -1167,10 +1167,10 @@ void EvalState::createBaseEnv() mkBool(v, true); addConstant("true", v); - + mkBool(v, false); addConstant("false", v); - + v.type = tNull; addConstant("null", v); |