mirror of
https://github.com/NixOS/nix
synced 2025-06-30 19:57:59 +02:00
fix(treewide): remove unnecessary copying in range for loops
This gets rid of unnecessary copies in range-based-for loops and local variables, when they are used solely as `const &`. Also added a fixme comment about a suspicious move out of const, which might not be intended.
This commit is contained in:
parent
4fc5295328
commit
fafaec5ac3
20 changed files with 25 additions and 24 deletions
|
@ -858,7 +858,7 @@ std::vector<FlakeRef> RawInstallablesCommand::getFlakeRefsForCompletion()
|
||||||
applyDefaultInstallables(rawInstallables);
|
applyDefaultInstallables(rawInstallables);
|
||||||
std::vector<FlakeRef> res;
|
std::vector<FlakeRef> res;
|
||||||
res.reserve(rawInstallables.size());
|
res.reserve(rawInstallables.size());
|
||||||
for (auto i : rawInstallables)
|
for (const auto & i : rawInstallables)
|
||||||
res.push_back(parseFlakeRefWithFragment(
|
res.push_back(parseFlakeRefWithFragment(
|
||||||
fetchSettings,
|
fetchSettings,
|
||||||
expandTilde(i),
|
expandTilde(i),
|
||||||
|
|
|
@ -4383,7 +4383,7 @@ void prim_split(EvalState & state, const PosIdx pos, Value * * args, Value & v)
|
||||||
|
|
||||||
for (auto i = begin; i != end; ++i) {
|
for (auto i = begin; i != end; ++i) {
|
||||||
assert(idx <= 2 * len + 1 - 3);
|
assert(idx <= 2 * len + 1 - 3);
|
||||||
auto match = *i;
|
const auto & match = *i;
|
||||||
|
|
||||||
// Add a string for non-matched characters.
|
// Add a string for non-matched characters.
|
||||||
list[idx++] = mkString(state, match.prefix());
|
list[idx++] = mkString(state, match.prefix());
|
||||||
|
|
|
@ -132,6 +132,8 @@ static void prim_addDrvOutputDependencies(EvalState & state, const PosIdx pos, V
|
||||||
},
|
},
|
||||||
[&](const NixStringContextElem::DrvDeep & c) -> NixStringContextElem::DrvDeep {
|
[&](const NixStringContextElem::DrvDeep & c) -> NixStringContextElem::DrvDeep {
|
||||||
/* Reuse original item because we want this to be idempotent. */
|
/* Reuse original item because we want this to be idempotent. */
|
||||||
|
/* FIXME: Suspicious move out of const. This is actually a copy, so the comment
|
||||||
|
above does not make much sense. */
|
||||||
return std::move(c);
|
return std::move(c);
|
||||||
},
|
},
|
||||||
}, context.begin()->raw) }),
|
}, context.begin()->raw) }),
|
||||||
|
|
|
@ -40,7 +40,7 @@ static void runFetchClosureWithRewrite(EvalState & state, const PosIdx pos, Stor
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
auto toPath = *toPathMaybe;
|
const auto & toPath = *toPathMaybe;
|
||||||
|
|
||||||
// check and return
|
// check and return
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ Goal::Co DrvOutputSubstitutionGoal::init()
|
||||||
|
|
||||||
bool substituterFailed = false;
|
bool substituterFailed = false;
|
||||||
|
|
||||||
for (auto sub : subs) {
|
for (const auto & sub : subs) {
|
||||||
trace("trying next substituter");
|
trace("trying next substituter");
|
||||||
|
|
||||||
/* The callback of the curl download below can outlive `this` (if
|
/* The callback of the curl download below can outlive `this` (if
|
||||||
|
|
|
@ -57,7 +57,7 @@ Goal::Co PathSubstitutionGoal::init()
|
||||||
|
|
||||||
bool substituterFailed = false;
|
bool substituterFailed = false;
|
||||||
|
|
||||||
for (auto sub : subs) {
|
for (const auto & sub : subs) {
|
||||||
trace("trying next substituter");
|
trace("trying next substituter");
|
||||||
|
|
||||||
cleanup();
|
cleanup();
|
||||||
|
|
|
@ -10,12 +10,12 @@ PublicKeys getDefaultPublicKeys()
|
||||||
|
|
||||||
// FIXME: filter duplicates
|
// FIXME: filter duplicates
|
||||||
|
|
||||||
for (auto s : settings.trustedPublicKeys.get()) {
|
for (const auto & s : settings.trustedPublicKeys.get()) {
|
||||||
PublicKey key(s);
|
PublicKey key(s);
|
||||||
publicKeys.emplace(key.name, key);
|
publicKeys.emplace(key.name, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto secretKeyFile : settings.secretKeyFiles.get()) {
|
for (const auto & secretKeyFile : settings.secretKeyFiles.get()) {
|
||||||
try {
|
try {
|
||||||
SecretKey secretKey(readFile(secretKeyFile));
|
SecretKey secretKey(readFile(secretKeyFile));
|
||||||
publicKeys.emplace(secretKey.name, secretKey.toPublicKey());
|
publicKeys.emplace(secretKey.name, secretKey.toPublicKey());
|
||||||
|
|
|
@ -156,7 +156,7 @@ void LocalOverlayStore::queryGCReferrers(const StorePath & path, StorePathSet &
|
||||||
StorePathSet LocalOverlayStore::queryValidDerivers(const StorePath & path)
|
StorePathSet LocalOverlayStore::queryValidDerivers(const StorePath & path)
|
||||||
{
|
{
|
||||||
auto res = LocalStore::queryValidDerivers(path);
|
auto res = LocalStore::queryValidDerivers(path);
|
||||||
for (auto p : lowerStore->queryValidDerivers(path))
|
for (const auto & p : lowerStore->queryValidDerivers(path))
|
||||||
res.insert(p);
|
res.insert(p);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,7 +118,7 @@ std::string NarInfo::to_string(const Store & store) const
|
||||||
if (deriver)
|
if (deriver)
|
||||||
res += "Deriver: " + std::string(deriver->to_string()) + "\n";
|
res += "Deriver: " + std::string(deriver->to_string()) + "\n";
|
||||||
|
|
||||||
for (auto sig : sigs)
|
for (const auto & sig : sigs)
|
||||||
res += "Sig: " + sig + "\n";
|
res += "Sig: " + sig + "\n";
|
||||||
|
|
||||||
if (ca)
|
if (ca)
|
||||||
|
|
|
@ -454,7 +454,7 @@ struct S3BinaryCacheStoreImpl : virtual S3BinaryCacheStoreConfig, public virtual
|
||||||
debug("got %d keys, next marker '%s'",
|
debug("got %d keys, next marker '%s'",
|
||||||
contents.size(), res.GetNextMarker());
|
contents.size(), res.GetNextMarker());
|
||||||
|
|
||||||
for (auto object : contents) {
|
for (const auto & object : contents) {
|
||||||
auto & key = object.GetKey();
|
auto & key = object.GetKey();
|
||||||
if (key.size() != 40 || !hasSuffix(key, ".narinfo")) continue;
|
if (key.size() != 40 || !hasSuffix(key, ".narinfo")) continue;
|
||||||
paths.insert(parseStorePath(storeDir + "/" + key.substr(0, key.size() - 8) + "-" + MissingName));
|
paths.insert(parseStorePath(storeDir + "/" + key.substr(0, key.size() - 8) + "-" + MissingName));
|
||||||
|
|
|
@ -1332,7 +1332,7 @@ ref<Store> openStore(StoreReference && storeURI)
|
||||||
return std::make_shared<LocalStore>(params);
|
return std::make_shared<LocalStore>(params);
|
||||||
},
|
},
|
||||||
[&](const StoreReference::Specified & g) {
|
[&](const StoreReference::Specified & g) {
|
||||||
for (auto implem : *Implementations::registered)
|
for (const auto & implem : *Implementations::registered)
|
||||||
if (implem.uriSchemes.count(g.scheme))
|
if (implem.uriSchemes.count(g.scheme))
|
||||||
return implem.create(g.scheme, g.authority, params);
|
return implem.create(g.scheme, g.authority, params);
|
||||||
|
|
||||||
|
@ -1363,7 +1363,7 @@ std::list<ref<Store>> getDefaultSubstituters()
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
for (auto uri : settings.substituters.get())
|
for (const auto & uri : settings.substituters.get())
|
||||||
addStore(uri);
|
addStore(uri);
|
||||||
|
|
||||||
stores.sort([](ref<Store> & a, ref<Store> & b) {
|
stores.sort([](ref<Store> & a, ref<Store> & b) {
|
||||||
|
|
|
@ -52,8 +52,7 @@ namespace nix {
|
||||||
std::regex("pt"),
|
std::regex("pt"),
|
||||||
};
|
};
|
||||||
std::vector<std::smatch> matches;
|
std::vector<std::smatch> matches;
|
||||||
for(auto regex : regexes)
|
for (const auto & regex : regexes) {
|
||||||
{
|
|
||||||
for(auto it = std::sregex_iterator(str.begin(), str.end(), regex); it != std::sregex_iterator(); ++it) {
|
for(auto it = std::sregex_iterator(str.begin(), str.end(), regex); it != std::sregex_iterator(); ++it) {
|
||||||
matches.push_back(*it);
|
matches.push_back(*it);
|
||||||
}
|
}
|
||||||
|
|
|
@ -348,7 +348,7 @@ void RootArgs::parseCmdline(const Strings & _cmdline, bool allowShebang)
|
||||||
|
|
||||||
/* Now that all the other args are processed, run the deferred completions.
|
/* Now that all the other args are processed, run the deferred completions.
|
||||||
*/
|
*/
|
||||||
for (auto d : deferredCompletions)
|
for (const auto & d : deferredCompletions)
|
||||||
d.completer(*completions, d.n, d.prefix);
|
d.completer(*completions, d.n, d.prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ std::map<std::string, std::string> decodeQuery(const std::string & query)
|
||||||
{
|
{
|
||||||
std::map<std::string, std::string> result;
|
std::map<std::string, std::string> result;
|
||||||
|
|
||||||
for (auto s : tokenizeString<Strings>(query, "&")) {
|
for (const auto & s : tokenizeString<Strings>(query, "&")) {
|
||||||
auto e = s.find('=');
|
auto e = s.find('=');
|
||||||
if (e == std::string::npos) {
|
if (e == std::string::npos) {
|
||||||
warn("dubious URI query '%s' is missing equal sign '%s', ignoring", s, "=");
|
warn("dubious URI query '%s' is missing equal sign '%s', ignoring", s, "=");
|
||||||
|
|
|
@ -222,7 +222,7 @@ static void opPrintFixedPath(Strings opFlags, Strings opArgs)
|
||||||
{
|
{
|
||||||
auto method = FileIngestionMethod::Flat;
|
auto method = FileIngestionMethod::Flat;
|
||||||
|
|
||||||
for (auto i : opFlags)
|
for (const auto & i : opFlags)
|
||||||
if (i == "--recursive") method = FileIngestionMethod::NixArchive;
|
if (i == "--recursive") method = FileIngestionMethod::NixArchive;
|
||||||
else throw UsageError("unknown flag '%1%'", i);
|
else throw UsageError("unknown flag '%1%'", i);
|
||||||
|
|
||||||
|
|
|
@ -611,7 +611,7 @@ struct CmdDevelop : Common, MixEnvironment
|
||||||
else if (!command.empty()) {
|
else if (!command.empty()) {
|
||||||
std::vector<std::string> args;
|
std::vector<std::string> args;
|
||||||
args.reserve(command.size());
|
args.reserve(command.size());
|
||||||
for (auto s : command)
|
for (const auto & s : command)
|
||||||
args.push_back(shellEscape(s));
|
args.push_back(shellEscape(s));
|
||||||
script += fmt("exec %s\n", concatStringsSep(" ", args));
|
script += fmt("exec %s\n", concatStringsSep(" ", args));
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,7 +94,7 @@ public:
|
||||||
.label="inputs",
|
.label="inputs",
|
||||||
.optional=true,
|
.optional=true,
|
||||||
.handler={[&](std::vector<std::string> inputsToUpdate){
|
.handler={[&](std::vector<std::string> inputsToUpdate){
|
||||||
for (auto inputToUpdate : inputsToUpdate) {
|
for (const auto & inputToUpdate : inputsToUpdate) {
|
||||||
InputPath inputPath;
|
InputPath inputPath;
|
||||||
try {
|
try {
|
||||||
inputPath = flake::parseInputPath(inputToUpdate);
|
inputPath = flake::parseInputPath(inputToUpdate);
|
||||||
|
|
|
@ -79,7 +79,7 @@ struct CmdHashBase : Command
|
||||||
|
|
||||||
void run() override
|
void run() override
|
||||||
{
|
{
|
||||||
for (auto path : paths) {
|
for (const auto & path : paths) {
|
||||||
auto makeSink = [&]() -> std::unique_ptr<AbstractHashSink> {
|
auto makeSink = [&]() -> std::unique_ptr<AbstractHashSink> {
|
||||||
if (modulus)
|
if (modulus)
|
||||||
return std::make_unique<HashModuloSink>(hashAlgo, *modulus);
|
return std::make_unique<HashModuloSink>(hashAlgo, *modulus);
|
||||||
|
@ -182,7 +182,7 @@ struct CmdToBase : Command
|
||||||
void run() override
|
void run() override
|
||||||
{
|
{
|
||||||
warn("The old format conversion sub commands of `nix hash` were deprecated in favor of `nix hash convert`.");
|
warn("The old format conversion sub commands of `nix hash` were deprecated in favor of `nix hash convert`.");
|
||||||
for (auto s : args)
|
for (const auto & s : args)
|
||||||
logger->cout(Hash::parseAny(s, hashAlgo).to_string(hashFormat, hashFormat == HashFormat::SRI));
|
logger->cout(Hash::parseAny(s, hashAlgo).to_string(hashFormat, hashFormat == HashFormat::SRI));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -180,9 +180,9 @@ void chrootHelper(int argc, char * * argv)
|
||||||
if (mount(realStoreDir.c_str(), (tmpDir + storeDir).c_str(), "", MS_BIND, 0) == -1)
|
if (mount(realStoreDir.c_str(), (tmpDir + storeDir).c_str(), "", MS_BIND, 0) == -1)
|
||||||
throw SysError("mounting '%s' on '%s'", realStoreDir, storeDir);
|
throw SysError("mounting '%s' on '%s'", realStoreDir, storeDir);
|
||||||
|
|
||||||
for (auto entry : fs::directory_iterator{"/"}) {
|
for (const auto & entry : fs::directory_iterator{"/"}) {
|
||||||
checkInterrupt();
|
checkInterrupt();
|
||||||
auto src = entry.path();
|
const auto & src = entry.path();
|
||||||
fs::path dst = tmpDir / entry.path().filename();
|
fs::path dst = tmpDir / entry.path().filename();
|
||||||
if (pathExists(dst)) continue;
|
if (pathExists(dst)) continue;
|
||||||
auto st = entry.symlink_status();
|
auto st = entry.symlink_status();
|
||||||
|
|
|
@ -129,7 +129,7 @@ struct CmdVerify : StorePathsCommand
|
||||||
size_t validSigs = 0;
|
size_t validSigs = 0;
|
||||||
|
|
||||||
auto doSigs = [&](StringSet sigs) {
|
auto doSigs = [&](StringSet sigs) {
|
||||||
for (auto sig : sigs) {
|
for (const auto & sig : sigs) {
|
||||||
if (!sigsSeen.insert(sig).second) continue;
|
if (!sigsSeen.insert(sig).second) continue;
|
||||||
if (validSigs < ValidPathInfo::maxSigs && info->checkSignature(*store, publicKeys, sig))
|
if (validSigs < ValidPathInfo::maxSigs && info->checkSignature(*store, publicKeys, sig))
|
||||||
validSigs++;
|
validSigs++;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue