From 1443298657156107704b5d9fcfa7356ee8fa8789 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Fri, 21 Aug 2020 03:29:53 +0100 Subject: style(tvix): Add missing braces in expressions The previous clang-tidy invocation missed some header files, which has now been rectified. Change-Id: I31547754fbf52f439dc7aeefb08ab90bd50c4156 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1831 Reviewed-by: glittershark Tested-by: BuildkiteCI --- third_party/nix/src/libexpr/parser.cc | 25 +++++++++----- third_party/nix/src/libexpr/parser.hh | 6 ++-- third_party/nix/src/libexpr/primops/context.cc | 13 +++++--- third_party/nix/src/libexpr/primops/fetchGit.cc | 25 ++++++++------ .../nix/src/libexpr/primops/fetchMercurial.cc | 15 +++++---- third_party/nix/src/libexpr/primops/fromTOML.cc | 26 +++++++++------ third_party/nix/src/libmain/shared.hh | 3 +- third_party/nix/src/libstore/builtins/buildenv.cc | 38 ++++++++++++++-------- third_party/nix/src/libstore/builtins/fetchurl.cc | 11 ++++--- third_party/nix/src/libutil/args.hh | 3 +- third_party/nix/src/libutil/hash.cc | 12 +++++-- third_party/nix/src/libutil/pool.hh | 6 ++-- third_party/nix/src/libutil/serialise.hh | 3 +- third_party/nix/src/libutil/thread-pool.hh | 6 ++-- third_party/nix/src/libutil/util.cc | 8 +++-- third_party/nix/src/libutil/util.hh | 4 ++- 16 files changed, 132 insertions(+), 72 deletions(-) diff --git a/third_party/nix/src/libexpr/parser.cc b/third_party/nix/src/libexpr/parser.cc index 29d31661c896..756fdfa12819 100644 --- a/third_party/nix/src/libexpr/parser.cc +++ b/third_party/nix/src/libexpr/parser.cc @@ -85,9 +85,10 @@ void addAttr(ExprAttrs* attrs, AttrPath& attrPath, Expr* e, const Pos& pos) { } void addFormal(const Pos& pos, Formals* formals, const Formal& formal) { - if (formals->argNames.find(formal.name) != formals->argNames.end()) + if (formals->argNames.find(formal.name) != formals->argNames.end()) { throw ParseError(format("duplicate formal function argument '%1%' at %2%") % formal.name % pos); + } formals->formals.push_front(formal); formals->argNames.insert(formal.name); } @@ -117,9 +118,9 @@ Expr* stripIndentation(const Pos& pos, SymbolTable& symbols, VectorExprs& es) { } for (size_t j = 0; j < e->s.size(); ++j) { if (atStartOfLine) { - if (e->s[j] == ' ') + if (e->s[j] == ' ') { curIndent++; - else if (e->s[j] == '\n') { + } else if (e->s[j] == '\n') { /* Empty line, doesn't influence minimum indentation. */ curIndent = 0; @@ -154,7 +155,9 @@ Expr* stripIndentation(const Pos& pos, SymbolTable& symbols, VectorExprs& es) { for (size_t j = 0; j < e->s.size(); ++j) { if (atStartOfLine) { if (e->s[j] == ' ') { - if (curDropped++ >= minIndent) s2 += e->s[j]; + if (curDropped++ >= minIndent) { + s2 += e->s[j]; + } } else if (e->s[j] == '\n') { curDropped = 0; s2 += e->s[j]; @@ -197,8 +200,9 @@ Path resolveExprPath(Path path) { path references work. */ struct stat st; while (true) { - if (lstat(path.c_str(), &st)) + if (lstat(path.c_str(), &st)) { throw SysError(format("getting status of '%1%'") % path); + } if (!S_ISLNK(st.st_mode)) { break; } @@ -206,7 +210,9 @@ Path resolveExprPath(Path path) { } /* If `path' refers to a directory, append `/default.nix'. */ - if (S_ISDIR(st.st_mode)) path = canonPath(path + "/default.nix"); + if (S_ISDIR(st.st_mode)) { + path = canonPath(path + "/default.nix"); + } return path; } @@ -259,13 +265,14 @@ Path EvalState::findFile(SearchPath& searchPath, const std::string& path, const Pos& pos) { for (auto& i : searchPath) { std::string suffix; - if (i.first.empty()) + if (i.first.empty()) { suffix = "/" + path; - else { + } else { auto s = i.first.size(); if (path.compare(0, s, i.first) != 0 || - (path.size() > s && path[s] != '/')) + (path.size() > s && path[s] != '/')) { continue; + } suffix = path.size() == s ? "" : "/" + std::string(path, s); } auto r = resolveSearchPathElem(i); diff --git a/third_party/nix/src/libexpr/parser.hh b/third_party/nix/src/libexpr/parser.hh index a79e2cad281f..70b5450b5aa8 100644 --- a/third_party/nix/src/libexpr/parser.hh +++ b/third_party/nix/src/libexpr/parser.hh @@ -79,16 +79,18 @@ static Expr* unescapeStr(SymbolTable& symbols, const char* s, size_t length) { t += '\r'; } else if (c == 't') { t += '\t'; - } else + } else { t += c; + } } else if (c == '\r') { /* Normalise CR and CR/LF into LF. */ t += '\n'; if (*s == '\n') { s++; } /* cr/lf */ - } else + } else { t += c; + } } return new ExprString(symbols.Create(t)); } diff --git a/third_party/nix/src/libexpr/primops/context.cc b/third_party/nix/src/libexpr/primops/context.cc index 841a45c61c03..fb8879ead16d 100644 --- a/third_party/nix/src/libexpr/primops/context.cc +++ b/third_party/nix/src/libexpr/primops/context.cc @@ -97,12 +97,13 @@ static void prim_getContext(EvalState& state, const Pos& pos, Value** args, ContextInfo{isPath, isAllOutputs, output.empty() ? Strings{} : Strings{std::move(output)}}); } else { - if (isPath) + if (isPath) { iter->second.path = true; - else if (isAllOutputs) + } else if (isAllOutputs) { iter->second.allOutputs = true; - else + } else { iter->second.outputs.emplace_back(std::move(output)); + } } } @@ -116,8 +117,9 @@ static void prim_getContext(EvalState& state, const Pos& pos, Value** args, if (info.second.path) { mkBool(*state.allocAttr(infoVal, sPath), true); } - if (info.second.allOutputs) + if (info.second.allOutputs) { mkBool(*state.allocAttr(infoVal, sAllOutputs), true); + } if (!info.second.outputs.empty()) { auto& outputsVal = *state.allocAttr(infoVal, state.sOutputs); state.mkList(outputsVal, info.second.outputs.size()); @@ -147,9 +149,10 @@ static void prim_appendContext(EvalState& state, const Pos& pos, Value** args, auto sAllOutputs = state.symbols.Create("allOutputs"); for (const auto& attr_iter : *args[1]->attrs) { const Attr* i = &attr_iter.second; // TODO(tazjin): get rid of this - if (!state.store->isStorePath(i->name)) + 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); } diff --git a/third_party/nix/src/libexpr/primops/fetchGit.cc b/third_party/nix/src/libexpr/primops/fetchGit.cc index 2b2ca476cbbb..72b498d30b3e 100644 --- a/third_party/nix/src/libexpr/primops/fetchGit.cc +++ b/third_party/nix/src/libexpr/primops/fetchGit.cc @@ -30,8 +30,9 @@ std::regex revRegex("^[0-9a-fA-F]{40}$"); GitInfo exportGit(ref store, const std::string& uri, std::optional ref, std::string rev, const std::string& name) { - if (evalSettings.pureEval && rev == "") + if (evalSettings.pureEval && rev == "") { throw Error("in pure evaluation mode, 'fetchGit' requires a Git revision"); + } if (!ref && rev == "" && absl::StartsWith(uri, "/") && pathExists(uri + "/.git")) { @@ -90,8 +91,9 @@ GitInfo exportGit(ref store, const std::string& uri, ref = "HEAD"s; } - if (rev != "" && !std::regex_match(rev, revRegex)) + if (rev != "" && !std::regex_match(rev, revRegex)) { throw Error("invalid Git revision '%s'", rev); + } deletePath(getCacheDir() + "/nix/git"); @@ -104,10 +106,11 @@ GitInfo exportGit(ref store, const std::string& uri, } Path localRefFile; - if (ref->compare(0, 5, "refs/") == 0) + if (ref->compare(0, 5, "refs/") == 0) { localRefFile = cacheDir + "/" + *ref; - else + } else { localRefFile = cacheDir + "/refs/heads/" + *ref; + } bool doFetch; time_t now = time(0); @@ -226,22 +229,24 @@ static void prim_fetchGit(EvalState& state, const Pos& pos, Value** args, for (auto& attr_iter : *args[0]->attrs) { auto& attr = attr_iter.second; std::string n(attr.name); - if (n == "url") + if (n == "url") { url = state.coerceToString(*attr.pos, *attr.value, context, false, false); - else if (n == "ref") + } else if (n == "ref") { ref = state.forceStringNoCtx(*attr.value, *attr.pos); - else if (n == "rev") + } else if (n == "rev") { rev = state.forceStringNoCtx(*attr.value, *attr.pos); - else if (n == "name") + } else if (n == "name") { name = state.forceStringNoCtx(*attr.value, *attr.pos); - else + } else { throw EvalError("unsupported argument '%s' to 'fetchGit', at %s", attr.name, *attr.pos); + } } - if (url.empty()) + if (url.empty()) { throw EvalError(format("'url' argument required, at %1%") % pos); + } } else { url = state.coerceToString(pos, *args[0], context, false, false); diff --git a/third_party/nix/src/libexpr/primops/fetchMercurial.cc b/third_party/nix/src/libexpr/primops/fetchMercurial.cc index df42b6d94884..13dc61766fe0 100644 --- a/third_party/nix/src/libexpr/primops/fetchMercurial.cc +++ b/third_party/nix/src/libexpr/primops/fetchMercurial.cc @@ -28,10 +28,11 @@ std::regex commitHashRegex("^[0-9a-fA-F]{40}$"); HgInfo exportMercurial(ref store, const std::string& uri, std::string rev, const std::string& name) { - if (evalSettings.pureEval && rev == "") + if (evalSettings.pureEval && rev == "") { throw Error( "in pure evaluation mode, 'fetchMercurial' requires a Mercurial " "revision"); + } if (rev == "" && absl::StartsWith(uri, "/") && pathExists(uri + "/.hg")) { bool clean = runProgram("hg", true, @@ -199,20 +200,22 @@ static void prim_fetchMercurial(EvalState& state, const Pos& pos, Value** args, for (auto& attr_iter : *args[0]->attrs) { auto& attr = attr_iter.second; std::string n(attr.name); - if (n == "url") + if (n == "url") { url = state.coerceToString(*attr.pos, *attr.value, context, false, false); - else if (n == "rev") + } else if (n == "rev") { rev = state.forceStringNoCtx(*attr.value, *attr.pos); - else if (n == "name") + } else if (n == "name") { name = state.forceStringNoCtx(*attr.value, *attr.pos); - else + } else { throw EvalError("unsupported argument '%s' to 'fetchMercurial', at %s", attr.name, *attr.pos); + } } - if (url.empty()) + if (url.empty()) { throw EvalError(format("'url' argument required, at %1%") % pos); + } } else { url = state.coerceToString(pos, *args[0], context, false, false); diff --git a/third_party/nix/src/libexpr/primops/fromTOML.cc b/third_party/nix/src/libexpr/primops/fromTOML.cc index 389ac080677a..e3d2a4940769 100644 --- a/third_party/nix/src/libexpr/primops/fromTOML.cc +++ b/third_party/nix/src/libexpr/primops/fromTOML.cc @@ -30,10 +30,12 @@ static void prim_fromTOML(EvalState& state, const Pos& pos, Value** args, if (auto i2 = i.second->as_table_array()) { size_t size2 = i2->get().size(); state.mkList(v2, size2); - for (size_t j = 0; j < size2; ++j) + for (size_t j = 0; j < size2; ++j) { visit(*((*v2.list)[j] = state.allocValue()), i2->get()[j]); - } else + } + } else { visit(v2, i.second); + } } } @@ -42,8 +44,9 @@ static void prim_fromTOML(EvalState& state, const Pos& pos, Value** args, state.mkList(v, size); - for (size_t i = 0; i < size; ++i) + for (size_t i = 0; i < size; ++i) { visit(*((*v.list)[i] = state.allocValue()), t2->get()[i]); + } } // Handle cases like 'a = [[{ a = true }]]', which IMHO should be @@ -55,25 +58,28 @@ static void prim_fromTOML(EvalState& state, const Pos& pos, Value** args, state.mkList(v, size); - for (size_t j = 0; j < size; ++j) + for (size_t j = 0; j < size; ++j) { visit(*((*v.list)[j] = state.allocValue()), t2->get()[j]); + } } else if (t->is_value()) { - if (auto val = t->as()) + if (auto val = t->as()) { mkInt(v, val->get()); - else if (auto val = t->as()) + } else if (auto val = t->as()) { mkFloat(v, val->get()); - else if (auto val = t->as()) + } else if (auto val = t->as()) { mkBool(v, val->get()); - else if (auto val = t->as()) + } else if (auto val = t->as()) { mkString(v, val->get()); - else + } else { throw EvalError("unsupported value type in TOML"); + } } - else + else { abort(); + } }; try { diff --git a/third_party/nix/src/libmain/shared.hh b/third_party/nix/src/libmain/shared.hh index 60a9e302ff5a..d1061d5e04e5 100644 --- a/third_party/nix/src/libmain/shared.hh +++ b/third_party/nix/src/libmain/shared.hh @@ -78,8 +78,9 @@ N getIntArg(const std::string& opt, Strings::iterator& i, } } N n; - if (!absl::SimpleAtoi(s, &n)) + if (!absl::SimpleAtoi(s, &n)) { throw UsageError(format("'%1%' requires an integer argument") % opt); + } return n * multiplier; } diff --git a/third_party/nix/src/libstore/builtins/buildenv.cc b/third_party/nix/src/libstore/builtins/buildenv.cc index 0d1c59e6b5b7..433082a0f9de 100644 --- a/third_party/nix/src/libstore/builtins/buildenv.cc +++ b/third_party/nix/src/libstore/builtins/buildenv.cc @@ -35,15 +35,17 @@ static void createLinks(const Path& srcDir, const Path& dstDir, int priority) { } for (const auto& ent : srcFiles) { - if (ent.name[0] == '.') /* not matched by glob */ + if (ent.name[0] == '.') { /* not matched by glob */ continue; + } auto srcFile = srcDir + "/" + ent.name; auto dstFile = dstDir + "/" + ent.name; struct stat srcSt; try { - if (stat(srcFile.c_str(), &srcSt) == -1) + if (stat(srcFile.c_str(), &srcSt) == -1) { throw SysError("getting status of '%1%'", srcFile); + } } catch (SysError& e) { if (e.errNo == ENOENT || e.errNo == ENOTDIR) { LOG(ERROR) << "warning: skipping dangling symlink '" << dstFile << "'"; @@ -61,10 +63,11 @@ static void createLinks(const Path& srcDir, const Path& dstDir, int priority) { if (absl::EndsWith(srcFile, "/propagated-build-inputs") || absl::EndsWith(srcFile, "/nix-support") || absl::EndsWith(srcFile, "/perllocal.pod") || - absl::EndsWith(srcFile, "/info/dir") || absl::EndsWith(srcFile, "/log")) + absl::EndsWith(srcFile, "/info/dir") || + absl::EndsWith(srcFile, "/log")) { continue; - else if (S_ISDIR(srcSt.st_mode)) { + } else if (S_ISDIR(srcSt.st_mode)) { struct stat dstSt; auto res = lstat(dstFile.c_str(), &dstSt); if (res == 0) { @@ -73,19 +76,23 @@ static void createLinks(const Path& srcDir, const Path& dstDir, int priority) { continue; } else if (S_ISLNK(dstSt.st_mode)) { auto target = canonPath(dstFile, true); - if (!S_ISDIR(lstat(target).st_mode)) + if (!S_ISDIR(lstat(target).st_mode)) { throw Error("collision between '%1%' and non-directory '%2%'", srcFile, target); - if (unlink(dstFile.c_str()) == -1) + } + if (unlink(dstFile.c_str()) == -1) { throw SysError(format("unlinking '%1%'") % dstFile); - if (mkdir(dstFile.c_str(), 0755) == -1) + } + if (mkdir(dstFile.c_str(), 0755) == -1) { throw SysError(format("creating directory '%1%'")); + } createLinks(target, dstFile, priorities[dstFile]); createLinks(srcFile, dstFile, priority); continue; } - } else if (errno != ENOENT) + } else if (errno != ENOENT) { throw SysError(format("getting status of '%1%'") % dstFile); + } } else { @@ -94,24 +101,28 @@ static void createLinks(const Path& srcDir, const Path& dstDir, int priority) { if (res == 0) { if (S_ISLNK(dstSt.st_mode)) { auto prevPriority = priorities[dstFile]; - if (prevPriority == priority) + if (prevPriority == priority) { throw Error( "packages '%1%' and '%2%' have the same priority %3%; " "use 'nix-env --set-flag priority NUMBER INSTALLED_PKGNAME' " "to change the priority of one of the conflicting packages" " (0 being the highest priority)", srcFile, readLink(dstFile), priority); + } if (prevPriority < priority) { continue; } - if (unlink(dstFile.c_str()) == -1) + if (unlink(dstFile.c_str()) == -1) { throw SysError(format("unlinking '%1%'") % dstFile); - } else if (S_ISDIR(dstSt.st_mode)) + } + } else if (S_ISDIR(dstSt.st_mode)) { throw Error( "collision between non-directory '%1%' and directory '%2%'", srcFile, dstFile); - } else if (errno != ENOENT) + } + } else if (errno != ENOENT) { throw SysError(format("getting status of '%1%'") % dstFile); + } } createSymlink(srcFile, dstFile); @@ -201,10 +212,11 @@ void builtinBuildenv(const BasicDerivation& drv) { return a.priority < b.priority || (a.priority == b.priority && a.path < b.path); }); - for (const auto& pkg : pkgs) + for (const auto& pkg : pkgs) { if (pkg.active) { addPkg(pkg.path, pkg.priority); } + } /* Symlink to the packages that have been "propagated" by packages * installed by the user (i.e., package X declares that it wants Y diff --git a/third_party/nix/src/libstore/builtins/fetchurl.cc b/third_party/nix/src/libstore/builtins/fetchurl.cc index b9c6ffc3f59f..961d08142347 100644 --- a/third_party/nix/src/libstore/builtins/fetchurl.cc +++ b/third_party/nix/src/libstore/builtins/fetchurl.cc @@ -20,8 +20,9 @@ void builtinFetchurl(const BasicDerivation& drv, const std::string& netrcData) { auto getAttr = [&](const std::string& name) { auto i = drv.env.find(name); - if (i == drv.env.end()) + if (i == drv.env.end()) { throw Error(format("attribute '%s' missing") % name); + } return i->second; }; @@ -47,15 +48,17 @@ void builtinFetchurl(const BasicDerivation& drv, const std::string& netrcData) { decompressor->finish(); }); - if (unpack) + if (unpack) { restorePath(storePath, *source); - else + } else { writeFile(storePath, *source); + } auto executable = drv.env.find("executable"); if (executable != drv.env.end() && executable->second == "1") { - if (chmod(storePath.c_str(), 0755) == -1) + if (chmod(storePath.c_str(), 0755) == -1) { throw SysError(format("making '%1%' executable") % storePath); + } } }; diff --git a/third_party/nix/src/libutil/args.hh b/third_party/nix/src/libutil/args.hh index 3057f3d2ab46..57720439bd03 100644 --- a/third_party/nix/src/libutil/args.hh +++ b/third_party/nix/src/libutil/args.hh @@ -181,9 +181,10 @@ class Args { .arity(1) .handler([=](std::vector ss) { I n; - if (!absl::SimpleAtoi(ss[0], &n)) + if (!absl::SimpleAtoi(ss[0], &n)) { throw UsageError("flag '--%s' requires a integer argument", longName); + } fun(n); }); } diff --git a/third_party/nix/src/libutil/hash.cc b/third_party/nix/src/libutil/hash.cc index 9d14ad9dfe14..a2d6713f04ff 100644 --- a/third_party/nix/src/libutil/hash.cc +++ b/third_party/nix/src/libutil/hash.cc @@ -111,9 +111,15 @@ static std::string printHash16(const Hash& hash) { bool Hash::IsValidBase16(absl::string_view s) { for (char c : s) { - if ('0' <= c && c <= '9') continue; - if ('a' <= c && c <= 'f') continue; - if ('A' <= c && c <= 'F') continue; + if ('0' <= c && c <= '9') { + continue; + } + if ('a' <= c && c <= 'f') { + continue; + } + if ('A' <= c && c <= 'F') { + continue; + } return false; } return true; diff --git a/third_party/nix/src/libutil/pool.hh b/third_party/nix/src/libutil/pool.hh index 56a579b269cd..e3ea8cad5734 100644 --- a/third_party/nix/src/libutil/pool.hh +++ b/third_party/nix/src/libutil/pool.hh @@ -125,8 +125,9 @@ class Pool { /* If we're over the maximum number of instance, we need to wait until a slot becomes available. */ - while (state_->idle.empty() && state_->inUse >= state_->max) + while (state_->idle.empty() && state_->inUse >= state_->max) { state_.wait(wakeup); + } while (!state_->idle.empty()) { auto p = state_->idle.back(); @@ -163,10 +164,11 @@ class Pool { void flushBad() { auto state_(state.lock()); std::vector> left; - for (auto& p : state_->idle) + for (auto& p : state_->idle) { if (validator(p)) { left.push_back(p); } + } std::swap(state_->idle, left); } }; diff --git a/third_party/nix/src/libutil/serialise.hh b/third_party/nix/src/libutil/serialise.hh index 04f672781015..bbfbe16a016c 100644 --- a/third_party/nix/src/libutil/serialise.hh +++ b/third_party/nix/src/libutil/serialise.hh @@ -248,9 +248,10 @@ T readNum(Source& source) { ((unsigned long long)buf[4] << 32) | ((unsigned long long)buf[5] << 40) | ((unsigned long long)buf[6] << 48) | ((unsigned long long)buf[7] << 56); - if (n > std::numeric_limits::max()) + if (n > std::numeric_limits::max()) { throw SerialisationError("serialised integer %d is too large for type '%s'", n, typeid(T).name()); + } return (T)n; } diff --git a/third_party/nix/src/libutil/thread-pool.hh b/third_party/nix/src/libutil/thread-pool.hh index 71006238b363..48888c0688c9 100644 --- a/third_party/nix/src/libutil/thread-pool.hh +++ b/third_party/nix/src/libutil/thread-pool.hh @@ -90,11 +90,12 @@ void processGraph(ThreadPool& pool, const std::set& nodes, { auto graph(graph_.lock()); - for (auto& ref : refs) + for (auto& ref : refs) { if (graph->left.count(ref)) { graph->refs[node].insert(ref); graph->rrefs[ref].insert(node); } + } if (graph->refs[node].empty()) { goto doWork; } @@ -131,8 +132,9 @@ void processGraph(ThreadPool& pool, const std::set& nodes, pool.process(); - if (!graph_.lock()->left.empty()) + if (!graph_.lock()->left.empty()) { throw Error("graph processing incomplete (cyclic reference?)"); + } } } // namespace nix diff --git a/third_party/nix/src/libutil/util.cc b/third_party/nix/src/libutil/util.cc index c93570d7b0a4..67bde4ad4fe6 100644 --- a/third_party/nix/src/libutil/util.cc +++ b/third_party/nix/src/libutil/util.cc @@ -434,13 +434,17 @@ static void _deletePath(int parentfd, const Path& path, static void _deletePath(const Path& path, unsigned long long& bytesFreed) { Path dir = dirOf(path); - if (dir == "") dir = "/"; + if (dir == "") { + dir = "/"; + } AutoCloseFD dirfd(open(dir.c_str(), O_RDONLY)); if (!dirfd) { // This really shouldn't fail silently, but it's left this way // for backwards compatibility. - if (errno == ENOENT) return; + if (errno == ENOENT) { + return; + } throw SysError(format("opening directory '%1%'") % path); } diff --git a/third_party/nix/src/libutil/util.hh b/third_party/nix/src/libutil/util.hh index 9331fca7f30b..b5383b6e71f8 100644 --- a/third_party/nix/src/libutil/util.hh +++ b/third_party/nix/src/libutil/util.hh @@ -301,7 +301,9 @@ void setInterruptThrown(); void _interrupted(); void inline checkInterrupt() { - if (_isInterrupted || (interruptCheck && interruptCheck())) _interrupted(); + if (_isInterrupted || (interruptCheck && interruptCheck())) { + _interrupted(); + } } MakeError(Interrupted, BaseError); -- cgit 1.4.1