diff options
author | Vincent Ambo <mail@tazj.in> | 2020-07-19T20·52+0100 |
---|---|---|
committer | tazjin <mail@tazj.in> | 2020-07-19T22·00+0000 |
commit | 15afa8472e1b1bbf236d4cf8e9f399345c48d3fe (patch) | |
tree | 88e475abad625ea4fed00525ab7d2ff882238a59 /third_party | |
parent | ca50fb66d26a589dbc2935de68d95716b595a07a (diff) |
fix(3p/nix): Fix all remaining compiler warnings r/1403
This compiles under `-Wall -Werror`. The largest chunk of this change is `final` qualifiers for the various Nix CLI command structs, which inherit from a Command class that has more virtual functions than are implemented by each command. Change-Id: I0925e6e1a39013f026773db5816e4a77d50f3b4a Reviewed-on: https://cl.tvl.fyi/c/depot/+/1294 Tested-by: BuildkiteCI Reviewed-by: isomer <isomer@tvl.fyi> Reviewed-by: kanepyork <rikingcoding@gmail.com>
Diffstat (limited to 'third_party')
33 files changed, 66 insertions, 39 deletions
diff --git a/third_party/nix/src/libexpr/eval.cc b/third_party/nix/src/libexpr/eval.cc index 704a05b197ba..5f267f2053fb 100644 --- a/third_party/nix/src/libexpr/eval.cc +++ b/third_party/nix/src/libexpr/eval.cc @@ -1252,7 +1252,6 @@ void EvalState::concatLists(Value& v, const NixList& lists, const Pos& pos) { auto outlist = new (GC) NixList(); - size_t len = 0; for (Value* list : lists) { forceList(*list, pos); outlist->insert(outlist->end(), list->list->begin(), list->list->end()); diff --git a/third_party/nix/src/libexpr/parser.hh b/third_party/nix/src/libexpr/parser.hh index 7592e3f82ce6..7b8f95573176 100644 --- a/third_party/nix/src/libexpr/parser.hh +++ b/third_party/nix/src/libexpr/parser.hh @@ -34,6 +34,15 @@ struct ParseData : public gc { sLetBody(symbols.Create("<let-body>")){}; }; +// Clang fails to identify these functions as used, probably because +// of some interaction between the lexer/parser codegen and something +// else. +// +// To avoid warnings for that we disable -Wunused-function in this block. + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunused-function" + // TODO(tazjin): move dupAttr to anonymous namespace static void dupAttr(const AttrPath& attrPath, const Pos& pos, const Pos& prevPos) { @@ -85,4 +94,6 @@ static Expr* unescapeStr(SymbolTable& symbols, const char* s, size_t length) { return new ExprString(symbols.Create(t)); } +#pragma clang diagnostic pop // re-enable -Wunused-function + } // namespace nix diff --git a/third_party/nix/src/libexpr/parser.y b/third_party/nix/src/libexpr/parser.y index 56674ee7ede5..999872148895 100644 --- a/third_party/nix/src/libexpr/parser.y +++ b/third_party/nix/src/libexpr/parser.y @@ -11,7 +11,10 @@ %expect 1 %expect-rr 1 -%code requires { #include "libexpr/parser.hh" } +%code requires { +#define YY_NO_INPUT 1 // disable unused yyinput features +#include "libexpr/parser.hh" +} %{ diff --git a/third_party/nix/src/libexpr/primops.cc b/third_party/nix/src/libexpr/primops.cc index fcd69144240a..107cacb963d9 100644 --- a/third_party/nix/src/libexpr/primops.cc +++ b/third_party/nix/src/libexpr/primops.cc @@ -1680,8 +1680,6 @@ static void prim_partition(EvalState& state, const Pos& pos, Value** args, state.forceFunction(*args[0], pos); state.forceList(*args[1], pos); - auto len = args[1]->listSize(); - NixList* right = new (GC) NixList(); NixList* wrong = new (GC) NixList(); diff --git a/third_party/nix/src/libstore/local-store.cc b/third_party/nix/src/libstore/local-store.cc index e7746973f956..995bc4f998b4 100644 --- a/third_party/nix/src/libstore/local-store.cc +++ b/third_party/nix/src/libstore/local-store.cc @@ -490,10 +490,18 @@ static void canonicalisePathMetaData_(const Path& path, uid_t fromUid, if (inodesSeen.find(Inode(st.st_dev, st.st_ino)) == inodesSeen.end()) { throw BuildError(format("invalid ownership on file '%1%'") % path); } + +// `mode` variable is only used in debug builds +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunused-variable" + mode_t mode = st.st_mode & ~S_IFMT; assert(S_ISLNK(st.st_mode) || (st.st_uid == geteuid() && (mode == 0444 || mode == 0555) && st.st_mtime == mtimeStore)); + +#pragma clang diagnostic pop + return; } diff --git a/third_party/nix/src/libstore/nar-info-disk-cache.cc b/third_party/nix/src/libstore/nar-info-disk-cache.cc index c98882bff319..be2ad8f2dac1 100644 --- a/third_party/nix/src/libstore/nar-info-disk-cache.cc +++ b/third_party/nix/src/libstore/nar-info-disk-cache.cc @@ -49,7 +49,7 @@ create table if not exists LastPurge ( )sql"; -class NarInfoDiskCacheImpl : public NarInfoDiskCache { +class NarInfoDiskCacheImpl final : public NarInfoDiskCache { public: /* How often to purge expired entries from the cache. */ const int purgeInterval = 24 * 3600; @@ -280,8 +280,9 @@ class NarInfoDiskCacheImpl : public NarInfoDiskCache { } }; -ref<NarInfoDiskCache> getNarInfoDiskCache() { - static ref<NarInfoDiskCache> cache = make_ref<NarInfoDiskCacheImpl>(); +std::shared_ptr<NarInfoDiskCache> getNarInfoDiskCache() { + static std::shared_ptr<NarInfoDiskCache> cache = + std::make_shared<NarInfoDiskCacheImpl>(); return cache; } diff --git a/third_party/nix/src/libstore/nar-info-disk-cache.hh b/third_party/nix/src/libstore/nar-info-disk-cache.hh index b4107721aad1..8eeab7635a4e 100644 --- a/third_party/nix/src/libstore/nar-info-disk-cache.hh +++ b/third_party/nix/src/libstore/nar-info-disk-cache.hh @@ -25,6 +25,6 @@ class NarInfoDiskCache { /* Return a singleton cache object that can be used concurrently by multiple threads. */ -ref<NarInfoDiskCache> getNarInfoDiskCache(); +std::shared_ptr<NarInfoDiskCache> getNarInfoDiskCache(); } // namespace nix diff --git a/third_party/nix/src/libutil/util.hh b/third_party/nix/src/libutil/util.hh index c39a6f06a5cf..ede83164de2e 100644 --- a/third_party/nix/src/libutil/util.hh +++ b/third_party/nix/src/libutil/util.hh @@ -390,6 +390,11 @@ class Callback { } } +// The unused-variable assert is disabled in this block because the +// `prev` variables are only used in debug mode (in the asserts). +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunused-variable" + void operator()(T&& t) noexcept { auto prev = done.test_and_set(); assert(!prev); @@ -406,6 +411,8 @@ class Callback { promise.set_exception(exc); fun(promise.get_future()); } + +#pragma clang diagnostic pop }; /* Start a thread that handles various signals. Also block those signals diff --git a/third_party/nix/src/nix/add-to-store.cc b/third_party/nix/src/nix/add-to-store.cc index f99fa30be07f..34f6d03963c0 100644 --- a/third_party/nix/src/nix/add-to-store.cc +++ b/third_party/nix/src/nix/add-to-store.cc @@ -5,7 +5,7 @@ using namespace nix; -struct CmdAddToStore : MixDryRun, StoreCommand { +struct CmdAddToStore final : MixDryRun, StoreCommand { Path path; std::optional<std::string> namePart; diff --git a/third_party/nix/src/nix/build.cc b/third_party/nix/src/nix/build.cc index d5bdb7a379a7..b0e8feefd33f 100644 --- a/third_party/nix/src/nix/build.cc +++ b/third_party/nix/src/nix/build.cc @@ -5,7 +5,7 @@ using namespace nix; -struct CmdBuild : MixDryRun, InstallablesCommand { +struct CmdBuild final : MixDryRun, InstallablesCommand { Path outLink = "result"; CmdBuild() { diff --git a/third_party/nix/src/nix/cat.cc b/third_party/nix/src/nix/cat.cc index 49471100cfd0..9ead9a6ff69d 100644 --- a/third_party/nix/src/nix/cat.cc +++ b/third_party/nix/src/nix/cat.cc @@ -21,7 +21,7 @@ struct MixCat : virtual Args { } }; -struct CmdCatStore : StoreCommand, MixCat { +struct CmdCatStore final : StoreCommand, MixCat { CmdCatStore() { expectArg("path", &path); } std::string name() override { return "cat-store"; } @@ -33,7 +33,7 @@ struct CmdCatStore : StoreCommand, MixCat { void run(ref<Store> store) override { cat(store->getFSAccessor()); } }; -struct CmdCatNar : StoreCommand, MixCat { +struct CmdCatNar final : StoreCommand, MixCat { Path narPath; CmdCatNar() { diff --git a/third_party/nix/src/nix/copy.cc b/third_party/nix/src/nix/copy.cc index a527d40cfafd..ec25d0fc5a13 100644 --- a/third_party/nix/src/nix/copy.cc +++ b/third_party/nix/src/nix/copy.cc @@ -8,7 +8,7 @@ using namespace nix; -struct CmdCopy : StorePathsCommand { +struct CmdCopy final : StorePathsCommand { std::string srcUri, dstUri; CheckSigsFlag checkSigs = CheckSigs; diff --git a/third_party/nix/src/nix/doctor.cc b/third_party/nix/src/nix/doctor.cc index 3a5cd987a9d6..97c31d0376f1 100644 --- a/third_party/nix/src/nix/doctor.cc +++ b/third_party/nix/src/nix/doctor.cc @@ -19,7 +19,7 @@ std::string formatProtocol(unsigned int proto) { return "unknown"; } -struct CmdDoctor : StoreCommand { +struct CmdDoctor final : StoreCommand { bool success = true; std::string name() override { return "doctor"; } diff --git a/third_party/nix/src/nix/dump-path.cc b/third_party/nix/src/nix/dump-path.cc index d7e8bc69fd91..4ca5f1bc0277 100644 --- a/third_party/nix/src/nix/dump-path.cc +++ b/third_party/nix/src/nix/dump-path.cc @@ -3,7 +3,7 @@ using namespace nix; -struct CmdDumpPath : StorePathCommand { +struct CmdDumpPath final : StorePathCommand { std::string name() override { return "dump-path"; } std::string description() override { diff --git a/third_party/nix/src/nix/edit.cc b/third_party/nix/src/nix/edit.cc index 55b193fb6b7e..958e8aec49cc 100644 --- a/third_party/nix/src/nix/edit.cc +++ b/third_party/nix/src/nix/edit.cc @@ -9,7 +9,7 @@ using namespace nix; -struct CmdEdit : InstallableCommand { +struct CmdEdit final : InstallableCommand { std::string name() override { return "edit"; } std::string description() override { diff --git a/third_party/nix/src/nix/eval.cc b/third_party/nix/src/nix/eval.cc index 5f26aa14c096..a78f5b34faac 100644 --- a/third_party/nix/src/nix/eval.cc +++ b/third_party/nix/src/nix/eval.cc @@ -9,7 +9,7 @@ using namespace nix; -struct CmdEval : MixJSON, InstallableCommand { +struct CmdEval final : MixJSON, InstallableCommand { bool raw = false; CmdEval() { mkFlag(0, "raw", "print strings unquoted", &raw); } diff --git a/third_party/nix/src/nix/hash.cc b/third_party/nix/src/nix/hash.cc index 935faec9d598..521f97d53a09 100644 --- a/third_party/nix/src/nix/hash.cc +++ b/third_party/nix/src/nix/hash.cc @@ -6,7 +6,7 @@ using namespace nix; -struct CmdHash : Command { +struct CmdHash final : Command { enum Mode { mFile, mPath }; Mode mode; Base base = SRI; @@ -47,7 +47,7 @@ struct CmdHash : Command { static RegisterCommand r1(make_ref<CmdHash>(CmdHash::mFile)); static RegisterCommand r2(make_ref<CmdHash>(CmdHash::mPath)); -struct CmdToBase : Command { +struct CmdToBase final : Command { Base base; HashType ht = htUnknown; std::vector<std::string> args; diff --git a/third_party/nix/src/nix/installables.cc b/third_party/nix/src/nix/installables.cc index c6cfc4344f6d..5fe155ba16c5 100644 --- a/third_party/nix/src/nix/installables.cc +++ b/third_party/nix/src/nix/installables.cc @@ -98,7 +98,7 @@ Buildable Installable::toBuildable() { return std::move(buildables[0]); } -struct InstallableStorePath : Installable { +struct InstallableStorePath final : Installable { Path storePath; explicit InstallableStorePath(Path storePath) @@ -158,7 +158,7 @@ struct InstallableValue : Installable { } }; -struct InstallableExpr : InstallableValue { +struct InstallableExpr final : InstallableValue { std::string text; InstallableExpr(SourceExprCommand& cmd, std::string text) @@ -173,7 +173,7 @@ struct InstallableExpr : InstallableValue { } }; -struct InstallableAttrPath : InstallableValue { +struct InstallableAttrPath final : InstallableValue { std::string attrPath; InstallableAttrPath(SourceExprCommand& cmd, std::string attrPath) diff --git a/third_party/nix/src/nix/log.cc b/third_party/nix/src/nix/log.cc index b205851ecefc..623d16e5d254 100644 --- a/third_party/nix/src/nix/log.cc +++ b/third_party/nix/src/nix/log.cc @@ -7,7 +7,7 @@ using namespace nix; -struct CmdLog : InstallableCommand { +struct CmdLog final : InstallableCommand { CmdLog() = default; std::string name() override { return "log"; } diff --git a/third_party/nix/src/nix/ls.cc b/third_party/nix/src/nix/ls.cc index aa461675ad25..afa4db92bc61 100644 --- a/third_party/nix/src/nix/ls.cc +++ b/third_party/nix/src/nix/ls.cc @@ -88,7 +88,7 @@ struct MixLs : virtual Args, MixJSON { } }; -struct CmdLsStore : StoreCommand, MixLs { +struct CmdLsStore final : StoreCommand, MixLs { CmdLsStore() { expectArg("path", &path); } Examples examples() override { @@ -108,7 +108,7 @@ struct CmdLsStore : StoreCommand, MixLs { void run(ref<Store> store) override { list(store->getFSAccessor()); } }; -struct CmdLsNar : Command, MixLs { +struct CmdLsNar final : Command, MixLs { Path narPath; CmdLsNar() { diff --git a/third_party/nix/src/nix/optimise-store.cc b/third_party/nix/src/nix/optimise-store.cc index 594cc0e637a7..1b33ea3ec270 100644 --- a/third_party/nix/src/nix/optimise-store.cc +++ b/third_party/nix/src/nix/optimise-store.cc @@ -6,7 +6,7 @@ using namespace nix; -struct CmdOptimiseStore : StoreCommand { +struct CmdOptimiseStore final : StoreCommand { CmdOptimiseStore() = default; std::string name() override { return "optimise-store"; } diff --git a/third_party/nix/src/nix/path-info.cc b/third_party/nix/src/nix/path-info.cc index aa43ad5262e9..dca08b06adbb 100644 --- a/third_party/nix/src/nix/path-info.cc +++ b/third_party/nix/src/nix/path-info.cc @@ -9,7 +9,7 @@ using namespace nix; -struct CmdPathInfo : StorePathsCommand, MixJSON { +struct CmdPathInfo final : StorePathsCommand, MixJSON { bool showSize = false; bool showClosureSize = false; bool humanReadable = false; diff --git a/third_party/nix/src/nix/ping-store.cc b/third_party/nix/src/nix/ping-store.cc index 0857733c4258..78a79b037b43 100644 --- a/third_party/nix/src/nix/ping-store.cc +++ b/third_party/nix/src/nix/ping-store.cc @@ -4,7 +4,7 @@ using namespace nix; -struct CmdPingStore : StoreCommand { +struct CmdPingStore final : StoreCommand { std::string name() override { return "ping-store"; } std::string description() override { diff --git a/third_party/nix/src/nix/repl.cc b/third_party/nix/src/nix/repl.cc index b8edfc0e1c04..7644b7b8c244 100644 --- a/third_party/nix/src/nix/repl.cc +++ b/third_party/nix/src/nix/repl.cc @@ -799,7 +799,7 @@ std::ostream& NixRepl::printValue(std::ostream& str, Value& v, return str; } -struct CmdRepl : StoreCommand, MixEvalArgs { +struct CmdRepl final : StoreCommand, MixEvalArgs { std::vector<std::string> files; CmdRepl() { expectArgs("files", &files); } diff --git a/third_party/nix/src/nix/run.cc b/third_party/nix/src/nix/run.cc index b1ca56d7516c..241e0a2d7855 100644 --- a/third_party/nix/src/nix/run.cc +++ b/third_party/nix/src/nix/run.cc @@ -17,7 +17,7 @@ using namespace nix; std::string chrootHelperName = "__run_in_chroot"; -struct CmdRun : InstallablesCommand { +struct CmdRun final : InstallablesCommand { std::vector<std::string> command = {"bash"}; StringSet keep, unset; bool ignoreEnvironment = false; diff --git a/third_party/nix/src/nix/search.cc b/third_party/nix/src/nix/search.cc index 350863cf811c..2bfdeac6f7f5 100644 --- a/third_party/nix/src/nix/search.cc +++ b/third_party/nix/src/nix/search.cc @@ -27,7 +27,7 @@ std::string hilite(const std::string& s, const std::smatch& m, postfix + std::string(m.suffix()); } -struct CmdSearch : SourceExprCommand, MixJSON { +struct CmdSearch final : SourceExprCommand, MixJSON { std::vector<std::string> res; bool writeCache = true; diff --git a/third_party/nix/src/nix/show-config.cc b/third_party/nix/src/nix/show-config.cc index 8e27fd168f64..56448f9d606b 100644 --- a/third_party/nix/src/nix/show-config.cc +++ b/third_party/nix/src/nix/show-config.cc @@ -6,7 +6,7 @@ using namespace nix; -struct CmdShowConfig : Command, MixJSON { +struct CmdShowConfig final : Command, MixJSON { CmdShowConfig() = default; std::string name() override { return "show-config"; } diff --git a/third_party/nix/src/nix/show-derivation.cc b/third_party/nix/src/nix/show-derivation.cc index 2a6252f931c6..51c7ba9c291a 100644 --- a/third_party/nix/src/nix/show-derivation.cc +++ b/third_party/nix/src/nix/show-derivation.cc @@ -9,7 +9,7 @@ using namespace nix; -struct CmdShowDerivation : InstallablesCommand { +struct CmdShowDerivation final : InstallablesCommand { bool recursive = false; CmdShowDerivation() { diff --git a/third_party/nix/src/nix/sigs.cc b/third_party/nix/src/nix/sigs.cc index 8df1beef2b5c..21d14bfface9 100644 --- a/third_party/nix/src/nix/sigs.cc +++ b/third_party/nix/src/nix/sigs.cc @@ -9,7 +9,7 @@ using namespace nix; -struct CmdCopySigs : StorePathsCommand { +struct CmdCopySigs final : StorePathsCommand { Strings substituterUris; CmdCopySigs() { @@ -99,7 +99,7 @@ struct CmdCopySigs : StorePathsCommand { static RegisterCommand r1(make_ref<CmdCopySigs>()); -struct CmdSignPaths : StorePathsCommand { +struct CmdSignPaths final : StorePathsCommand { Path secretKeyFile; CmdSignPaths() { diff --git a/third_party/nix/src/nix/upgrade-nix.cc b/third_party/nix/src/nix/upgrade-nix.cc index 1d85af03c16a..3e3b55789df9 100644 --- a/third_party/nix/src/nix/upgrade-nix.cc +++ b/third_party/nix/src/nix/upgrade-nix.cc @@ -13,7 +13,7 @@ using namespace nix; -struct CmdUpgradeNix : MixDryRun, StoreCommand { +struct CmdUpgradeNix final : MixDryRun, StoreCommand { Path profileDir; std::string storePathsUrl = "https://github.com/NixOS/nixpkgs/raw/master/nixos/modules/installer/" diff --git a/third_party/nix/src/nix/verify.cc b/third_party/nix/src/nix/verify.cc index f5f222915eb9..a9959d50de1d 100644 --- a/third_party/nix/src/nix/verify.cc +++ b/third_party/nix/src/nix/verify.cc @@ -10,7 +10,7 @@ using namespace nix; -struct CmdVerify : StorePathsCommand { +struct CmdVerify final : StorePathsCommand { bool noContents = false; bool noTrust = false; Strings substituterUris; diff --git a/third_party/nix/src/nix/why-depends.cc b/third_party/nix/src/nix/why-depends.cc index 4fb91c9d9192..e18314e7fd01 100644 --- a/third_party/nix/src/nix/why-depends.cc +++ b/third_party/nix/src/nix/why-depends.cc @@ -23,7 +23,7 @@ static std::string filterPrintable(const std::string& s) { return res; } -struct CmdWhyDepends : SourceExprCommand { +struct CmdWhyDepends final : SourceExprCommand { std::string _package, _dependency; bool all = false; diff --git a/third_party/nix/src/tests/language-tests.cc b/third_party/nix/src/tests/language-tests.cc index cac5aee5841c..98f2927911b2 100644 --- a/third_party/nix/src/tests/language-tests.cc +++ b/third_party/nix/src/tests/language-tests.cc @@ -174,7 +174,7 @@ TEST_P(EvalFailureTest, Fails) { EvalState state({}, ref<Store>(store)); auto path = GetParam(); - Expr* expr; + Expr* expr = nullptr; EXPECT_NO_THROW(expr = state.parseExprFromFile(GetParam().string())) << path.stem().string() << ": should parse successfully"; |