style(3p/nix): Add braces around single-line conditionals

These were not caught by the previous clang-tidy invocation, but were
instead sorted out using amber[0] as such:

    ambr --regex 'if (\(.+\))\s([a-z].*;)' 'if $1 { $2 }'

[0]: https://github.com/dalance/amber
This commit is contained in:
Vincent Ambo 2020-05-19 18:55:58 +01:00
parent c6a31838cd
commit 867055133d
97 changed files with 2223 additions and 753 deletions

View file

@ -19,14 +19,18 @@ static Strings parseAttrPath(const string& s) {
if (i == s.end())
throw Error(format("missing closing quote in selection path '%1%'") %
s);
if (*i == '"') break;
if (*i == '"') {
break;
}
cur.push_back(*i++);
}
} else
cur.push_back(*i);
++i;
}
if (!cur.empty()) res.push_back(cur);
if (!cur.empty()) {
res.push_back(cur);
}
return res;
}
@ -44,7 +48,9 @@ Value* findAlongAttrPath(EvalState& state, const string& attrPath,
/* Is i an index (integer) or a normal attribute name? */
enum { apAttr, apIndex } apType = apAttr;
unsigned int attrIndex;
if (string2Int(attr, attrIndex)) apType = apIndex;
if (string2Int(attr, attrIndex)) {
apType = apIndex;
}
/* Evaluate the expression. */
Value* vNew = state.allocValue();

View file

@ -51,7 +51,9 @@ class Bindings {
iterator find(const Symbol& name) {
Attr key(name, 0);
iterator i = std::lower_bound(begin(), end(), key);
if (i != end() && i->name == name) return i;
if (i != end() && i->name == name) {
return i;
}
return end();
}

View file

@ -81,7 +81,9 @@ inline void* allocBytes(size_t n) {
#else
p = calloc(n, 1);
#endif
if (!p) throw std::bad_alloc();
if (!p) {
throw std::bad_alloc();
}
return p;
}

View file

@ -37,7 +37,9 @@ static char* dupString(const char* s) {
#else
t = strdup(s);
#endif
if (!t) throw std::bad_alloc();
if (!t) {
throw std::bad_alloc();
}
return t;
}
@ -201,7 +203,9 @@ static Symbol getName(const AttrName& name, EvalState& state, Env& env) {
static bool gcInitialised = false;
void initGC() {
if (gcInitialised) return;
if (gcInitialised) {
return;
}
#if HAVE_BOEHMGC
/* Initialise the Boehm garbage collector. */
@ -233,8 +237,12 @@ void initGC() {
size_t maxSize = 384 * 1024 * 1024;
long pageSize = sysconf(_SC_PAGESIZE);
long pages = sysconf(_SC_PHYS_PAGES);
if (pageSize != -1) size = (pageSize * pages) / 4; // 25% of RAM
if (size > maxSize) size = maxSize;
if (pageSize != -1) {
size = (pageSize * pages) / 4;
} // 25% of RAM
if (size > maxSize) {
size = maxSize;
}
#endif
DLOG(INFO) << "setting initial heap size to " << size << " bytes";
GC_expand_hp(size);
@ -257,12 +265,16 @@ static Strings parseNixPath(const string& s) {
auto start2 = p;
while (p != s.end() && *p != ':') {
if (*p == '=') start2 = p + 1;
if (*p == '=') {
start2 = p + 1;
}
++p;
}
if (p == s.end()) {
if (p != start) res.push_back(std::string(start, p));
if (p != start) {
res.push_back(std::string(start, p));
}
break;
}
@ -272,7 +284,9 @@ static Strings parseNixPath(const string& s) {
while (p != s.end() && *p != ':') ++p;
}
res.push_back(std::string(start, p));
if (p == s.end()) break;
if (p == s.end()) {
break;
}
}
++p;
@ -331,7 +345,9 @@ EvalState::EvalState(const Strings& _searchPath, ref<Store> store)
for (auto& i : searchPath) {
auto r = resolveSearchPathElem(i);
if (!r.first) continue;
if (!r.first) {
continue;
}
auto path = r.second;
@ -354,10 +370,14 @@ EvalState::EvalState(const Strings& _searchPath, ref<Store> store)
EvalState::~EvalState() {}
Path EvalState::checkSourcePath(const Path& path_) {
if (!allowedPaths) return path_;
if (!allowedPaths) {
return path_;
}
auto i = resolvedPaths.find(path_);
if (i != resolvedPaths.end()) return i->second;
if (i != resolvedPaths.end()) {
return i->second;
}
bool found = false;
@ -394,7 +414,9 @@ Path EvalState::checkSourcePath(const Path& path_) {
}
void EvalState::checkURI(const std::string& uri) {
if (!evalSettings.restrictEval) return;
if (!evalSettings.restrictEval) {
return;
}
/* 'uri' should be equal to a prefix, or in a subdirectory of a
prefix. Thus, the prefix https://github.co does not permit
@ -565,7 +587,9 @@ inline Value* EvalState::lookupVar(Env* env, const ExprVar& var, bool noEval) {
}
Bindings::iterator j = env->values[0]->attrs->find(var.name);
if (j != env->values[0]->attrs->end()) {
if (countCalls && j->pos) attrSelects[*j->pos]++;
if (countCalls && j->pos) {
attrSelects[*j->pos]++;
}
return j->value;
}
if (!env->prevWith)
@ -703,7 +727,9 @@ void EvalState::evalFile(const Path& path_, Value& v) {
Expr* e = nullptr;
auto j = fileParseCache.find(path2);
if (j != fileParseCache.end()) e = j->second;
if (j != fileParseCache.end()) {
e = j->second;
}
if (!e) {
e = parseExprFromFile(checkSourcePath(path2));
@ -719,7 +745,9 @@ void EvalState::evalFile(const Path& path_, Value& v) {
}
fileEvalCache[path2] = v;
if (path != path2) fileEvalCache[path] = v;
if (path != path2) {
fileEvalCache[path] = v;
}
}
void EvalState::resetFileCache() {
@ -831,7 +859,9 @@ void ExprAttrs::eval(EvalState& state, Env& env, Value& v) {
Value nameVal;
i.nameExpr->eval(state, *dynamicEnv, nameVal);
state.forceValue(nameVal, i.pos);
if (nameVal.type == tNull) continue;
if (nameVal.type == tNull) {
continue;
}
state.forceStringNoCtx(nameVal);
Symbol nameSym = state.symbols.create(nameVal.string.s);
Bindings::iterator j = v.attrs->find(nameSym);
@ -923,7 +953,9 @@ void ExprSelect::eval(EvalState& state, Env& env, Value& v) {
}
vAttrs = j->value;
pos2 = j->pos;
if (state.countCalls && pos2) state.attrSelects[*pos2]++;
if (state.countCalls && pos2) {
state.attrSelects[*pos2]++;
}
}
state.forceValue(*vAttrs, (pos2 != NULL ? *pos2 : this->pos));
@ -999,7 +1031,9 @@ void EvalState::callPrimOp(Value& fun, Value& arg, Value& v, const Pos& pos) {
/* And call the primop. */
nrPrimOpCalls++;
if (countCalls) primOpCalls[primOp->primOp->name]++;
if (countCalls) {
primOpCalls[primOp->primOp->name]++;
}
primOp->primOp->fun(*this, pos, vArgs, v);
} else {
Value* fun2 = allocValue();
@ -1059,7 +1093,9 @@ void EvalState::callFunction(Value& fun, Value& arg, Value& v, const Pos& pos) {
} else {
forceAttrs(arg, pos);
if (!lambda.arg.empty()) env2.values[displ++] = &arg;
if (!lambda.arg.empty()) {
env2.values[displ++] = &arg;
}
/* For each formal argument, get the actual argument. If
there is no matching actual argument but the formal
@ -1283,7 +1319,9 @@ void EvalState::concatLists(Value& v, size_t nrLists, Value** lists,
auto out = v.listElems();
for (size_t n = 0, pos = 0; n < nrLists; ++n) {
auto l = lists[n]->listSize();
if (l) memcpy(out + pos, lists[n]->listElems(), l * sizeof(Value*));
if (l) {
memcpy(out + pos, lists[n]->listElems(), l * sizeof(Value*));
}
pos += l;
}
}
@ -1361,7 +1399,9 @@ void EvalState::forceValueDeep(Value& v) {
std::function<void(Value & v)> recurse;
recurse = [&](Value& v) {
if (seen.find(&v) != seen.end()) return;
if (seen.find(&v) != seen.end()) {
return;
}
seen.insert(&v);
forceValue(v);
@ -1526,11 +1566,21 @@ string EvalState::coerceToString(const Pos& pos, Value& v, PathSet& context,
if (coerceMore) {
/* Note that `false' is represented as an empty string for
shell scripting convenience, just like `null'. */
if (v.type == tBool && v.boolean) return "1";
if (v.type == tBool && !v.boolean) return "";
if (v.type == tInt) return std::to_string(v.integer);
if (v.type == tFloat) return std::to_string(v.fpoint);
if (v.type == tNull) return "";
if (v.type == tBool && v.boolean) {
return "1";
}
if (v.type == tBool && !v.boolean) {
return "";
}
if (v.type == tInt) {
return std::to_string(v.integer);
}
if (v.type == tFloat) {
return std::to_string(v.fpoint);
}
if (v.type == tNull) {
return "";
}
if (v.isList()) {
string result;
@ -1654,7 +1704,9 @@ bool EvalState::eqValues(Value& v1, Value& v2) {
Bindings::iterator i, j;
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;
if (i->name != j->name || !eqValues(*i->value, *j->value)) {
return false;
}
}
return true;
@ -1697,7 +1749,9 @@ void EvalState::printStats() {
if (showStats) {
auto outPath = getEnv("NIX_SHOW_STATS_PATH", "-");
std::fstream fs;
if (outPath != "-") fs.open(outPath, std::fstream::out);
if (outPath != "-") {
fs.open(outPath, std::fstream::out);
}
JSONObject topObj(outPath == "-" ? std::cerr : fs, true);
topObj.attr("cpuTime", cpuTime);
{
@ -1796,7 +1850,9 @@ size_t valueSize(Value& v) {
std::set<const void*> seen;
auto doString = [&](const char* s) -> size_t {
if (seen.find(s) != seen.end()) return 0;
if (seen.find(s) != seen.end()) {
return 0;
}
seen.insert(s);
return strlen(s) + 1;
};
@ -1805,7 +1861,9 @@ size_t valueSize(Value& v) {
std::function<size_t(Env & v)> doEnv;
doValue = [&](Value& v) -> size_t {
if (seen.find(&v) != seen.end()) return 0;
if (seen.find(&v) != seen.end()) {
return 0;
}
seen.insert(&v);
size_t sz = sizeof(Value);
@ -1851,7 +1909,9 @@ size_t valueSize(Value& v) {
sz += doValue(*v.primOpApp.right);
break;
case tExternal:
if (seen.find(v.external) != seen.end()) break;
if (seen.find(v.external) != seen.end()) {
break;
}
seen.insert(v.external);
sz += v.external->valueSize(seen);
break;
@ -1862,16 +1922,22 @@ size_t valueSize(Value& v) {
};
doEnv = [&](Env& env) -> size_t {
if (seen.find(&env) != seen.end()) return 0;
if (seen.find(&env) != seen.end()) {
return 0;
}
seen.insert(&env);
size_t sz = sizeof(Env) + sizeof(Value*) * env.size;
if (env.type != Env::HasWithExpr)
for (size_t i = 0; i < env.size; ++i)
if (env.values[i]) sz += doValue(*env.values[i]);
if (env.values[i]) {
sz += doValue(*env.values[i]);
}
if (env.up) sz += doEnv(*env.up);
if (env.up) {
sz += doEnv(*env.up);
}
return sz;
};

View file

@ -44,7 +44,9 @@ DrvInfo::DrvInfo(EvalState& state, ref<Store> store,
string DrvInfo::queryName() const {
if (name == "" && attrs) {
auto i = attrs->find(state->sName);
if (i == attrs->end()) throw TypeError("derivation name missing");
if (i == attrs->end()) {
throw TypeError("derivation name missing");
}
name = state->forceStringNoCtx(*i->value);
}
return name;
@ -122,13 +124,19 @@ DrvInfo::Outputs DrvInfo::queryOutputs(bool onlyOutputsToInstall) {
}
const auto errMsg = Error("this derivation has bad 'meta.outputsToInstall'");
/* ^ this shows during `nix-env -i` right under the bad derivation */
if (!outTI->isList()) throw errMsg;
if (!outTI->isList()) {
throw errMsg;
}
Outputs result;
for (auto i = outTI->listElems(); i != outTI->listElems() + outTI->listSize();
++i) {
if ((*i)->type != tString) throw errMsg;
if ((*i)->type != tString) {
throw errMsg;
}
auto out = outputs.find((*i)->string.s);
if (out == outputs.end()) throw errMsg;
if (out == outputs.end()) {
throw errMsg;
}
result.insert(*out);
}
return result;
@ -206,7 +214,9 @@ Value* DrvInfo::queryMeta(const string& name) {
string DrvInfo::queryMetaString(const string& name) {
Value* v = queryMeta(name);
if (!v || v->type != tString) return "";
if (!v || v->type != tString) {
return "";
}
return v->string.s;
}
@ -222,7 +232,9 @@ NixInt DrvInfo::queryMetaInt(const string& name, NixInt def) {
/* Backwards compatibility with before we had support for
integer meta fields. */
NixInt n;
if (string2Int(v->string.s, n)) return n;
if (string2Int(v->string.s, n)) {
return n;
}
}
return def;
}
@ -239,7 +251,9 @@ NixFloat DrvInfo::queryMetaFloat(const string& name, NixFloat def) {
/* Backwards compatibility with before we had support for
float meta fields. */
NixFloat n;
if (string2Float(v->string.s, n)) return n;
if (string2Float(v->string.s, n)) {
return n;
}
}
return def;
}
@ -255,8 +269,12 @@ bool DrvInfo::queryMetaBool(const string& name, bool def) {
if (v->type == tString) {
/* Backwards compatibility with before we had support for
Boolean meta fields. */
if (strcmp(v->string.s, "true") == 0) return true;
if (strcmp(v->string.s, "false") == 0) return false;
if (strcmp(v->string.s, "true") == 0) {
return true;
}
if (strcmp(v->string.s, "false") == 0) {
return false;
}
}
return def;
}
@ -268,7 +286,9 @@ void DrvInfo::setMeta(const string& name, Value* v) {
Symbol sym = state->symbols.create(name);
if (old) {
for (auto i : *old) {
if (i.name != sym) meta->push_back(i);
if (i.name != sym) {
meta->push_back(i);
}
}
}
if (v) {
@ -295,7 +315,9 @@ static bool getDerivation(EvalState& state, Value& v, const string& attrPath,
/* Remove spurious duplicates (e.g., a set like `rec { x =
derivation {...}; y = x;}'. */
if (done.find(v.attrs) != done.end()) return false;
if (done.find(v.attrs) != done.end()) {
return false;
}
done.insert(v.attrs);
DrvInfo drv(state, attrPath, v.attrs);
@ -319,7 +341,9 @@ std::optional<DrvInfo> getDerivation(EvalState& state, Value& v,
Done done;
DrvInfos drvs;
getDerivation(state, v, "", drvs, done, ignoreAssertionFailures);
if (drvs.size() != 1) return {};
if (drvs.size() != 1) {
return {};
}
return std::move(drvs.front());
}
@ -354,7 +378,9 @@ static void getDerivations(EvalState& state, Value& vIn,
precedence). */
for (auto& i : v.attrs->lexicographicOrder()) {
DLOG(INFO) << "evaluating attribute '" << i->name << "'";
if (!std::regex_match(std::string(i->name), attrRegex)) continue;
if (!std::regex_match(std::string(i->name), attrRegex)) {
continue;
}
string pathPrefix2 = addToPath(pathPrefix, i->name);
if (combineChannels)
getDerivations(state, *i->value, pathPrefix2, autoArgs, drvs, done,

View file

@ -12,9 +12,13 @@ static void skipWhitespace(const char*& s) {
static string parseJSONString(const char*& s) {
string res;
if (*s++ != '"') throw JSONParseError("expected JSON string");
if (*s++ != '"') {
throw JSONParseError("expected JSON string");
}
while (*s != '"') {
if (!*s) throw JSONParseError("got end-of-string in JSON string");
if (!*s) {
throw JSONParseError("got end-of-string in JSON string");
}
if (*s == '\\') {
s++;
if (*s == '"')
@ -52,7 +56,9 @@ static string parseJSONString(const char*& s) {
static void parseJSON(EvalState& state, const char*& s, Value& v) {
skipWhitespace(s);
if (!*s) throw JSONParseError("expected JSON value");
if (!*s) {
throw JSONParseError("expected JSON value");
}
if (*s == '[') {
s++;
@ -60,7 +66,9 @@ static void parseJSON(EvalState& state, const char*& s, Value& v) {
values.reserve(128);
skipWhitespace(s);
while (1) {
if (values.empty() && *s == ']') break;
if (values.empty() && *s == ']') {
break;
}
Value* v2 = state.allocValue();
parseJSON(state, s, *v2);
values.push_back(v2);
@ -82,10 +90,14 @@ static void parseJSON(EvalState& state, const char*& s, Value& v) {
ValueMap attrs;
while (1) {
skipWhitespace(s);
if (attrs.empty() && *s == '}') break;
if (attrs.empty() && *s == '}') {
break;
}
string name = parseJSONString(s);
skipWhitespace(s);
if (*s != ':') throw JSONParseError("expected ':' in JSON object");
if (*s != ':') {
throw JSONParseError("expected ':' in JSON object");
}
s++;
Value* v2 = state.allocValue();
parseJSON(state, s, *v2);
@ -114,7 +126,9 @@ static void parseJSON(EvalState& state, const char*& s, Value& v) {
ValueType number_type = tInt;
while (isdigit(*s) || *s == '-' || *s == '.' || *s == 'e' || *s == 'E') {
if (*s == '.' || *s == 'e' || *s == 'E') number_type = tFloat;
if (*s == '.' || *s == 'e' || *s == 'E') {
number_type = tFloat;
}
tmp_number += *s++;
}

View file

@ -60,15 +60,15 @@ static Expr * unescapeStr(SymbolTable & symbols, const char * s, size_t length)
if (c == '\\') {
assert(*s);
c = *s++;
if (c == 'n') t += '\n';
else if (c == 'r') t += '\r';
else if (c == 't') t += '\t';
if (c == 'n') { t += '\n'; }
else if (c == 'r') { t += '\r'; }
else if (c == 't') { t += '\t'; }
else t += c;
}
else if (c == '\r') {
/* Normalise CR and CR/LF into LF. */
t += '\n';
if (*s == '\n') s++; /* cr/lf */
if (*s == '\n') { s++; } /* cr/lf */
}
else t += c;
}

View file

@ -28,9 +28,13 @@ bool DrvName::matches(DrvName& n) {
if (!regex)
regex = std::unique_ptr<std::regex>(
new std::regex(name, std::regex::extended));
if (!std::regex_match(n.name, *regex)) return false;
if (!std::regex_match(n.name, *regex)) {
return false;
}
}
if (version != "" && version != n.version) {
return false;
}
if (version != "" && version != n.version) return false;
return true;
}
@ -39,7 +43,9 @@ string nextComponent(string::const_iterator& p,
/* Skip any dots and dashes (component separators). */
while (p != end && (*p == '.' || *p == '-')) ++p;
if (p == end) return "";
if (p == end) {
return "";
}
/* If the first character is a digit, consume the longest sequence
of digits. Otherwise, consume the longest sequence of

View file

@ -70,7 +70,9 @@ void ExprVar::show(std::ostream& str) const { str << name; }
void ExprSelect::show(std::ostream& str) const {
str << "(" << *e << ")." << showAttrPath(attrPath);
if (def) str << " or (" << *def << ")";
if (def) {
str << " or (" << *def << ")";
}
}
void ExprOpHasAttr::show(std::ostream& str) const {
@ -78,7 +80,9 @@ void ExprOpHasAttr::show(std::ostream& str) const {
}
void ExprAttrs::show(std::ostream& str) const {
if (recursive) str << "rec ";
if (recursive) {
str << "rec ";
}
str << "{ ";
for (auto& i : attrs)
if (i.second.inherited)
@ -108,16 +112,24 @@ void ExprLambda::show(std::ostream& str) const {
else
str << ", ";
str << i.name;
if (i.def) str << " ? " << *i.def;
if (i.def) {
str << " ? " << *i.def;
}
}
if (formals->ellipsis) {
if (!first) str << ", ";
if (!first) {
str << ", ";
}
str << "...";
}
str << " }";
if (!arg.empty()) str << " @ ";
if (!arg.empty()) {
str << " @ ";
}
}
if (!arg.empty()) {
str << arg;
}
if (!arg.empty()) str << arg;
str << ": " << *body << ")";
}
@ -239,13 +251,17 @@ void ExprSelect::bindVars(const StaticEnv& env) {
def->bindVars(env);
}
for (auto& i : attrPath)
if (!i.symbol.set()) i.expr->bindVars(env);
if (!i.symbol.set()) {
i.expr->bindVars(env);
}
}
void ExprOpHasAttr::bindVars(const StaticEnv& env) {
e->bindVars(env);
for (auto& i : attrPath)
if (!i.symbol.set()) i.expr->bindVars(env);
if (!i.symbol.set()) {
i.expr->bindVars(env);
}
}
void ExprAttrs::bindVars(const StaticEnv& env) {
@ -296,7 +312,9 @@ void ExprLambda::bindVars(const StaticEnv& env) {
}
for (auto& i : formals->formals)
if (i.def) i.def->bindVars(newEnv);
if (i.def) {
i.def->bindVars(newEnv);
}
}
body->bindVars(newEnv);

View file

@ -89,7 +89,7 @@ static void addAttr(ExprAttrs * attrs, AttrPath & attrPath,
if (j != attrs->attrs.end()) {
if (!j->second.inherited) {
ExprAttrs * attrs2 = dynamic_cast<ExprAttrs *>(j->second.e);
if (!attrs2) dupAttr(attrPath, pos, j->second.pos);
if (!attrs2) { dupAttr(attrPath, pos, j->second.pos); }
attrs = attrs2;
} else
dupAttr(attrPath, pos, j->second.pos);
@ -148,7 +148,7 @@ static void addFormal(const Pos & pos, Formals * formals, const Formal & formal)
static Expr * stripIndentation(const Pos & pos, SymbolTable & symbols, vector<Expr *> & es)
{
if (es.empty()) return new ExprString(symbols.create(""));
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
@ -162,7 +162,7 @@ static Expr * stripIndentation(const Pos & pos, SymbolTable & symbols, vector<Ex
/* Anti-quotations end the current start-of-line whitespace. */
if (atStartOfLine) {
atStartOfLine = false;
if (curIndent < minIndent) minIndent = curIndent;
if (curIndent < minIndent) { minIndent = curIndent; }
}
continue;
}
@ -176,7 +176,7 @@ static Expr * stripIndentation(const Pos & pos, SymbolTable & symbols, vector<Ex
curIndent = 0;
} else {
atStartOfLine = false;
if (curIndent < minIndent) minIndent = curIndent;
if (curIndent < minIndent) { minIndent = curIndent; }
}
} else if (e->s[j] == '\n') {
atStartOfLine = true;
@ -216,7 +216,7 @@ static Expr * stripIndentation(const Pos & pos, SymbolTable & symbols, vector<Ex
}
} else {
s2 += e->s[j];
if (e->s[j] == '\n') atStartOfLine = true;
if (e->s[j] == '\n') { atStartOfLine = true; }
}
}
@ -559,7 +559,7 @@ Expr * EvalState::parse(const char * text,
int res = yyparse(scanner, &data);
yylex_destroy(scanner);
if (res) throw ParseError(data.error);
if (res) { throw ParseError(data.error); }
data.result->bindVars(staticEnv);
@ -577,7 +577,7 @@ Path resolveExprPath(Path path)
while (true) {
if (lstat(path.c_str(), &st))
throw SysError(format("getting status of '%1%'") % path);
if (!S_ISLNK(st.st_mode)) break;
if (!S_ISLNK(st.st_mode)) { break; }
path = absPath(readLink(path), dirOf(path));
}
@ -656,9 +656,9 @@ Path EvalState::findFile(SearchPath & searchPath, const string & path, const Pos
suffix = path.size() == s ? "" : "/" + string(path, s);
}
auto r = resolveSearchPathElem(i);
if (!r.first) continue;
if (!r.first) { continue; }
Path res = r.second + suffix;
if (pathExists(res)) return canonPath(res);
if (pathExists(res)) { return canonPath(res); }
}
format f = format(
"file '%1%' was not found in the Nix search path (add it using $NIX_PATH or -I)"
@ -671,7 +671,7 @@ Path EvalState::findFile(SearchPath & searchPath, const string & path, const Pos
std::pair<bool, std::string> EvalState::resolveSearchPathElem(const SearchPathElem & elem)
{
auto i = searchPathResolved.find(elem.second);
if (i != searchPathResolved.end()) return i->second;
if (i != searchPathResolved.end()) { return i->second; }
std::pair<bool, std::string> res;

View file

@ -51,7 +51,9 @@ void EvalState::realiseContext(const PathSet& context) {
std::pair<string, string> decoded = decodeContext(i);
Path ctx = decoded.first;
assert(store->isStorePath(ctx));
if (!store->isValidPath(ctx)) throw InvalidPathError(ctx);
if (!store->isValidPath(ctx)) {
throw InvalidPathError(ctx);
}
if (!decoded.second.empty() && nix::isDerivation(ctx)) {
drvs.insert(decoded.first + "!" + decoded.second);
@ -68,7 +70,9 @@ void EvalState::realiseContext(const PathSet& context) {
}
}
if (drvs.empty()) return;
if (drvs.empty()) {
return;
}
if (!evalSettings.enableImportFromDerivation)
throw EvalError(format("attempted to realize '%1%' during evaluation but "
@ -417,7 +421,9 @@ static void prim_genericClosure(EvalState& state, const Pos& pos, Value** args,
throw EvalError(format("attribute 'key' required, at %1%") % pos);
state.forceValue(*key->value);
if (doneKeys.find(key->value) != doneKeys.end()) continue;
if (doneKeys.find(key->value) != doneKeys.end()) {
continue;
}
doneKeys.insert(key->value);
res.push_back(e);
@ -583,7 +589,9 @@ static void prim_derivationStrict(EvalState& state, const Pos& pos,
outputs.insert("out");
for (auto& i : args[0]->attrs->lexicographicOrder()) {
if (i->name == state.sIgnoreNulls) continue;
if (i->name == state.sIgnoreNulls) {
continue;
}
const string& key = i->name;
auto handleHashMode = [&](const std::string& s) {
@ -623,7 +631,9 @@ static void prim_derivationStrict(EvalState& state, const Pos& pos,
try {
if (ignoreNulls) {
state.forceValue(*i->value);
if (i->value->type == tNull) continue;
if (i->value->type == tNull) {
continue;
}
}
/* The `args' attribute is special: it supplies the
@ -641,7 +651,9 @@ static void prim_derivationStrict(EvalState& state, const Pos& pos,
the environment. */
else {
if (jsonObject) {
if (i->name == state.sStructuredAttrs) continue;
if (i->name == state.sStructuredAttrs) {
continue;
}
auto placeholder(jsonObject->placeholder(key));
printValueAsJSON(state, true, *i->value, placeholder, context);
@ -758,7 +770,9 @@ static void prim_derivationStrict(EvalState& state, const Pos& pos,
Path outPath =
state.store->makeFixedOutputPath(outputHashRecursive, h, drvName);
if (!jsonObject) drv.env["out"] = outPath;
if (!jsonObject) {
drv.env["out"] = outPath;
}
drv.outputs["out"] = DerivationOutput(
outPath, (outputHashRecursive ? "r:" : "") + printHashType(h.type),
h.to_string(Base16, false));
@ -771,7 +785,9 @@ static void prim_derivationStrict(EvalState& state, const Pos& pos,
an empty value. This ensures that changes in the set of
output names do get reflected in the hash. */
for (auto& i : outputs) {
if (!jsonObject) drv.env[i] = "";
if (!jsonObject) {
drv.env[i] = "";
}
drv.outputs[i] = DerivationOutput("", "", "");
}
@ -782,7 +798,9 @@ static void prim_derivationStrict(EvalState& state, const Pos& pos,
for (auto& i : drv.outputs)
if (i.second.path == "") {
Path outPath = state.store->makeOutputPath(i.first, h, drvName);
if (!jsonObject) drv.env[i.first] = outPath;
if (!jsonObject) {
drv.env[i.first] = outPath;
}
i.second.path = outPath;
}
}
@ -845,12 +863,16 @@ static void prim_storePath(EvalState& state, const Pos& pos, Value** args,
/* Resolve symlinks in path, unless path itself is a symlink
directly in the store. The latter condition is necessary so
e.g. nix-push does the right thing. */
if (!state.store->isStorePath(path)) path = canonPath(path, true);
if (!state.store->isStorePath(path)) {
path = canonPath(path, true);
}
if (!state.store->isInStore(path))
throw EvalError(format("path '%1%' is not in the Nix store, at %2%") %
path % pos);
Path path2 = state.store->toStorePath(path);
if (!settings.readOnlyMode) state.store->ensurePath(path2);
if (!settings.readOnlyMode) {
state.store->ensurePath(path2);
}
context.insert(path2);
mkString(v, path, context);
}
@ -936,7 +958,9 @@ static void prim_findFile(EvalState& state, const Pos& pos, Value** args,
string prefix;
Bindings::iterator i = v2.attrs->find(state.symbols.create("prefix"));
if (i != v2.attrs->end()) prefix = state.forceStringNoCtx(*i->value, pos);
if (i != v2.attrs->end()) {
prefix = state.forceStringNoCtx(*i->value, pos);
}
i = v2.attrs->find(state.symbols.create("path"));
if (i == v2.attrs->end())
@ -995,7 +1019,9 @@ static void prim_readDir(EvalState& state, const Pos& pos, Value** args,
for (auto& ent : entries) {
Value* ent_val = state.allocAttr(v, state.symbols.create(ent.name));
if (ent.type == DT_UNKNOWN) ent.type = getFileType(path + "/" + ent.name);
if (ent.type == DT_UNKNOWN) {
ent.type = getFileType(path + "/" + ent.name);
}
mkStringNoCopy(*ent_val,
ent.type == DT_REG
? "regular"
@ -1178,8 +1204,12 @@ static void prim_path(EvalState& state, const Pos& pos, Value** args,
format("unsupported argument '%1%' to 'addPath', at %2%") %
attr.name % *attr.pos);
}
if (path.empty()) throw EvalError(format("'path' required, at %1%") % pos);
if (name.empty()) name = baseNameOf(path);
if (path.empty()) {
throw EvalError(format("'path' required, at %1%") % pos);
}
if (name.empty()) {
name = baseNameOf(path);
}
addPath(state, pos, name, path, filterFun, recursive, expectedHash, v);
}
@ -1236,7 +1266,9 @@ void prim_getAttr(EvalState& state, const Pos& pos, Value** args, Value& v) {
if (i == args[1]->attrs->end())
throw EvalError(format("attribute '%1%' missing, at %2%") % attr % pos);
// !!! add to stack trace?
if (state.countCalls && i->pos) state.attrSelects[*i->pos]++;
if (state.countCalls && i->pos) {
state.attrSelects[*i->pos]++;
}
state.forceValue(*i->value);
v = *i->value;
}
@ -1287,7 +1319,9 @@ static void prim_removeAttrs(EvalState& state, const Pos& pos, Value** args,
vector. */
state.mkAttrs(v, args[0]->attrs->size());
for (auto& i : *args[0]->attrs) {
if (names.find(i.name) == names.end()) v.attrs->push_back(i);
if (names.find(i.name) == names.end()) {
v.attrs->push_back(i);
}
}
}
@ -1673,12 +1707,16 @@ static void prim_partition(EvalState& state, const Pos& pos, Value** args,
Value* vRight = state.allocAttr(v, state.sRight);
auto rsize = right.size();
state.mkList(*vRight, rsize);
if (rsize) memcpy(vRight->listElems(), right.data(), sizeof(Value*) * rsize);
if (rsize) {
memcpy(vRight->listElems(), right.data(), sizeof(Value*) * rsize);
}
Value* vWrong = state.allocAttr(v, state.sWrong);
auto wsize = wrong.size();
state.mkList(*vWrong, wsize);
if (wsize) memcpy(vWrong->listElems(), wrong.data(), sizeof(Value*) * wsize);
if (wsize) {
memcpy(vWrong->listElems(), wrong.data(), sizeof(Value*) * wsize);
}
v.attrs->sort();
}
@ -1705,7 +1743,9 @@ static void prim_concatMap(EvalState& state, const Pos& pos, Value** args,
auto out = v.listElems();
for (unsigned int n = 0, pos = 0; n < nrLists; ++n) {
auto l = lists[n].listSize();
if (l) memcpy(out + pos, lists[n].listElems(), l * sizeof(Value*));
if (l) {
memcpy(out + pos, lists[n].listElems(), l * sizeof(Value*));
}
pos += l;
}
}
@ -1752,7 +1792,9 @@ static void prim_div(EvalState& state, const Pos& pos, Value** args, Value& v) {
state.forceValue(*args[1], pos);
NixFloat f2 = state.forceFloat(*args[1], pos);
if (f2 == 0) throw EvalError(format("division by zero, at %1%") % pos);
if (f2 == 0) {
throw EvalError(format("division by zero, at %1%") % pos);
}
if (args[0]->type == tFloat || args[1]->type == tFloat) {
mkFloat(v,
@ -2012,7 +2054,9 @@ static void prim_replaceStrings(EvalState& state, const Pos& pos, Value** args,
found = true;
res += j->first;
if (i->empty()) {
if (p < s.size()) res += s[p];
if (p < s.size()) {
res += s[p];
}
p++;
} else {
p += i->size();
@ -2022,7 +2066,9 @@ static void prim_replaceStrings(EvalState& state, const Pos& pos, Value** args,
break;
}
if (!found) {
if (p < s.size()) res += s[p];
if (p < s.size()) {
res += s[p];
}
p++;
}
}
@ -2059,7 +2105,9 @@ static void prim_splitVersion(EvalState& state, const Pos& pos, Value** args,
Strings components;
while (iter != version.cend()) {
auto component = nextComponent(iter, version.cend());
if (component.empty()) break;
if (component.empty()) {
break;
}
components.emplace_back(std::move(component));
}
state.mkList(v, components.size());
@ -2114,7 +2162,9 @@ void fetch(EvalState& state, const Pos& pos, Value** args, Value& v,
auto res = getDownloader()->downloadCached(state.store, request);
if (state.allowedPaths) state.allowedPaths->insert(res.path);
if (state.allowedPaths) {
state.allowedPaths->insert(res.path);
}
mkString(v, res.storePath, PathSet({res.storePath}));
}
@ -2136,7 +2186,9 @@ static void prim_fetchTarball(EvalState& state, const Pos& pos, Value** args,
RegisterPrimOp::PrimOps* RegisterPrimOp::primOps;
RegisterPrimOp::RegisterPrimOp(std::string name, size_t arity, PrimOpFun fun) {
if (!primOps) primOps = new PrimOps;
if (!primOps) {
primOps = new PrimOps;
}
primOps->emplace_back(name, arity, fun);
}

View file

@ -111,7 +111,9 @@ static void prim_getContext(EvalState& state, const Pos& pos, Value** args,
for (const auto& info : contextInfos) {
auto& infoVal = *state.allocAttr(v, state.symbols.create(info.first));
state.mkAttrs(infoVal, 3);
if (info.second.path) mkBool(*state.allocAttr(infoVal, sPath), true);
if (info.second.path) {
mkBool(*state.allocAttr(infoVal, sPath), true);
}
if (info.second.allOutputs)
mkBool(*state.allocAttr(infoVal, sAllOutputs), true);
if (!info.second.outputs.empty()) {
@ -147,11 +149,15 @@ static void prim_appendContext(EvalState& state, const Pos& pos, Value** args,
if (!state.store->isStorePath(i.name))
throw EvalError("Context key '%s' is not a store path, at %s", i.name,
i.pos);
if (!settings.readOnlyMode) state.store->ensurePath(i.name);
if (!settings.readOnlyMode) {
state.store->ensurePath(i.name);
}
state.forceAttrs(*i.value, *i.pos);
auto iter = i.value->attrs->find(sPath);
if (iter != i.value->attrs->end()) {
if (state.forceBool(*iter->value, *iter->pos)) context.insert(i.name);
if (state.forceBool(*iter->value, *iter->pos)) {
context.insert(i.name);
}
}
iter = i.value->attrs->find(sAllOutputs);

View file

@ -37,7 +37,9 @@ GitInfo exportGit(ref<Store> store, const std::string& uri,
runProgram("git", true,
{"-C", uri, "diff-index", "--quiet", "HEAD", "--"});
} catch (ExecError& e) {
if (!WIFEXITED(e.status) || WEXITSTATUS(e.status) != 1) throw;
if (!WIFEXITED(e.status) || WEXITSTATUS(e.status) != 1) {
throw;
}
clean = false;
}
@ -78,7 +80,9 @@ GitInfo exportGit(ref<Store> store, const std::string& uri,
ref = "HEAD"s;
}
if (!ref) ref = "HEAD"s;
if (!ref) {
ref = "HEAD"s;
}
if (rev != "" && !std::regex_match(rev, revRegex))
throw Error("invalid Git revision '%s'", rev);
@ -166,7 +170,9 @@ GitInfo exportGit(ref<Store> store, const std::string& uri,
}
} catch (SysError& e) {
if (e.errNo != ENOENT) throw;
if (e.errNo != ENOENT) {
throw;
}
}
// FIXME: should pipe this, or find some better way to extract a

View file

@ -73,7 +73,9 @@ HgInfo exportMercurial(ref<Store> store, const std::string& uri,
}
}
if (rev == "") rev = "default";
if (rev == "") {
rev = "default";
}
Path cacheDir = fmt("%s/nix/hg/%s", getCacheDir(),
hashString(htSHA256, uri).to_string(Base32, false));
@ -149,7 +151,9 @@ HgInfo exportMercurial(ref<Store> store, const std::string& uri,
}
} catch (SysError& e) {
if (e.errNo != ENOENT) throw;
if (e.errNo != ENOENT) {
throw;
}
}
Path tmpDir = createTempDir();

View file

@ -36,7 +36,9 @@ static void showAttrs(EvalState& state, bool strict, bool location,
XMLAttrs xmlAttrs;
xmlAttrs["name"] = i;
if (location && a.pos != &noPos) posToXML(xmlAttrs, *a.pos);
if (location && a.pos != &noPos) {
posToXML(xmlAttrs, *a.pos);
}
XMLOpenElement _(doc, "attr", xmlAttrs);
printValueAsXML(state, strict, location, *a.value, doc, context, drvsSeen);
@ -132,7 +134,9 @@ static void printValueAsXML(EvalState& state, bool strict, bool location,
case tLambda: {
XMLAttrs xmlAttrs;
if (location) posToXML(xmlAttrs, v.lambda.fun->pos);
if (location) {
posToXML(xmlAttrs, v.lambda.fun->pos);
}
XMLOpenElement _(doc, "function", xmlAttrs);
if (v.lambda.fun->matchAttrs) {