diff --git a/.clang-tidy b/.clang-tidy index 84849db7a0..6a24cbc8d3 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -80,8 +80,6 @@ Checks: "-*, -modernize-replace-random-shuffle, -modernize-return-braced-init-list, -modernize-shrink-to-fit, - -modernize-unary-static-assert, - -modernize-use-auto, -modernize-use-bool-literals, -modernize-use-constraints, -modernize-use-default-member-init, diff --git a/cspell.config.yaml b/.cspell.config.yaml similarity index 96% rename from cspell.config.yaml rename to .cspell.config.yaml index c120c31855..c558fc0984 100644 --- a/cspell.config.yaml +++ b/.cspell.config.yaml @@ -36,9 +36,7 @@ overrides: - /'[^']*'/g # single-quoted strings - /`[^`]*`/g # backtick strings suggestWords: - - xprl->xrpl - - xprld->xrpld # cspell: disable-line not sure what this problem is.... - - unsynched->unsynced # cspell: disable-line not sure what this problem is.... + - unsynched->unsynced - synched->synced - synch->sync words: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2e4521870d..910bda8d4c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -90,20 +90,19 @@ repos: - repo: https://github.com/streetsidesoftware/cspell-cli rev: ea11f9efc0bec520073405bc30552da887ba71bc # frozen: v10.0.1 hooks: - - id: cspell # Spell check changed files + - id: cspell + name: check changed files spelling exclude: | (?x)^( - .config/cspell.config.yaml| + \.cspell\.config\.yaml| include/xrpl/protocol_autogen/(transactions|ledger_entries)/.* )$ - - id: cspell # Spell check the commit message + - id: cspell name: check commit message spelling args: - --no-must-find-files - --no-progress - --no-summary - - --files - - .git/COMMIT_EDITMSG stages: [commit-msg] - repo: local diff --git a/BUILD.md b/BUILD.md index 6ccdde12d5..a15c94edc9 100644 --- a/BUILD.md +++ b/BUILD.md @@ -25,7 +25,7 @@ You can verify that the required tools are installed and runnable with: | ----------- | --------------- | | GCC | 15.2 | | Clang | 22 | -| Apple Clang | 17 | +| Apple Clang | 21 | | MSVC | 19.44[^windows] | ## Operating Systems diff --git a/bin/pre-commit/clang_tidy_check.py b/bin/pre-commit/clang_tidy_check.py index d074c56acf..5b5792b405 100755 --- a/bin/pre-commit/clang_tidy_check.py +++ b/bin/pre-commit/clang_tidy_check.py @@ -17,9 +17,11 @@ import subprocess import sys from pathlib import Path +CLANG_TIDY_VERSION = 22 + def find_run_clang_tidy() -> str | None: - for candidate in ("run-clang-tidy-21", "run-clang-tidy"): + for candidate in (f"run-clang-tidy-{CLANG_TIDY_VERSION}", "run-clang-tidy"): if path := shutil.which(candidate): return path return None @@ -44,8 +46,8 @@ def main(): run_clang_tidy = find_run_clang_tidy() if not run_clang_tidy: print( - "clang-tidy check failed: TIDY is enabled but neither " - "'run-clang-tidy-21' nor 'run-clang-tidy' was found in PATH.", + f"clang-tidy check failed: TIDY is enabled but neither " + f"'run-clang-tidy-{CLANG_TIDY_VERSION}' nor 'run-clang-tidy' was found in PATH.", file=sys.stderr, ) return 1 diff --git a/include/xrpl/basics/Number.h b/include/xrpl/basics/Number.h index 979e8e645e..8d8ad608ee 100644 --- a/include/xrpl/basics/Number.h +++ b/include/xrpl/basics/Number.h @@ -199,7 +199,7 @@ struct MantissaRange final rep const internalMin{getInternalMin(scale, log)}; CuspRoundingFix const cuspRoundingFixEnabled{isCuspFixEnabled(scale)}; - static MantissaRange const& + static constexpr MantissaRange const& getMantissaRange(MantissaScale scale); static std::set const& diff --git a/include/xrpl/basics/base_uint.h b/include/xrpl/basics/base_uint.h index e6ca1993f9..c60fbf35b4 100644 --- a/include/xrpl/basics/base_uint.h +++ b/include/xrpl/basics/base_uint.h @@ -97,7 +97,7 @@ public: // static constexpr std::size_t kBytes = Bits / 8; - static_assert(sizeof(data_) == kBytes, ""); + static_assert(sizeof(data_) == kBytes); using size_type = std::size_t; using difference_type = std::ptrdiff_t; diff --git a/include/xrpl/beast/hash/hash_append.h b/include/xrpl/beast/hash/hash_append.h index 0b36d4c983..5f77f41e5d 100644 --- a/include/xrpl/beast/hash/hash_append.h +++ b/include/xrpl/beast/hash/hash_append.h @@ -26,7 +26,7 @@ template inline void reverseBytes(T& t) { - unsigned char* bytes = + auto* bytes = static_cast(std::memmove(std::addressof(t), std::addressof(t), sizeof(T))); for (unsigned i = 0; i < sizeof(T) / 2; ++i) std::swap(bytes[i], bytes[sizeof(T) - 1 - i]); diff --git a/include/xrpl/beast/unit_test/suite_list.h b/include/xrpl/beast/unit_test/suite_list.h index cf9fb9c5b1..7dd0dd80f0 100644 --- a/include/xrpl/beast/unit_test/suite_list.h +++ b/include/xrpl/beast/unit_test/suite_list.h @@ -10,9 +10,9 @@ #include #include -#include -#include -#include +#include // IWYU pragma: keep +#include // IWYU pragma: keep +#include // IWYU pragma: keep namespace beast::unit_test { diff --git a/include/xrpl/beast/utility/Journal.h b/include/xrpl/beast/utility/Journal.h index ac08b1384b..3de3cfb0e0 100644 --- a/include/xrpl/beast/utility/Journal.h +++ b/include/xrpl/beast/utility/Journal.h @@ -108,12 +108,12 @@ public: }; #ifndef __INTELLISENSE__ - static_assert(!std::is_default_constructible_v, ""); - static_assert(!std::is_copy_constructible_v, ""); - static_assert(!std::is_move_constructible_v, ""); - static_assert(!std::is_copy_assignable_v, ""); - static_assert(!std::is_move_assignable_v, ""); - static_assert(std::is_nothrow_destructible_v, ""); + static_assert(!std::is_default_constructible_v); + static_assert(!std::is_copy_constructible_v); + static_assert(!std::is_move_constructible_v); + static_assert(!std::is_copy_assignable_v); + static_assert(!std::is_move_assignable_v); + static_assert(std::is_nothrow_destructible_v); #endif /** Returns a Sink which does nothing. */ @@ -164,12 +164,12 @@ public: }; #ifndef __INTELLISENSE__ - static_assert(!std::is_default_constructible_v, ""); - static_assert(std::is_copy_constructible_v, ""); - static_assert(std::is_move_constructible_v, ""); - static_assert(!std::is_copy_assignable_v, ""); - static_assert(!std::is_move_assignable_v, ""); - static_assert(std::is_nothrow_destructible_v, ""); + static_assert(!std::is_default_constructible_v); + static_assert(std::is_copy_constructible_v); + static_assert(std::is_move_constructible_v); + static_assert(!std::is_copy_assignable_v); + static_assert(!std::is_move_assignable_v); + static_assert(std::is_nothrow_destructible_v); #endif //-------------------------------------------------------------------------- @@ -246,12 +246,12 @@ public: }; #ifndef __INTELLISENSE__ - static_assert(std::is_default_constructible_v, ""); - static_assert(std::is_copy_constructible_v, ""); - static_assert(std::is_move_constructible_v, ""); - static_assert(!std::is_copy_assignable_v, ""); - static_assert(!std::is_move_assignable_v, ""); - static_assert(std::is_nothrow_destructible_v, ""); + static_assert(std::is_default_constructible_v); + static_assert(std::is_copy_constructible_v); + static_assert(std::is_move_constructible_v); + static_assert(!std::is_copy_assignable_v); + static_assert(!std::is_move_assignable_v); + static_assert(std::is_nothrow_destructible_v); #endif //-------------------------------------------------------------------------- @@ -329,12 +329,12 @@ public: }; #ifndef __INTELLISENSE__ -static_assert(!std::is_default_constructible_v, ""); -static_assert(std::is_copy_constructible_v, ""); -static_assert(std::is_move_constructible_v, ""); -static_assert(std::is_copy_assignable_v, ""); -static_assert(std::is_move_assignable_v, ""); -static_assert(std::is_nothrow_destructible_v, ""); +static_assert(!std::is_default_constructible_v); +static_assert(std::is_copy_constructible_v); +static_assert(std::is_move_constructible_v); +static_assert(std::is_copy_assignable_v); +static_assert(std::is_move_assignable_v); +static_assert(std::is_nothrow_destructible_v); #endif //------------------------------------------------------------------------------ diff --git a/include/xrpl/beast/utility/rngfill.h b/include/xrpl/beast/utility/rngfill.h index 0fc3ffe0d0..ee7a5e2434 100644 --- a/include/xrpl/beast/utility/rngfill.h +++ b/include/xrpl/beast/utility/rngfill.h @@ -14,7 +14,7 @@ rngfill(void* const buffer, std::size_t const bytes, Generator& g) using result_type = Generator::result_type; constexpr std::size_t kResultSize = sizeof(result_type); - std::uint8_t* const bufferStart = static_cast(buffer); + auto* const bufferStart = static_cast(buffer); std::size_t const completeIterations = bytes / kResultSize; std::size_t const bytesRemaining = bytes % kResultSize; @@ -42,7 +42,7 @@ rngfill(std::array& a, Generator& g) { using result_type = Generator::result_type; auto i = N / sizeof(result_type); - result_type* p = reinterpret_cast(a.data()); + auto* p = reinterpret_cast(a.data()); while (i--) *p++ = g(); } diff --git a/include/xrpl/core/JobTypes.h b/include/xrpl/core/JobTypes.h index f338b19f6c..cc2f3ecbf5 100644 --- a/include/xrpl/core/JobTypes.h +++ b/include/xrpl/core/JobTypes.h @@ -118,7 +118,7 @@ public: [[nodiscard]] JobTypeInfo const& get(JobType jt) const { - Map::const_iterator const iter(map.find(jt)); + auto const iter = map.find(jt); XRPL_ASSERT(iter != map.end(), "xrpl::JobTypes::get : valid input"); if (iter != map.end()) diff --git a/include/xrpl/ledger/ApplyView.h b/include/xrpl/ledger/ApplyView.h index 3bf5d479d1..e519013d9a 100644 --- a/include/xrpl/ledger/ApplyView.h +++ b/include/xrpl/ledger/ApplyView.h @@ -5,7 +5,7 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/include/xrpl/ledger/CachedView.h b/include/xrpl/ledger/CachedView.h index f83c3e1297..1da3a67563 100644 --- a/include/xrpl/ledger/CachedView.h +++ b/include/xrpl/ledger/CachedView.h @@ -141,7 +141,7 @@ template class CachedView : public detail::CachedViewImpl { private: - static_assert(std::is_base_of_v, ""); + static_assert(std::is_base_of_v); std::shared_ptr sp_; diff --git a/include/xrpl/ledger/ReadView.h b/include/xrpl/ledger/ReadView.h index 8bbd3e06cb..724533039b 100644 --- a/include/xrpl/ledger/ReadView.h +++ b/include/xrpl/ledger/ReadView.h @@ -7,7 +7,7 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/include/xrpl/ledger/detail/ReadViewFwdRange.h b/include/xrpl/ledger/detail/ReadViewFwdRange.h index 82d8b59c6a..19ac0698c2 100644 --- a/include/xrpl/ledger/detail/ReadViewFwdRange.h +++ b/include/xrpl/ledger/detail/ReadViewFwdRange.h @@ -108,8 +108,8 @@ public: std::optional mutable cache_; }; - static_assert(std::is_nothrow_move_constructible{}, ""); - static_assert(std::is_nothrow_move_assignable{}, ""); + static_assert(std::is_nothrow_move_constructible{}); + static_assert(std::is_nothrow_move_assignable{}); using const_iterator = Iterator; diff --git a/include/xrpl/ledger/helpers/EscrowHelpers.h b/include/xrpl/ledger/helpers/EscrowHelpers.h index 001dc9cb25..d173c33c56 100644 --- a/include/xrpl/ledger/helpers/EscrowHelpers.h +++ b/include/xrpl/ledger/helpers/EscrowHelpers.h @@ -54,7 +54,7 @@ escrowUnlockApplyHelper( bool createAsset, beast::Journal journal) { - Issue const& issue = amount.get(); + auto const& issue = amount.get(); Keylet const trustLineKey = keylet::trustLine(receiver, issue); bool const recvLow = issuer > receiver; bool const senderIssuer = issuer == sender; diff --git a/include/xrpl/ledger/helpers/LendingHelpers.h b/include/xrpl/ledger/helpers/LendingHelpers.h index c21e5bf0ce..873abae272 100644 --- a/include/xrpl/ledger/helpers/LendingHelpers.h +++ b/include/xrpl/ledger/helpers/LendingHelpers.h @@ -8,7 +8,7 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/include/xrpl/nodestore/detail/codec.h b/include/xrpl/nodestore/detail/codec.h index 56e1fbcf73..2f69d532be 100644 --- a/include/xrpl/nodestore/detail/codec.h +++ b/include/xrpl/nodestore/detail/codec.h @@ -62,7 +62,7 @@ lz4Compress(void const* in, std::size_t inSize, BufferFactory&& bf) std::array::kMax> vi{}; auto const n = writeVarint(vi.data(), inSize); auto const outMax = LZ4_compressBound(inSize); - std::uint8_t* out = reinterpret_cast(bf(n + outMax)); + auto* out = reinterpret_cast(bf(n + outMax)); result.first = out; std::memcpy(out, vi.data(), n); auto const outSize = LZ4_compress_default( @@ -90,7 +90,7 @@ nodeobjectDecompress(void const* in, std::size_t inSize, BufferFactory&& bf) { using namespace nudb::detail; - std::uint8_t const* p = reinterpret_cast(in); + auto const* p = reinterpret_cast(in); std::size_t type = 0; auto const vn = readVarint(p, inSize, type); if (vn == 0) @@ -237,7 +237,7 @@ nodeobjectCompress(void const* in, std::size_t inSize, BufferFactory&& bf) auto const vs = sizeVarint(type); result.second = vs + field::size + // mask (n * 32); // hashes - std::uint8_t* out = reinterpret_cast(bf(result.second)); + auto* out = reinterpret_cast(bf(result.second)); result.first = out; ostream os(out, result.second); write(os, type); @@ -249,7 +249,7 @@ nodeobjectCompress(void const* in, std::size_t inSize, BufferFactory&& bf) auto const type = 3U; auto const vs = sizeVarint(type); result.second = vs + (n * 32); // hashes - std::uint8_t* out = reinterpret_cast(bf(result.second)); + auto* out = reinterpret_cast(bf(result.second)); result.first = out; ostream os(out, result.second); write(os, type); diff --git a/include/xrpl/nodestore/detail/varint.h b/include/xrpl/nodestore/detail/varint.h index 21a13bd6de..6102c0cf2d 100644 --- a/include/xrpl/nodestore/detail/varint.h +++ b/include/xrpl/nodestore/detail/varint.h @@ -39,7 +39,7 @@ readVarint(void const* buf, std::size_t buflen, std::size_t& t) if (buflen == 0) return 0; t = 0; - std::uint8_t const* p = reinterpret_cast(buf); + auto const* p = reinterpret_cast(buf); std::size_t n = 0; while (p[n] & 0x80) { @@ -86,7 +86,7 @@ std::size_t writeVarint(void* p0, std::size_t v) { // NOLINTNEXTLINE(misc-const-correctness) - std::uint8_t* p = reinterpret_cast(p0); + auto* p = reinterpret_cast(p0); do { std::uint8_t d = v % 127; diff --git a/include/xrpl/protocol/AmountConversions.h b/include/xrpl/protocol/AmountConversions.h index 66ada68d6f..3bcd80e827 100644 --- a/include/xrpl/protocol/AmountConversions.h +++ b/include/xrpl/protocol/AmountConversions.h @@ -13,7 +13,7 @@ #include #include -#include +#include // IWYU pragma: keep #include #include diff --git a/include/xrpl/protocol/Quality.h b/include/xrpl/protocol/Quality.h index 6bb2033dc0..de61d79ca5 100644 --- a/include/xrpl/protocol/Quality.h +++ b/include/xrpl/protocol/Quality.h @@ -282,7 +282,7 @@ public: auto const maxVMantissa = mantissa(maxV); auto const expDiff = exponent(maxV) - exponent(minV); - double const minVD = static_cast(minVMantissa); + auto const minVD = static_cast(minVMantissa); double const maxVD = (expDiff != 0) ? maxVMantissa * pow(10, expDiff) : static_cast(maxVMantissa); diff --git a/include/xrpl/protocol/STBitString.h b/include/xrpl/protocol/STBitString.h index 4f25eccca6..6f71f48f25 100644 --- a/include/xrpl/protocol/STBitString.h +++ b/include/xrpl/protocol/STBitString.h @@ -148,7 +148,7 @@ template bool STBitString::isEquivalent(STBase const& t) const { - STBitString const* v = dynamic_cast(&t); + auto const* v = dynamic_cast(&t); return v && (value_ == v->value_); } diff --git a/include/xrpl/protocol/STInteger.h b/include/xrpl/protocol/STInteger.h index 1c7ac98f3e..951c4fc52f 100644 --- a/include/xrpl/protocol/STInteger.h +++ b/include/xrpl/protocol/STInteger.h @@ -115,7 +115,7 @@ template inline bool STInteger::isEquivalent(STBase const& t) const { - STInteger const* v = dynamic_cast(&t); + auto const* v = dynamic_cast(&t); return v && (value_ == v->value_); } diff --git a/include/xrpl/protocol/STObject.h b/include/xrpl/protocol/STObject.h index c254a37aaf..a60e8f7fe8 100644 --- a/include/xrpl/protocol/STObject.h +++ b/include/xrpl/protocol/STObject.h @@ -1241,7 +1241,7 @@ template void STObject::setFieldUsingSetValue(SField const& field, V value) { - static_assert(!std::is_lvalue_reference_v, ""); + static_assert(!std::is_lvalue_reference_v); STBase* rf = getPField(field, true); diff --git a/include/xrpl/protocol/Serializer.h b/include/xrpl/protocol/Serializer.h index 1d0453d6aa..73bd9c8289 100644 --- a/include/xrpl/protocol/Serializer.h +++ b/include/xrpl/protocol/Serializer.h @@ -334,7 +334,7 @@ public: template explicit SerialIter(std::uint8_t const (&data)[N]) : SerialIter(&data[0], N) { - static_assert(N > 0, ""); + static_assert(N > 0); } [[nodiscard]] bool diff --git a/include/xrpl/protocol/detail/features.macro b/include/xrpl/protocol/detail/features.macro index a7a62f0322..3f078561a3 100644 --- a/include/xrpl/protocol/detail/features.macro +++ b/include/xrpl/protocol/detail/features.macro @@ -15,9 +15,9 @@ // Add new amendments to the top of this list. // Keep it sorted in reverse chronological order. -XRPL_FEATURE(BatchV1_1, Supported::No, VoteBehavior::DefaultNo) +XRPL_FEATURE(BatchV1_1, Supported::Yes, VoteBehavior::DefaultNo) XRPL_FEATURE(LendingProtocolV1_1, Supported::No, VoteBehavior::DefaultNo) -XRPL_FEATURE(ConfidentialTransfer, Supported::No, VoteBehavior::DefaultNo) +XRPL_FEATURE(ConfidentialTransfer, Supported::Yes, VoteBehavior::DefaultNo) XRPL_FIX (Cleanup3_3_0, Supported::Yes, VoteBehavior::DefaultNo) XRPL_FIX (Cleanup3_2_0, Supported::Yes, VoteBehavior::DefaultNo) XRPL_FEATURE(MPTokensV2, Supported::No, VoteBehavior::DefaultNo) diff --git a/include/xrpl/tx/paths/detail/EitherAmount.h b/include/xrpl/tx/paths/detail/EitherAmount.h index 68ad90d2d4..bc9488d5db 100644 --- a/include/xrpl/tx/paths/detail/EitherAmount.h +++ b/include/xrpl/tx/paths/detail/EitherAmount.h @@ -6,7 +6,7 @@ #include // IWYU pragma: keep #include -#include +#include // IWYU pragma: keep #include #include diff --git a/nix/packages.nix b/nix/packages.nix index 6202168733..bcadfe7456 100644 --- a/nix/packages.nix +++ b/nix/packages.nix @@ -32,6 +32,15 @@ in perl # needed for openssl pkg-config pre-commit + # protoc generates the Go gRPC bindings and embeds its own version string into every committed + # .pb.go file. To allow CI to verify those files with a plain `git diff`, we pin the version to + # `protobuf_34` rather than the rolling `protobuf` to keep regeneration reproducible across the + # Nix frequently changing unstable channel. The protoc-gen-go* plugins have no versioned + # attributes in nixpkgs; protoc-gen-go's version is in turn constrained by the go.mod require + # on google.golang.org/protobuf. + protobuf_34 # provides protoc + protoc-gen-go # protoc plugin for the Go message bindings + protoc-gen-go-grpc # protoc plugin for the Go gRPC service stubs python3 runClangTidy vim diff --git a/src/libxrpl/basics/Number.cpp b/src/libxrpl/basics/Number.cpp index 112fc33864..77c4c6a034 100644 --- a/src/libxrpl/basics/Number.cpp +++ b/src/libxrpl/basics/Number.cpp @@ -99,7 +99,7 @@ MantissaRange::getRanges() return kMap; } -MantissaRange const& +MantissaRange constexpr const& MantissaRange::getMantissaRange(MantissaScale scale) { return getRanges().at(scale); @@ -1159,7 +1159,7 @@ operator rep() const if (g.isNegative()) { - return -drops; + return -static_cast(drops); } return drops; } diff --git a/src/libxrpl/beast/insight/StatsDCollector.cpp b/src/libxrpl/beast/insight/StatsDCollector.cpp index 0d0e013274..1da5315de1 100644 --- a/src/libxrpl/beast/insight/StatsDCollector.cpp +++ b/src/libxrpl/beast/insight/StatsDCollector.cpp @@ -640,14 +640,14 @@ StatsDGaugeImpl::doIncrement(GaugeImpl::difference_type amount) if (amount > 0) { - GaugeImpl::value_type const d(static_cast(amount)); + auto const d = static_cast(amount); value += (d >= std::numeric_limits::max() - value_) ? std::numeric_limits::max() - value_ : d; } else if (amount < 0) { - GaugeImpl::value_type const d(static_cast(-amount)); + auto const d = static_cast(-amount); value = (d >= value) ? 0 : value - d; } diff --git a/src/libxrpl/core/detail/JobQueue.cpp b/src/libxrpl/core/detail/JobQueue.cpp index ffb91db72d..f773270af3 100644 --- a/src/libxrpl/core/detail/JobQueue.cpp +++ b/src/libxrpl/core/detail/JobQueue.cpp @@ -122,7 +122,7 @@ JobQueue::getJobCount(JobType t) const { std::scoped_lock const lock(mutex_); - JobDataMap::const_iterator const c = jobData_.find(t); + auto const c = jobData_.find(t); return (c == jobData_.end()) ? 0 : c->second.waiting; } @@ -132,7 +132,7 @@ JobQueue::getJobCountTotal(JobType t) const { std::scoped_lock const lock(mutex_); - JobDataMap::const_iterator const c = jobData_.find(t); + auto const c = jobData_.find(t); return (c == jobData_.end()) ? 0 : (c->second.waiting + c->second.running); } @@ -157,7 +157,7 @@ JobQueue::getJobCountGE(JobType t) const std::unique_ptr JobQueue::makeLoadEvent(JobType t, std::string const& name) { - JobDataMap::iterator const iter(jobData_.find(t)); + auto const iter = jobData_.find(t); XRPL_ASSERT(iter != jobData_.end(), "xrpl::JobQueue::makeLoadEvent : valid job type input"); if (iter == jobData_.end()) @@ -172,7 +172,7 @@ JobQueue::addLoadEvents(JobType t, int count, std::chrono::milliseconds elapsed) if (isStopped()) logicError("JobQueue::addLoadEvents() called after JobQueue stopped"); - JobDataMap::iterator const iter(jobData_.find(t)); + auto const iter = jobData_.find(t); XRPL_ASSERT(iter != jobData_.end(), "xrpl::JobQueue::addLoadEvents : valid job type input"); iter->second.load().addSamples(count, elapsed); } @@ -250,7 +250,7 @@ JobQueue::rendezvous() JobTypeData& JobQueue::getJobTypeData(JobType type) { - JobDataMap::iterator const c(jobData_.find(type)); + auto const c = jobData_.find(type); XRPL_ASSERT(c != jobData_.end(), "xrpl::JobQueue::getJobTypeData : valid job type input"); // NIKB: This is ugly and I hate it. We must remove JtInvalid completely diff --git a/src/libxrpl/crypto/RFC1751.cpp b/src/libxrpl/crypto/RFC1751.cpp index 16482945d2..41e29ee00c 100644 --- a/src/libxrpl/crypto/RFC1751.cpp +++ b/src/libxrpl/crypto/RFC1751.cpp @@ -434,7 +434,7 @@ RFC1751::getWordFromBlob(void const* blob, size_t bytes) // This is a simple implementation of the Jenkins one-at-a-time hash // algorithm: // http://en.wikipedia.org/wiki/Jenkins_hash_function#one-at-a-time - unsigned char const* data = static_cast(blob); + auto const* data = static_cast(blob); std::uint32_t hash = 0; for (size_t i = 0; i < bytes; ++i) diff --git a/src/libxrpl/json/json_reader.cpp b/src/libxrpl/json/json_reader.cpp index 3786f51fdd..45e448c480 100644 --- a/src/libxrpl/json/json_reader.cpp +++ b/src/libxrpl/json/json_reader.cpp @@ -908,7 +908,7 @@ Reader::getFormattedErrorMessages() const { std::string formattedMessage; - for (Errors::const_iterator itError = errors_.begin(); itError != errors_.end(); ++itError) + for (auto itError = errors_.begin(); itError != errors_.end(); ++itError) { ErrorInfo const& error = *itError; formattedMessage += "* " + getLocationLineAndColumn(error.token.start) + "\n"; diff --git a/src/libxrpl/json/json_value.cpp b/src/libxrpl/json/json_value.cpp index 074a88428c..7218b8c6cf 100644 --- a/src/libxrpl/json/json_value.cpp +++ b/src/libxrpl/json/json_value.cpp @@ -802,7 +802,7 @@ Value::size() const case ValueType::Array: // size of the array is highest index + 1 if (!value_.mapVal->empty()) { - ObjectValues::const_iterator itLast = value_.mapVal->end(); + auto itLast = value_.mapVal->end(); --itLast; return (*itLast).first.index() + 1; } @@ -866,7 +866,7 @@ Value::operator[](UInt index) *this = Value(ValueType::Array); CZString const key(index); - ObjectValues::iterator it = value_.mapVal->lower_bound(key); + auto it = value_.mapVal->lower_bound(key); if (it != value_.mapVal->end() && (*it).first == key) return (*it).second; @@ -887,7 +887,7 @@ Value::operator[](UInt index) const return kNull; CZString const key(index); - ObjectValues::const_iterator const it = value_.mapVal->find(key); + auto const it = value_.mapVal->find(key); if (it == value_.mapVal->end()) return kNull; @@ -915,7 +915,7 @@ Value::resolveReference(char const* key, bool isStatic) key, isStatic ? CZString::DuplicationPolicy::NoDuplication : CZString::DuplicationPolicy::DuplicateOnCopy); - ObjectValues::iterator it = value_.mapVal->lower_bound(actualKey); + auto it = value_.mapVal->lower_bound(actualKey); if (it != value_.mapVal->end() && (*it).first == actualKey) return (*it).second; @@ -950,7 +950,7 @@ Value::operator[](char const* key) const return kNull; CZString const actualKey(key, CZString::DuplicationPolicy::NoDuplication); - ObjectValues::const_iterator const it = value_.mapVal->find(actualKey); + auto const it = value_.mapVal->find(actualKey); if (it == value_.mapVal->end()) return kNull; @@ -1018,7 +1018,7 @@ Value::removeMember(char const* key) return kNull; CZString const actualKey(key, CZString::DuplicationPolicy::NoDuplication); - ObjectValues::iterator const it = value_.mapVal->find(actualKey); + auto const it = value_.mapVal->find(actualKey); if (it == value_.mapVal->end()) return kNull; @@ -1068,8 +1068,8 @@ Value::getMemberNames() const Members members; members.reserve(value_.mapVal->size()); - ObjectValues::const_iterator it = value_.mapVal->begin(); - ObjectValues::const_iterator const itEnd = value_.mapVal->end(); + auto it = value_.mapVal->begin(); + auto const itEnd = value_.mapVal->end(); for (; it != itEnd; ++it) members.emplace_back((*it).first.cStr()); diff --git a/src/libxrpl/json/json_writer.cpp b/src/libxrpl/json/json_writer.cpp index 4c38bdcf92..c9f8cb688b 100644 --- a/src/libxrpl/json/json_writer.cpp +++ b/src/libxrpl/json/json_writer.cpp @@ -232,7 +232,7 @@ FastWriter::writeValue(Value const& value) Value::Members members(value.getMemberNames()); document_ += "{"; - for (Value::Members::iterator it = members.begin(); it != members.end(); ++it) + for (auto it = members.begin(); it != members.end(); ++it) { std::string const& name = *it; @@ -310,7 +310,7 @@ StyledWriter::writeValue(Value const& value) { writeWithIndent("{"); indent(); - Value::Members::iterator it = members.begin(); + auto it = members.begin(); while (true) { @@ -545,7 +545,7 @@ StyledStreamWriter::writeValue(Value const& value) { writeWithIndent("{"); indent(); - Value::Members::iterator it = members.begin(); + auto it = members.begin(); while (true) { diff --git a/src/libxrpl/ledger/helpers/NFTokenHelpers.cpp b/src/libxrpl/ledger/helpers/NFTokenHelpers.cpp index af429358bb..6dca715a8c 100644 --- a/src/libxrpl/ledger/helpers/NFTokenHelpers.cpp +++ b/src/libxrpl/ledger/helpers/NFTokenHelpers.cpp @@ -24,7 +24,7 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/src/libxrpl/ledger/helpers/OfferHelpers.cpp b/src/libxrpl/ledger/helpers/OfferHelpers.cpp index 5249870143..6e72b71564 100644 --- a/src/libxrpl/ledger/helpers/OfferHelpers.cpp +++ b/src/libxrpl/ledger/helpers/OfferHelpers.cpp @@ -6,7 +6,7 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include // IWYU pragma: keep #include diff --git a/src/libxrpl/ledger/helpers/VaultHelpers.cpp b/src/libxrpl/ledger/helpers/VaultHelpers.cpp index 3a3a756499..b5b076d1cb 100644 --- a/src/libxrpl/ledger/helpers/VaultHelpers.cpp +++ b/src/libxrpl/ledger/helpers/VaultHelpers.cpp @@ -5,7 +5,7 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/src/libxrpl/nodestore/DecodedBlob.cpp b/src/libxrpl/nodestore/DecodedBlob.cpp index fb7569bd8c..fe07252f23 100644 --- a/src/libxrpl/nodestore/DecodedBlob.cpp +++ b/src/libxrpl/nodestore/DecodedBlob.cpp @@ -33,7 +33,7 @@ DecodedBlob::DecodedBlob(void const* key, void const* value, int valueBytes) if (valueBytes > 8) { - unsigned char const* byte = static_cast(value); + auto const* byte = static_cast(value); objectType_ = safeCast(byte[8]); } diff --git a/src/libxrpl/nodestore/backend/MemoryFactory.cpp b/src/libxrpl/nodestore/backend/MemoryFactory.cpp index 70578c8613..22557d652e 100644 --- a/src/libxrpl/nodestore/backend/MemoryFactory.cpp +++ b/src/libxrpl/nodestore/backend/MemoryFactory.cpp @@ -136,7 +136,7 @@ public: std::scoped_lock const _(db_->mutex); - Map::iterator const iter = db_->table.find(hash); + auto const iter = db_->table.find(hash); if (iter == db_->table.end()) { pObject->reset(); diff --git a/src/libxrpl/nodestore/backend/NuDBFactory.cpp b/src/libxrpl/nodestore/backend/NuDBFactory.cpp index 749d4020b5..38ea34258f 100644 --- a/src/libxrpl/nodestore/backend/NuDBFactory.cpp +++ b/src/libxrpl/nodestore/backend/NuDBFactory.cpp @@ -367,7 +367,7 @@ private: try { - std::size_t const parsedBlockSize = beast::lexicalCastThrow(blockSizeStr); + auto const parsedBlockSize = beast::lexicalCastThrow(blockSizeStr); // Validate: must be power of 2 between 4K and 32K if (parsedBlockSize < 4096 || parsedBlockSize > 32768 || diff --git a/src/libxrpl/nodestore/backend/RocksDBFactory.cpp b/src/libxrpl/nodestore/backend/RocksDBFactory.cpp index 69a648f2f4..bcf4ba4a49 100644 --- a/src/libxrpl/nodestore/backend/RocksDBFactory.cpp +++ b/src/libxrpl/nodestore/backend/RocksDBFactory.cpp @@ -80,7 +80,7 @@ public: void StartThread(void (*f)(void*), void* a) override { - ThreadParams* const p(new ThreadParams(f, a)); + auto* const p = new ThreadParams(f, a); EnvWrapper::StartThread(&RocksDBEnv::threadEntry, p); } }; diff --git a/src/libxrpl/protocol/IOUAmount.cpp b/src/libxrpl/protocol/IOUAmount.cpp index acbf6724e1..111edbf8b5 100644 --- a/src/libxrpl/protocol/IOUAmount.cpp +++ b/src/libxrpl/protocol/IOUAmount.cpp @@ -181,7 +181,7 @@ mulRatio(IOUAmount const& amt, std::uint32_t num, std::uint32_t den, bool roundU hasRem = bool(sav - low * kPowerTable[mustShrink]); } - std::int64_t mantissa = low.convert_to(); + auto mantissa = low.convert_to(); // normalize before rounding if (neg) diff --git a/src/libxrpl/protocol/MPTIssue.cpp b/src/libxrpl/protocol/MPTIssue.cpp index e9ec852d1d..35ee743b2a 100644 --- a/src/libxrpl/protocol/MPTIssue.cpp +++ b/src/libxrpl/protocol/MPTIssue.cpp @@ -31,8 +31,7 @@ MPTIssue::getIssuer() const // MPTID is concatenation of sequence + account static_assert(sizeof(MPTID) == (sizeof(std::uint32_t) + sizeof(AccountID))); // copy from id skipping the sequence - AccountID const* account = - reinterpret_cast(mptID_.data() + sizeof(std::uint32_t)); + auto const* account = reinterpret_cast(mptID_.data() + sizeof(std::uint32_t)); return *account; } diff --git a/src/libxrpl/protocol/NFTokenID.cpp b/src/libxrpl/protocol/NFTokenID.cpp index cd2c46b66b..729f052101 100644 --- a/src/libxrpl/protocol/NFTokenID.cpp +++ b/src/libxrpl/protocol/NFTokenID.cpp @@ -72,8 +72,7 @@ getNFTokenIDFromPage(TxMeta const& transactionMeta) // However, there will always be NFTs listed in the final fields, // as xrpld outputs all fields in final fields even if they were // not changed. - STObject const& previousFields = - node.peekAtField(sfPreviousFields).downcast(); + auto const& previousFields = node.peekAtField(sfPreviousFields).downcast(); if (!previousFields.isFieldPresent(sfNFTokens)) continue; diff --git a/src/libxrpl/protocol/Quality.cpp b/src/libxrpl/protocol/Quality.cpp index 7ad426bef7..dde7921a76 100644 --- a/src/libxrpl/protocol/Quality.cpp +++ b/src/libxrpl/protocol/Quality.cpp @@ -1,12 +1,12 @@ #include -#include +#include // IWYU pragma: keep #include #include #include #include -#include +#include // IWYU pragma: keep namespace xrpl { diff --git a/src/libxrpl/protocol/STAmount.cpp b/src/libxrpl/protocol/STAmount.cpp index 748d00f25a..212c34322b 100644 --- a/src/libxrpl/protocol/STAmount.cpp +++ b/src/libxrpl/protocol/STAmount.cpp @@ -789,7 +789,7 @@ STAmount::add(Serializer& s) const bool STAmount::isEquivalent(STBase const& t) const { - STAmount const* v = dynamic_cast(&t); + auto const* v = dynamic_cast(&t); return (v != nullptr) && (*v == *this); } diff --git a/src/libxrpl/protocol/STBlob.cpp b/src/libxrpl/protocol/STBlob.cpp index 3f44c9b529..14d09b633c 100644 --- a/src/libxrpl/protocol/STBlob.cpp +++ b/src/libxrpl/protocol/STBlob.cpp @@ -53,7 +53,7 @@ STBlob::add(Serializer& s) const bool STBlob::isEquivalent(STBase const& t) const { - STBlob const* v = dynamic_cast(&t); + auto const* v = dynamic_cast(&t); return (v != nullptr) && (value_ == v->value_); } diff --git a/src/libxrpl/protocol/STCurrency.cpp b/src/libxrpl/protocol/STCurrency.cpp index 9b761864d9..fc8bd756ed 100644 --- a/src/libxrpl/protocol/STCurrency.cpp +++ b/src/libxrpl/protocol/STCurrency.cpp @@ -56,7 +56,7 @@ STCurrency::add(Serializer& s) const bool STCurrency::isEquivalent(STBase const& t) const { - STCurrency const* v = dynamic_cast(&t); + auto const* v = dynamic_cast(&t); return (v != nullptr) && (*v == *this); } diff --git a/src/libxrpl/protocol/STInteger.cpp b/src/libxrpl/protocol/STInteger.cpp index 5f3fb6ffa4..b65504dd5f 100644 --- a/src/libxrpl/protocol/STInteger.cpp +++ b/src/libxrpl/protocol/STInteger.cpp @@ -16,7 +16,7 @@ #include #include #include -#include +#include // IWYU pragma: keep namespace xrpl { diff --git a/src/libxrpl/protocol/STIssue.cpp b/src/libxrpl/protocol/STIssue.cpp index c9b8109e32..10403d2c50 100644 --- a/src/libxrpl/protocol/STIssue.cpp +++ b/src/libxrpl/protocol/STIssue.cpp @@ -107,7 +107,7 @@ STIssue::add(Serializer& s) const bool STIssue::isEquivalent(STBase const& t) const { - STIssue const* v = dynamic_cast(&t); + auto const* v = dynamic_cast(&t); return (v != nullptr) && (*v == *this); } diff --git a/src/libxrpl/protocol/STNumber.cpp b/src/libxrpl/protocol/STNumber.cpp index fcc0077f6b..79f7655869 100644 --- a/src/libxrpl/protocol/STNumber.cpp +++ b/src/libxrpl/protocol/STNumber.cpp @@ -142,7 +142,7 @@ STNumber::isEquivalent(STBase const& t) const { XRPL_ASSERT( t.getSType() == this->getSType(), "xrpl::STNumber::isEquivalent : field type match"); - STNumber const& v = dynamic_cast(t); + auto const& v = dynamic_cast(t); return value_ == v; } diff --git a/src/libxrpl/protocol/STObject.cpp b/src/libxrpl/protocol/STObject.cpp index c493ba65af..ea8553dc4f 100644 --- a/src/libxrpl/protocol/STObject.cpp +++ b/src/libxrpl/protocol/STObject.cpp @@ -338,7 +338,7 @@ STObject::getText() const bool STObject::isEquivalent(STBase const& t) const { - STObject const* v = dynamic_cast(&t); + auto const* v = dynamic_cast(&t); if (v == nullptr) return false; @@ -474,7 +474,7 @@ STObject::peekFieldArray(SField const& field) bool STObject::setFlag(std::uint32_t f) { - STUInt32* t = dynamic_cast(getPField(sfFlags, true)); + auto* t = dynamic_cast(getPField(sfFlags, true)); if (t == nullptr) return false; @@ -486,7 +486,7 @@ STObject::setFlag(std::uint32_t f) bool STObject::clearFlag(std::uint32_t f) { - STUInt32* t = dynamic_cast(getPField(sfFlags)); + auto* t = dynamic_cast(getPField(sfFlags)); if (t == nullptr) return false; @@ -504,7 +504,7 @@ STObject::isFlag(std::uint32_t f) const std::uint32_t STObject::getFlags(void) const { - STUInt32 const* t = dynamic_cast(peekAtPField(sfFlags)); + auto const* t = dynamic_cast(peekAtPField(sfFlags)); if (t == nullptr) return 0; @@ -651,7 +651,7 @@ Blob STObject::getFieldVL(SField const& field) const { STBlob const empty; - STBlob const& b = getFieldByConstRef(field, empty); + auto const& b = getFieldByConstRef(field, empty); return Blob(b.data(), b.data() + b.size()); } diff --git a/src/libxrpl/protocol/STPathSet.cpp b/src/libxrpl/protocol/STPathSet.cpp index cb70ac36fe..d61f17ecc6 100644 --- a/src/libxrpl/protocol/STPathSet.cpp +++ b/src/libxrpl/protocol/STPathSet.cpp @@ -127,7 +127,7 @@ STPathSet::assembleAdd(STPath const& base, STPathElement const& tail) { // assemble base+tail and add it to the set if it's not a duplicate value_.push_back(base); - std::vector::reverse_iterator it = value_.rbegin(); + auto it = value_.rbegin(); STPath& newPath = *it; newPath.pushBack(tail); @@ -146,7 +146,7 @@ STPathSet::assembleAdd(STPath const& base, STPathElement const& tail) bool STPathSet::isEquivalent(STBase const& t) const { - STPathSet const* v = dynamic_cast(&t); + auto const* v = dynamic_cast(&t); return (v != nullptr) && (value_ == v->value_); } diff --git a/src/libxrpl/protocol/STTx.cpp b/src/libxrpl/protocol/STTx.cpp index cd2da12316..b3de717da8 100644 --- a/src/libxrpl/protocol/STTx.cpp +++ b/src/libxrpl/protocol/STTx.cpp @@ -596,6 +596,7 @@ STTx::getBatchTransactionIDs() const XRPL_ASSERT( batchTxnIds_->size() == getFieldArray(sfRawTransactions).size(), "STTx::getBatchTransactionIDs : batch transaction IDs size mismatch"); + // NOLINTNEXTLINE(bugprone-unchecked-optional-access): guarded by assert above return *batchTxnIds_; } diff --git a/src/libxrpl/protocol/STValidation.cpp b/src/libxrpl/protocol/STValidation.cpp index 5eafb407ec..1656aad3a2 100644 --- a/src/libxrpl/protocol/STValidation.cpp +++ b/src/libxrpl/protocol/STValidation.cpp @@ -6,7 +6,7 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/src/libxrpl/protocol/STVector256.cpp b/src/libxrpl/protocol/STVector256.cpp index 7aca309667..877e34c73c 100644 --- a/src/libxrpl/protocol/STVector256.cpp +++ b/src/libxrpl/protocol/STVector256.cpp @@ -68,7 +68,7 @@ STVector256::add(Serializer& s) const bool STVector256::isEquivalent(STBase const& t) const { - STVector256 const* v = dynamic_cast(&t); + auto const* v = dynamic_cast(&t); return (v != nullptr) && (value_ == v->value_); } diff --git a/src/libxrpl/protocol/STXChainBridge.cpp b/src/libxrpl/protocol/STXChainBridge.cpp index ce6ad2368a..005c9ccbce 100644 --- a/src/libxrpl/protocol/STXChainBridge.cpp +++ b/src/libxrpl/protocol/STXChainBridge.cpp @@ -168,7 +168,7 @@ STXChainBridge::getSType() const bool STXChainBridge::isEquivalent(STBase const& t) const { - STXChainBridge const* v = dynamic_cast(&t); + auto const* v = dynamic_cast(&t); return (v != nullptr) && (*v == *this); } diff --git a/src/libxrpl/protocol/Serializer.cpp b/src/libxrpl/protocol/Serializer.cpp index d500919df9..1eda04705f 100644 --- a/src/libxrpl/protocol/Serializer.cpp +++ b/src/libxrpl/protocol/Serializer.cpp @@ -444,7 +444,7 @@ template T SerialIter::getRawHelper(int size) { - static_assert(std::is_same_v || std::is_same_v, ""); + static_assert(std::is_same_v || std::is_same_v); if (remain_ < size) Throw("invalid SerialIter getRaw"); T result(size); diff --git a/src/libxrpl/protocol/digest.cpp b/src/libxrpl/protocol/digest.cpp index 2e1b2b25cf..1d84f8779e 100644 --- a/src/libxrpl/protocol/digest.cpp +++ b/src/libxrpl/protocol/digest.cpp @@ -9,7 +9,7 @@ namespace xrpl { OpensslRipemd160Hasher::OpensslRipemd160Hasher() { - static_assert(sizeof(decltype(OpensslRipemd160Hasher::ctx_)) == sizeof(RIPEMD160_CTX), ""); + static_assert(sizeof(decltype(OpensslRipemd160Hasher::ctx_)) == sizeof(RIPEMD160_CTX)); auto const ctx = reinterpret_cast(ctx_); RIPEMD160_Init(ctx); } @@ -34,7 +34,7 @@ operator result_type() noexcept OpensslSha512Hasher::OpensslSha512Hasher() { - static_assert(sizeof(decltype(OpensslSha512Hasher::ctx_)) == sizeof(SHA512_CTX), ""); + static_assert(sizeof(decltype(OpensslSha512Hasher::ctx_)) == sizeof(SHA512_CTX)); auto const ctx = reinterpret_cast(ctx_); SHA512_Init(ctx); } @@ -59,7 +59,7 @@ operator result_type() noexcept OpensslSha256Hasher::OpensslSha256Hasher() { - static_assert(sizeof(decltype(OpensslSha256Hasher::ctx_)) == sizeof(SHA256_CTX), ""); + static_assert(sizeof(decltype(OpensslSha256Hasher::ctx_)) == sizeof(SHA256_CTX)); auto const ctx = reinterpret_cast(ctx_); SHA256_Init(ctx); } diff --git a/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp b/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp index 0d83885349..531098bd1c 100644 --- a/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp +++ b/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp @@ -194,7 +194,7 @@ escrowCreatePreclaimHelper( AccountID const& dest, STAmount const& amount) { - Issue const& issue = amount.get(); + auto const& issue = amount.get(); AccountID const& issuer = amount.getIssuer(); // If the issuer is the same as the account, return tecNO_PERMISSION if (issuer == account) diff --git a/src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp b/src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp index 3d30005876..ad91c55723 100644 --- a/src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp +++ b/src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/src/test/app/ConfidentialTransfer_test.cpp b/src/test/app/ConfidentialTransfer_test.cpp index e6faf0a2ae..d3e0182db5 100644 --- a/src/test/app/ConfidentialTransfer_test.cpp +++ b/src/test/app/ConfidentialTransfer_test.cpp @@ -6920,7 +6920,7 @@ class ConfidentialTransfer_test : public ConfidentialTransferTestBase auto& mptAlice = confEnv.mpt; uint64_t const sendAmount = 10; - uint64_t const negativeRemaining = static_cast(-10); // 0xFFFFFFFFFFFFFFF6 + auto const negativeRemaining = static_cast(-10); // 0xFFFFFFFFFFFFFFF6 ConfidentialSendSetup const setup(mptAlice, bob, carol, alice, sendAmount); diff --git a/src/test/app/Delegate_test.cpp b/src/test/app/Delegate_test.cpp index 02ee0750d5..6f1d2ce7de 100644 --- a/src/test/app/Delegate_test.cpp +++ b/src/test/app/Delegate_test.cpp @@ -2747,8 +2747,6 @@ class Delegate_test : public beast::unit_test::Suite // DO NOT modify expectedDelegableCount unless all scenarios, including // edge cases, have been fully tested and verified. // ==================================================================== - // Includes the five confidential MPT transaction types, which are - // explicitly marked Delegable in transactions.macro. std::size_t const expectedDelegableCount = 56; BEAST_EXPECTS( diff --git a/src/test/app/Loan_test.cpp b/src/test/app/Loan_test.cpp index 56a7cab47a..3e62af48ff 100644 --- a/src/test/app/Loan_test.cpp +++ b/src/test/app/Loan_test.cpp @@ -8651,7 +8651,7 @@ protected: Account const borrower("borrower"); // Determine all the random parameters at once - AssetType const assetType = static_cast(assetDist_(engine_)); + auto const assetType = static_cast(assetDist_(engine_)); auto const principalRequest = principalDist_(engine_); TenthBips16 const managementFeeRate{managementFeeRateDist_(engine_)}; auto const serviceFee = serviceFeeDist_(engine_); diff --git a/src/test/app/Offer_test.cpp b/src/test/app/Offer_test.cpp index 804bd9b86c..2724a6474b 100644 --- a/src/test/app/Offer_test.cpp +++ b/src/test/app/Offer_test.cpp @@ -2195,7 +2195,7 @@ public: jtx::Account const& account, jtx::PrettyAmount const& expectBalance) { - Issue const& issue = expectBalance.value().get(); + auto const& issue = expectBalance.value().get(); auto const sleTrust = env.le(keylet::trustLine(account.id(), issue)); BEAST_EXPECT(sleTrust); if (sleTrust) diff --git a/src/test/app/PayChan_test.cpp b/src/test/app/PayChan_test.cpp index fd2c7790d5..f1a9506e0c 100644 --- a/src/test/app/PayChan_test.cpp +++ b/src/test/app/PayChan_test.cpp @@ -19,7 +19,7 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/src/test/app/PayStrand_test.cpp b/src/test/app/PayStrand_test.cpp index 11a0e5bab0..ddbcfe8b70 100644 --- a/src/test/app/PayStrand_test.cpp +++ b/src/test/app/PayStrand_test.cpp @@ -112,7 +112,7 @@ class ElementComboIter }; std::uint16_t state_ = 0; - static_assert(safeCast(SB::Last) <= sizeof(decltype(state_)) * 8, ""); + static_assert(safeCast(SB::Last) <= sizeof(decltype(state_)) * 8); STPathElement const* prev_ = nullptr; // disallow iss and cur to be specified with acc is specified (simplifies // some tests) diff --git a/src/test/app/Vault_test.cpp b/src/test/app/Vault_test.cpp index f6574872f9..3877e08f7e 100644 --- a/src/test/app/Vault_test.cpp +++ b/src/test/app/Vault_test.cpp @@ -7542,7 +7542,7 @@ class Vault_test : public beast::unit_test::Suite // Transaction fails if the data field is set, but is empty { testcase("VaultDelete memo data featureLendingProtocolV1_1 enabled data empty"); - delTx[sfMemoData] = strHex(std::string(0, 'A')); + delTx[sfMemoData] = strHex(std::string()); env(delTx, Ter(temMALFORMED)); env.close(); } diff --git a/src/test/basics/Buffer_test.cpp b/src/test/basics/Buffer_test.cpp index 816a697ca4..c748a3f9dd 100644 --- a/src/test/basics/Buffer_test.cpp +++ b/src/test/basics/Buffer_test.cpp @@ -103,8 +103,8 @@ struct Buffer_test : beast::unit_test::Suite { testcase("Move Construction / Assignment"); - static_assert(std::is_nothrow_move_constructible_v, ""); - static_assert(std::is_nothrow_move_assignable_v, ""); + static_assert(std::is_nothrow_move_constructible_v); + static_assert(std::is_nothrow_move_assignable_v); { // Move-construct from empty buf Buffer x; diff --git a/src/test/beast/LexicalCast_test.cpp b/src/test/beast/LexicalCast_test.cpp index f988aa03cf..b1d37daab8 100644 --- a/src/test/beast/LexicalCast_test.cpp +++ b/src/test/beast/LexicalCast_test.cpp @@ -24,7 +24,7 @@ public: testInteger(IntType in) { std::string s; - IntType out = static_cast(~in); // Ensure out != in + auto out = static_cast(~in); // Ensure out != in expect(lexicalCastChecked(s, in)); expect(lexicalCastChecked(out, s)); @@ -42,7 +42,7 @@ public: for (int i = 0; i < 1000; ++i) { - IntType const value(nextRandomInt(r)); + auto const value = nextRandomInt(r); testInteger(value); } } @@ -229,7 +229,7 @@ public: while (i <= std::numeric_limits::max()) { - std::int16_t const j = static_cast(i); + auto const j = static_cast(i); auto actual = std::to_string(j); diff --git a/src/test/beast/aged_associative_container_test.cpp b/src/test/beast/aged_associative_container_test.cpp index 3dbaf74040..df61824c99 100644 --- a/src/test/beast/aged_associative_container_test.cpp +++ b/src/test/beast/aged_associative_container_test.cpp @@ -1391,7 +1391,7 @@ AgedAssociativeContainerTestBase::reverseFillAgedContainer(Container& c, Values // c.clock() returns an abstract_clock, so dynamic_cast to ManualClock. // VFALCO NOTE This is sketchy using ManualClock = TestTraitsBase::ManualClock; - ManualClock& clk(dynamic_cast(c.clock())); + auto& clk = dynamic_cast(c.clock()); clk.set(0); Values rev(values); diff --git a/src/test/beast/beast_io_latency_probe_test.cpp b/src/test/beast/beast_io_latency_probe_test.cpp index 9a93968dab..807ad81c49 100644 --- a/src/test/beast/beast_io_latency_probe_test.cpp +++ b/src/test/beast/beast_io_latency_probe_test.cpp @@ -8,7 +8,7 @@ #include #include -#include +#include // IWYU pragma: keep #include #include // IWYU pragma: keep #include diff --git a/src/test/jtx/Env_test.cpp b/src/test/jtx/Env_test.cpp index d82cb86b36..47cfb604f4 100644 --- a/src/test/jtx/Env_test.cpp +++ b/src/test/jtx/Env_test.cpp @@ -110,10 +110,10 @@ public: PrettyAmount(0u); // NOLINT(bugprone-unused-raii) PrettyAmount(1u); // NOLINT(bugprone-unused-raii) PrettyAmount(-1); // NOLINT(bugprone-unused-raii) - static_assert(!std::is_trivially_constructible_v, ""); - static_assert(!std::is_trivially_constructible_v, ""); - static_assert(!std::is_trivially_constructible_v, ""); - static_assert(!std::is_trivially_constructible_v, ""); + static_assert(!std::is_trivially_constructible_v); + static_assert(!std::is_trivially_constructible_v); + static_assert(!std::is_trivially_constructible_v); + static_assert(!std::is_trivially_constructible_v); try { diff --git a/src/test/jtx/impl/amount.cpp b/src/test/jtx/impl/amount.cpp index b07703dace..f90102245a 100644 --- a/src/test/jtx/impl/amount.cpp +++ b/src/test/jtx/impl/amount.cpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/src/test/protocol/Quality_test.cpp b/src/test/protocol/Quality_test.cpp index df95cea8ef..db81886e94 100644 --- a/src/test/protocol/Quality_test.cpp +++ b/src/test/protocol/Quality_test.cpp @@ -24,7 +24,7 @@ public: static STAmount amount(Integer integer, std::enable_if_t>* = 0) { - static_assert(std::is_integral_v, ""); + static_assert(std::is_integral_v); return STAmount(integer, false); } @@ -32,7 +32,7 @@ public: static STAmount amount(Integer integer, std::enable_if_t>* = 0) { - static_assert(std::is_integral_v, ""); + static_assert(std::is_integral_v); if (integer < 0) return STAmount(-integer, true); return STAmount(integer, false); diff --git a/src/test/protocol/STObject_test.cpp b/src/test/protocol/STObject_test.cpp index b823b24962..8b7db632c5 100644 --- a/src/test/protocol/STObject_test.cpp +++ b/src/test/protocol/STObject_test.cpp @@ -356,8 +356,7 @@ public: { STObject st(sfGeneric); auto const v = ~st[~sf1Outer]; - static_assert( - std::is_same_v, std::optional>, ""); + static_assert(std::is_same_v, std::optional>); } // UDT scalar fields @@ -431,8 +430,7 @@ public: BEAST_EXPECT(cst[~sf]->size() == 2); // NOLINT(bugprone-unchecked-optional-access) BEAST_EXPECT(cst[sf][0] == 1); BEAST_EXPECT(cst[sf][1] == 2); - static_assert( - std::is_same_v const&>, ""); + static_assert(std::is_same_v const&>); } // Default by reference field diff --git a/src/test/protocol/SeqProxy_test.cpp b/src/test/protocol/SeqProxy_test.cpp index 90345ddc22..44aab41992 100644 --- a/src/test/protocol/SeqProxy_test.cpp +++ b/src/test/protocol/SeqProxy_test.cpp @@ -81,128 +81,128 @@ struct SeqProxy_test : public beast::unit_test::Suite static constexpr SeqProxy kTicBig{kTicket, kUintMax}; // Verify operation of value(), isSeq() and isTicket(). - static_assert(expectValues(kSeqZero, 0, kSeq), ""); - static_assert(expectValues(kSeqSmall, 1, kSeq), ""); - static_assert(expectValues(kSeqMiD0, 2, kSeq), ""); - static_assert(expectValues(kSeqMiD1, 2, kSeq), ""); - static_assert(expectValues(kSeqBig, kUintMax, kSeq), ""); + static_assert(expectValues(kSeqZero, 0, kSeq)); + static_assert(expectValues(kSeqSmall, 1, kSeq)); + static_assert(expectValues(kSeqMiD0, 2, kSeq)); + static_assert(expectValues(kSeqMiD1, 2, kSeq)); + static_assert(expectValues(kSeqBig, kUintMax, kSeq)); - static_assert(expectValues(kTicZero, 0, kTicket), ""); - static_assert(expectValues(kTicSmall, 1, kTicket), ""); - static_assert(expectValues(kTicMid0, 2, kTicket), ""); - static_assert(expectValues(kTicMid1, 2, kTicket), ""); - static_assert(expectValues(kTicBig, kUintMax, kTicket), ""); + static_assert(expectValues(kTicZero, 0, kTicket)); + static_assert(expectValues(kTicSmall, 1, kTicket)); + static_assert(expectValues(kTicMid0, 2, kTicket)); + static_assert(expectValues(kTicMid1, 2, kTicket)); + static_assert(expectValues(kTicBig, kUintMax, kTicket)); // Verify expected behavior of comparison operators. - static_assert(expectEq(kSeqZero, kSeqZero), ""); - static_assert(expectLt(kSeqZero, kSeqSmall), ""); - static_assert(expectLt(kSeqZero, kSeqMiD0), ""); - static_assert(expectLt(kSeqZero, kSeqMiD1), ""); - static_assert(expectLt(kSeqZero, kSeqBig), ""); - static_assert(expectLt(kSeqZero, kTicZero), ""); - static_assert(expectLt(kSeqZero, kTicSmall), ""); - static_assert(expectLt(kSeqZero, kTicMid0), ""); - static_assert(expectLt(kSeqZero, kTicMid1), ""); - static_assert(expectLt(kSeqZero, kTicBig), ""); + static_assert(expectEq(kSeqZero, kSeqZero)); + static_assert(expectLt(kSeqZero, kSeqSmall)); + static_assert(expectLt(kSeqZero, kSeqMiD0)); + static_assert(expectLt(kSeqZero, kSeqMiD1)); + static_assert(expectLt(kSeqZero, kSeqBig)); + static_assert(expectLt(kSeqZero, kTicZero)); + static_assert(expectLt(kSeqZero, kTicSmall)); + static_assert(expectLt(kSeqZero, kTicMid0)); + static_assert(expectLt(kSeqZero, kTicMid1)); + static_assert(expectLt(kSeqZero, kTicBig)); - static_assert(expectGt(kSeqSmall, kSeqZero), ""); - static_assert(expectEq(kSeqSmall, kSeqSmall), ""); - static_assert(expectLt(kSeqSmall, kSeqMiD0), ""); - static_assert(expectLt(kSeqSmall, kSeqMiD1), ""); - static_assert(expectLt(kSeqSmall, kSeqBig), ""); - static_assert(expectLt(kSeqSmall, kTicZero), ""); - static_assert(expectLt(kSeqSmall, kTicSmall), ""); - static_assert(expectLt(kSeqSmall, kTicMid0), ""); - static_assert(expectLt(kSeqSmall, kTicMid1), ""); - static_assert(expectLt(kSeqSmall, kTicBig), ""); + static_assert(expectGt(kSeqSmall, kSeqZero)); + static_assert(expectEq(kSeqSmall, kSeqSmall)); + static_assert(expectLt(kSeqSmall, kSeqMiD0)); + static_assert(expectLt(kSeqSmall, kSeqMiD1)); + static_assert(expectLt(kSeqSmall, kSeqBig)); + static_assert(expectLt(kSeqSmall, kTicZero)); + static_assert(expectLt(kSeqSmall, kTicSmall)); + static_assert(expectLt(kSeqSmall, kTicMid0)); + static_assert(expectLt(kSeqSmall, kTicMid1)); + static_assert(expectLt(kSeqSmall, kTicBig)); - static_assert(expectGt(kSeqMiD0, kSeqZero), ""); - static_assert(expectGt(kSeqMiD0, kSeqSmall), ""); - static_assert(expectEq(kSeqMiD0, kSeqMiD0), ""); - static_assert(expectEq(kSeqMiD0, kSeqMiD1), ""); - static_assert(expectLt(kSeqMiD0, kSeqBig), ""); - static_assert(expectLt(kSeqMiD0, kTicZero), ""); - static_assert(expectLt(kSeqMiD0, kTicSmall), ""); - static_assert(expectLt(kSeqMiD0, kTicMid0), ""); - static_assert(expectLt(kSeqMiD0, kTicMid1), ""); - static_assert(expectLt(kSeqMiD0, kTicBig), ""); + static_assert(expectGt(kSeqMiD0, kSeqZero)); + static_assert(expectGt(kSeqMiD0, kSeqSmall)); + static_assert(expectEq(kSeqMiD0, kSeqMiD0)); + static_assert(expectEq(kSeqMiD0, kSeqMiD1)); + static_assert(expectLt(kSeqMiD0, kSeqBig)); + static_assert(expectLt(kSeqMiD0, kTicZero)); + static_assert(expectLt(kSeqMiD0, kTicSmall)); + static_assert(expectLt(kSeqMiD0, kTicMid0)); + static_assert(expectLt(kSeqMiD0, kTicMid1)); + static_assert(expectLt(kSeqMiD0, kTicBig)); - static_assert(expectGt(kSeqMiD1, kSeqZero), ""); - static_assert(expectGt(kSeqMiD1, kSeqSmall), ""); - static_assert(expectEq(kSeqMiD1, kSeqMiD0), ""); - static_assert(expectEq(kSeqMiD1, kSeqMiD1), ""); - static_assert(expectLt(kSeqMiD1, kSeqBig), ""); - static_assert(expectLt(kSeqMiD1, kTicZero), ""); - static_assert(expectLt(kSeqMiD1, kTicSmall), ""); - static_assert(expectLt(kSeqMiD1, kTicMid0), ""); - static_assert(expectLt(kSeqMiD1, kTicMid1), ""); - static_assert(expectLt(kSeqMiD1, kTicBig), ""); + static_assert(expectGt(kSeqMiD1, kSeqZero)); + static_assert(expectGt(kSeqMiD1, kSeqSmall)); + static_assert(expectEq(kSeqMiD1, kSeqMiD0)); + static_assert(expectEq(kSeqMiD1, kSeqMiD1)); + static_assert(expectLt(kSeqMiD1, kSeqBig)); + static_assert(expectLt(kSeqMiD1, kTicZero)); + static_assert(expectLt(kSeqMiD1, kTicSmall)); + static_assert(expectLt(kSeqMiD1, kTicMid0)); + static_assert(expectLt(kSeqMiD1, kTicMid1)); + static_assert(expectLt(kSeqMiD1, kTicBig)); - static_assert(expectGt(kSeqBig, kSeqZero), ""); - static_assert(expectGt(kSeqBig, kSeqSmall), ""); - static_assert(expectGt(kSeqBig, kSeqMiD0), ""); - static_assert(expectGt(kSeqBig, kSeqMiD1), ""); - static_assert(expectEq(kSeqBig, kSeqBig), ""); - static_assert(expectLt(kSeqBig, kTicZero), ""); - static_assert(expectLt(kSeqBig, kTicSmall), ""); - static_assert(expectLt(kSeqBig, kTicMid0), ""); - static_assert(expectLt(kSeqBig, kTicMid1), ""); - static_assert(expectLt(kSeqBig, kTicBig), ""); + static_assert(expectGt(kSeqBig, kSeqZero)); + static_assert(expectGt(kSeqBig, kSeqSmall)); + static_assert(expectGt(kSeqBig, kSeqMiD0)); + static_assert(expectGt(kSeqBig, kSeqMiD1)); + static_assert(expectEq(kSeqBig, kSeqBig)); + static_assert(expectLt(kSeqBig, kTicZero)); + static_assert(expectLt(kSeqBig, kTicSmall)); + static_assert(expectLt(kSeqBig, kTicMid0)); + static_assert(expectLt(kSeqBig, kTicMid1)); + static_assert(expectLt(kSeqBig, kTicBig)); - static_assert(expectGt(kTicZero, kSeqZero), ""); - static_assert(expectGt(kTicZero, kSeqSmall), ""); - static_assert(expectGt(kTicZero, kSeqMiD0), ""); - static_assert(expectGt(kTicZero, kSeqMiD1), ""); - static_assert(expectGt(kTicZero, kSeqBig), ""); - static_assert(expectEq(kTicZero, kTicZero), ""); - static_assert(expectLt(kTicZero, kTicSmall), ""); - static_assert(expectLt(kTicZero, kTicMid0), ""); - static_assert(expectLt(kTicZero, kTicMid1), ""); - static_assert(expectLt(kTicZero, kTicBig), ""); + static_assert(expectGt(kTicZero, kSeqZero)); + static_assert(expectGt(kTicZero, kSeqSmall)); + static_assert(expectGt(kTicZero, kSeqMiD0)); + static_assert(expectGt(kTicZero, kSeqMiD1)); + static_assert(expectGt(kTicZero, kSeqBig)); + static_assert(expectEq(kTicZero, kTicZero)); + static_assert(expectLt(kTicZero, kTicSmall)); + static_assert(expectLt(kTicZero, kTicMid0)); + static_assert(expectLt(kTicZero, kTicMid1)); + static_assert(expectLt(kTicZero, kTicBig)); - static_assert(expectGt(kTicSmall, kSeqZero), ""); - static_assert(expectGt(kTicSmall, kSeqSmall), ""); - static_assert(expectGt(kTicSmall, kSeqMiD0), ""); - static_assert(expectGt(kTicSmall, kSeqMiD1), ""); - static_assert(expectGt(kTicSmall, kSeqBig), ""); - static_assert(expectGt(kTicSmall, kTicZero), ""); - static_assert(expectEq(kTicSmall, kTicSmall), ""); - static_assert(expectLt(kTicSmall, kTicMid0), ""); - static_assert(expectLt(kTicSmall, kTicMid1), ""); - static_assert(expectLt(kTicSmall, kTicBig), ""); + static_assert(expectGt(kTicSmall, kSeqZero)); + static_assert(expectGt(kTicSmall, kSeqSmall)); + static_assert(expectGt(kTicSmall, kSeqMiD0)); + static_assert(expectGt(kTicSmall, kSeqMiD1)); + static_assert(expectGt(kTicSmall, kSeqBig)); + static_assert(expectGt(kTicSmall, kTicZero)); + static_assert(expectEq(kTicSmall, kTicSmall)); + static_assert(expectLt(kTicSmall, kTicMid0)); + static_assert(expectLt(kTicSmall, kTicMid1)); + static_assert(expectLt(kTicSmall, kTicBig)); - static_assert(expectGt(kTicMid0, kSeqZero), ""); - static_assert(expectGt(kTicMid0, kSeqSmall), ""); - static_assert(expectGt(kTicMid0, kSeqMiD0), ""); - static_assert(expectGt(kTicMid0, kSeqMiD1), ""); - static_assert(expectGt(kTicMid0, kSeqBig), ""); - static_assert(expectGt(kTicMid0, kTicZero), ""); - static_assert(expectGt(kTicMid0, kTicSmall), ""); - static_assert(expectEq(kTicMid0, kTicMid0), ""); - static_assert(expectEq(kTicMid0, kTicMid1), ""); - static_assert(expectLt(kTicMid0, kTicBig), ""); + static_assert(expectGt(kTicMid0, kSeqZero)); + static_assert(expectGt(kTicMid0, kSeqSmall)); + static_assert(expectGt(kTicMid0, kSeqMiD0)); + static_assert(expectGt(kTicMid0, kSeqMiD1)); + static_assert(expectGt(kTicMid0, kSeqBig)); + static_assert(expectGt(kTicMid0, kTicZero)); + static_assert(expectGt(kTicMid0, kTicSmall)); + static_assert(expectEq(kTicMid0, kTicMid0)); + static_assert(expectEq(kTicMid0, kTicMid1)); + static_assert(expectLt(kTicMid0, kTicBig)); - static_assert(expectGt(kTicMid1, kSeqZero), ""); - static_assert(expectGt(kTicMid1, kSeqSmall), ""); - static_assert(expectGt(kTicMid1, kSeqMiD0), ""); - static_assert(expectGt(kTicMid1, kSeqMiD1), ""); - static_assert(expectGt(kTicMid1, kSeqBig), ""); - static_assert(expectGt(kTicMid1, kTicZero), ""); - static_assert(expectGt(kTicMid1, kTicSmall), ""); - static_assert(expectEq(kTicMid1, kTicMid0), ""); - static_assert(expectEq(kTicMid1, kTicMid1), ""); - static_assert(expectLt(kTicMid1, kTicBig), ""); + static_assert(expectGt(kTicMid1, kSeqZero)); + static_assert(expectGt(kTicMid1, kSeqSmall)); + static_assert(expectGt(kTicMid1, kSeqMiD0)); + static_assert(expectGt(kTicMid1, kSeqMiD1)); + static_assert(expectGt(kTicMid1, kSeqBig)); + static_assert(expectGt(kTicMid1, kTicZero)); + static_assert(expectGt(kTicMid1, kTicSmall)); + static_assert(expectEq(kTicMid1, kTicMid0)); + static_assert(expectEq(kTicMid1, kTicMid1)); + static_assert(expectLt(kTicMid1, kTicBig)); - static_assert(expectGt(kTicBig, kSeqZero), ""); - static_assert(expectGt(kTicBig, kSeqSmall), ""); - static_assert(expectGt(kTicBig, kSeqMiD0), ""); - static_assert(expectGt(kTicBig, kSeqMiD1), ""); - static_assert(expectGt(kTicBig, kSeqBig), ""); - static_assert(expectGt(kTicBig, kTicZero), ""); - static_assert(expectGt(kTicBig, kTicSmall), ""); - static_assert(expectGt(kTicBig, kTicMid0), ""); - static_assert(expectGt(kTicBig, kTicMid1), ""); - static_assert(expectEq(kTicBig, kTicBig), ""); + static_assert(expectGt(kTicBig, kSeqZero)); + static_assert(expectGt(kTicBig, kSeqSmall)); + static_assert(expectGt(kTicBig, kSeqMiD0)); + static_assert(expectGt(kTicBig, kSeqMiD1)); + static_assert(expectGt(kTicBig, kSeqBig)); + static_assert(expectGt(kTicBig, kTicZero)); + static_assert(expectGt(kTicBig, kTicSmall)); + static_assert(expectGt(kTicBig, kTicMid0)); + static_assert(expectGt(kTicBig, kTicMid1)); + static_assert(expectEq(kTicBig, kTicBig)); // Verify streaming. BEAST_EXPECT(streamTest(kSeqZero)); diff --git a/src/test/rpc/DepositAuthorized_test.cpp b/src/test/rpc/DepositAuthorized_test.cpp index e6720602c9..6d6b54d70a 100644 --- a/src/test/rpc/DepositAuthorized_test.cpp +++ b/src/test/rpc/DepositAuthorized_test.cpp @@ -8,7 +8,7 @@ #include #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/src/test/shamap/FetchPack_test.cpp b/src/test/shamap/FetchPack_test.cpp index b2fc185b31..bcc5129f01 100644 --- a/src/test/shamap/FetchPack_test.cpp +++ b/src/test/shamap/FetchPack_test.cpp @@ -68,7 +68,7 @@ public: [[nodiscard]] std::optional getNode(SHAMapHash const& nodeHash) const override { - Map::iterator const it = map.find(nodeHash); + auto const it = map.find(nodeHash); if (it == map.end()) { JLOG(journal.fatal()) << "Test filter missing node"; diff --git a/src/test/shamap/SHAMap_test.cpp b/src/test/shamap/SHAMap_test.cpp index ab7e01e3af..5ff5ef5e05 100644 --- a/src/test/shamap/SHAMap_test.cpp +++ b/src/test/shamap/SHAMap_test.cpp @@ -26,57 +26,57 @@ namespace xrpl::tests { #ifndef __INTELLISENSE__ -static_assert(std::is_nothrow_destructible{}, ""); -static_assert(!std::is_default_constructible{}, ""); -static_assert(!std::is_copy_constructible{}, ""); -static_assert(!std::is_copy_assignable{}, ""); -static_assert(!std::is_move_constructible{}, ""); -static_assert(!std::is_move_assignable{}, ""); +static_assert(std::is_nothrow_destructible{}); +static_assert(!std::is_default_constructible{}); +static_assert(!std::is_copy_constructible{}); +static_assert(!std::is_copy_assignable{}); +static_assert(!std::is_move_constructible{}); +static_assert(!std::is_move_assignable{}); -static_assert(std::is_nothrow_destructible{}, ""); -static_assert(std::is_copy_constructible{}, ""); -static_assert(std::is_copy_assignable{}, ""); -static_assert(std::is_move_constructible{}, ""); -static_assert(std::is_move_assignable{}, ""); +static_assert(std::is_nothrow_destructible{}); +static_assert(std::is_copy_constructible{}); +static_assert(std::is_copy_assignable{}); +static_assert(std::is_move_constructible{}); +static_assert(std::is_move_assignable{}); -static_assert(std::is_nothrow_destructible{}, ""); -static_assert(!std::is_default_constructible{}, ""); -static_assert(!std::is_copy_constructible{}, ""); +static_assert(std::is_nothrow_destructible{}); +static_assert(!std::is_default_constructible{}); +static_assert(!std::is_copy_constructible{}); -static_assert(std::is_nothrow_destructible{}, ""); -static_assert(std::is_default_constructible{}, ""); -static_assert(std::is_copy_constructible{}, ""); -static_assert(std::is_copy_assignable{}, ""); -static_assert(std::is_move_constructible{}, ""); -static_assert(std::is_move_assignable{}, ""); +static_assert(std::is_nothrow_destructible{}); +static_assert(std::is_default_constructible{}); +static_assert(std::is_copy_constructible{}); +static_assert(std::is_copy_assignable{}); +static_assert(std::is_move_constructible{}); +static_assert(std::is_move_assignable{}); -static_assert(std::is_nothrow_destructible{}, ""); -static_assert(std::is_default_constructible{}, ""); -static_assert(std::is_copy_constructible{}, ""); -static_assert(std::is_copy_assignable{}, ""); -static_assert(std::is_move_constructible{}, ""); -static_assert(std::is_move_assignable{}, ""); +static_assert(std::is_nothrow_destructible{}); +static_assert(std::is_default_constructible{}); +static_assert(std::is_copy_constructible{}); +static_assert(std::is_copy_assignable{}); +static_assert(std::is_move_constructible{}); +static_assert(std::is_move_assignable{}); -static_assert(std::is_nothrow_destructible{}, ""); -static_assert(!std::is_default_constructible{}, ""); -static_assert(!std::is_copy_constructible{}, ""); -static_assert(!std::is_copy_assignable{}, ""); -static_assert(!std::is_move_constructible{}, ""); -static_assert(!std::is_move_assignable{}, ""); +static_assert(std::is_nothrow_destructible{}); +static_assert(!std::is_default_constructible{}); +static_assert(!std::is_copy_constructible{}); +static_assert(!std::is_copy_assignable{}); +static_assert(!std::is_move_constructible{}); +static_assert(!std::is_move_assignable{}); -static_assert(std::is_nothrow_destructible{}, ""); -static_assert(!std::is_default_constructible{}, ""); -static_assert(!std::is_copy_constructible{}, ""); -static_assert(!std::is_copy_assignable{}, ""); -static_assert(!std::is_move_constructible{}, ""); -static_assert(!std::is_move_assignable{}, ""); +static_assert(std::is_nothrow_destructible{}); +static_assert(!std::is_default_constructible{}); +static_assert(!std::is_copy_constructible{}); +static_assert(!std::is_copy_assignable{}); +static_assert(!std::is_move_constructible{}); +static_assert(!std::is_move_assignable{}); -static_assert(std::is_nothrow_destructible{}, ""); -static_assert(!std::is_default_constructible{}, ""); -static_assert(!std::is_copy_constructible{}, ""); -static_assert(!std::is_copy_assignable{}, ""); -static_assert(!std::is_move_constructible{}, ""); -static_assert(!std::is_move_assignable{}, ""); +static_assert(std::is_nothrow_destructible{}); +static_assert(!std::is_default_constructible{}); +static_assert(!std::is_copy_constructible{}); +static_assert(!std::is_copy_assignable{}); +static_assert(!std::is_move_constructible{}); +static_assert(!std::is_move_assignable{}); #endif inline bool diff --git a/src/xrpld/app/consensus/RCLConsensus.cpp b/src/xrpld/app/consensus/RCLConsensus.cpp index a7c2b26c04..2abc881adc 100644 --- a/src/xrpld/app/consensus/RCLConsensus.cpp +++ b/src/xrpld/app/consensus/RCLConsensus.cpp @@ -690,7 +690,7 @@ RCLConsensus::Adaptor::doAccept( JLOG(j_.info()) << "We closed at " << closeTime.time_since_epoch().count(); using usec64_t = std::chrono::duration; - usec64_t closeTotal = std::chrono::duration_cast(closeTime.time_since_epoch()); + auto closeTotal = std::chrono::duration_cast(closeTime.time_since_epoch()); int closeCount = 1; for (auto const& [t, v] : rawCloseTimes.peers) diff --git a/src/xrpld/app/ledger/detail/BuildLedger.cpp b/src/xrpld/app/ledger/detail/BuildLedger.cpp index 038a7be4b7..d11e0610ba 100644 --- a/src/xrpld/app/ledger/detail/BuildLedger.cpp +++ b/src/xrpld/app/ledger/detail/BuildLedger.cpp @@ -13,10 +13,10 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include -#include +#include // IWYU pragma: keep #include #include diff --git a/src/xrpld/app/ledger/detail/InboundLedger.cpp b/src/xrpld/app/ledger/detail/InboundLedger.cpp index 4affffd1c1..4d34f60374 100644 --- a/src/xrpld/app/ledger/detail/InboundLedger.cpp +++ b/src/xrpld/app/ledger/detail/InboundLedger.cpp @@ -21,11 +21,11 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/src/xrpld/app/ledger/detail/InboundLedgers.cpp b/src/xrpld/app/ledger/detail/InboundLedgers.cpp index 95e3e46f73..07daa7560e 100644 --- a/src/xrpld/app/ledger/detail/InboundLedgers.cpp +++ b/src/xrpld/app/ledger/detail/InboundLedgers.cpp @@ -378,7 +378,7 @@ public: { ScopedLockType const sl(lock_); - MapType::iterator it(ledgers_.begin()); + auto it = ledgers_.begin(); total = ledgers_.size(); stuffToSweep.reserve(total); diff --git a/src/xrpld/app/ledger/detail/LedgerPersistence.cpp b/src/xrpld/app/ledger/detail/LedgerPersistence.cpp index 3561b66951..6baf64e923 100644 --- a/src/xrpld/app/ledger/detail/LedgerPersistence.cpp +++ b/src/xrpld/app/ledger/detail/LedgerPersistence.cpp @@ -8,9 +8,9 @@ #include #include #include -#include +#include // IWYU pragma: keep #include -#include +#include // IWYU pragma: keep #include #include diff --git a/src/xrpld/app/ledger/detail/OpenLedger.cpp b/src/xrpld/app/ledger/detail/OpenLedger.cpp index 60599c80d3..4d8a37cdf1 100644 --- a/src/xrpld/app/ledger/detail/OpenLedger.cpp +++ b/src/xrpld/app/ledger/detail/OpenLedger.cpp @@ -14,7 +14,7 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/src/xrpld/app/main/Application.cpp b/src/xrpld/app/main/Application.cpp index b99c98afa1..d329475874 100644 --- a/src/xrpld/app/main/Application.cpp +++ b/src/xrpld/app/main/Application.cpp @@ -79,11 +79,11 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include #include -#include +#include // IWYU pragma: keep #include #include #include @@ -2178,7 +2178,7 @@ fixConfigPorts(Config& config, Endpoints const& endpoints) auto const optPort = section.get(Keys::kPort); if (optPort) { - std::uint16_t const port = beast::lexicalCast(*optPort); + auto const port = beast::lexicalCast(*optPort); if (port == 0u) section.set(Keys::kPort, std::to_string(ep.port())); } diff --git a/src/xrpld/app/misc/FeeVoteImpl.cpp b/src/xrpld/app/misc/FeeVoteImpl.cpp index 363c17f4fa..76a4d8f186 100644 --- a/src/xrpld/app/misc/FeeVoteImpl.cpp +++ b/src/xrpld/app/misc/FeeVoteImpl.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include // IWYU pragma: keep #include #include // IWYU pragma: keep #include diff --git a/src/xrpld/app/misc/NetworkOPs.cpp b/src/xrpld/app/misc/NetworkOPs.cpp index 82445f3625..d1f794b74d 100644 --- a/src/xrpld/app/misc/NetworkOPs.cpp +++ b/src/xrpld/app/misc/NetworkOPs.cpp @@ -4392,7 +4392,7 @@ NetworkOPsImp::findRpcSub(std::string const& strUrl) { std::scoped_lock const sl(subLock_); - subRpcMapType::iterator const it = rpcSubMap_.find(strUrl); + auto const it = rpcSubMap_.find(strUrl); if (it != rpcSubMap_.end()) return it->second; @@ -4827,7 +4827,7 @@ NetworkOPsImp::StateAccounting::json(json::Value& obj) const counters[static_cast(mode)].dur += current; obj[jss::state_accounting] = json::ValueType::Object; - for (std::size_t i = static_cast(OperatingMode::DISCONNECTED); + for (auto i = static_cast(OperatingMode::DISCONNECTED); i <= static_cast(OperatingMode::FULL); ++i) { diff --git a/src/xrpld/app/misc/detail/Transaction.cpp b/src/xrpld/app/misc/detail/Transaction.cpp index 2c55c474eb..e29181bfe9 100644 --- a/src/xrpld/app/misc/detail/Transaction.cpp +++ b/src/xrpld/app/misc/detail/Transaction.cpp @@ -103,7 +103,7 @@ Transaction::transactionFromSQL( Blob const& rawTxn, Application& app) { - std::uint32_t const inLedger = rangeCheckedCast(ledgerSeq.value_or(0)); + auto const inLedger = rangeCheckedCast(ledgerSeq.value_or(0)); SerialIter it(makeSlice(rawTxn)); auto txn = std::make_shared(it); diff --git a/src/xrpld/app/misc/detail/TxQ.cpp b/src/xrpld/app/misc/detail/TxQ.cpp index 7e57302d23..f6d00974b4 100644 --- a/src/xrpld/app/misc/detail/TxQ.cpp +++ b/src/xrpld/app/misc/detail/TxQ.cpp @@ -228,11 +228,11 @@ static_assert(sumOfFirstSquares(1).second == 1); static_assert(sumOfFirstSquares(2).first); static_assert(sumOfFirstSquares(2).second == 5); -static_assert(sumOfFirstSquares(0x1FFFFF).first, ""); -static_assert(sumOfFirstSquares(0x1FFFFF).second == 0x2AAAA8AAAAB00000ul, ""); +static_assert(sumOfFirstSquares(0x1FFFFF).first); +static_assert(sumOfFirstSquares(0x1FFFFF).second == 0x2AAAA8AAAAB00000ul); -static_assert(!sumOfFirstSquares(0x200000).first, ""); -static_assert(sumOfFirstSquares(0x200000).second == std::numeric_limits::max(), ""); +static_assert(!sumOfFirstSquares(0x200000).first); +static_assert(sumOfFirstSquares(0x200000).second == std::numeric_limits::max()); } // namespace detail @@ -788,7 +788,7 @@ TxQ::apply( std::scoped_lock const lock(mutex_); // accountIter is not const because it may be updated further down. - AccountMap::iterator accountIter = byAccount_.find(account); + auto accountIter = byAccount_.find(account); bool const accountIsInQueue = accountIter != byAccount_.end(); // _If_ the account is in the queue, then ignore any sequence-based @@ -817,7 +817,7 @@ TxQ::apply( // Find the first transaction in the queue that we might apply. TxQAccount::TxMap& acctTxs = accountIter->second.transactions; - TxQAccount::TxMap::iterator const firstIter = acctTxs.lower_bound(acctSeqProx); + auto const firstIter = acctTxs.lower_bound(acctSeqProx); if (firstIter == acctTxs.end()) { @@ -996,7 +996,7 @@ TxQ::apply( // Find the entry in the queue that precedes the new // transaction, if one does. - TxQAccount::TxMap::const_iterator const prevIter = txQAcct.getPrevTx(txSeqProx); + auto const prevIter = txQAcct.getPrevTx(txSeqProx); // Does the new transaction go to the front of the queue? // This can happen if: @@ -1615,7 +1615,7 @@ TxQ::nextQueuableSeqImpl(SLE::const_ref sleAccount, std::scoped_lock // Ignore any sequence-based queued transactions that slipped into the // ledger while we were not watching. This does actually happen in the // wild, but it's uncommon. - TxQAccount::TxMap::const_iterator txIter = acctTxs.lower_bound(acctSeqProx); + auto txIter = acctTxs.lower_bound(acctSeqProx); if (txIter == acctTxs.end() || !txIter->first.isSeq() || txIter->first != acctSeqProx) { @@ -1700,7 +1700,7 @@ TxQ::tryDirectApply( // queue then remove the replaced transaction. std::scoped_lock const lock(mutex_); - AccountMap::iterator const accountIter = byAccount_.find(account); + auto const accountIter = byAccount_.find(account); if (accountIter != byAccount_.end()) { TxQAccount& txQAcct = accountIter->second; diff --git a/src/xrpld/app/rdb/backend/detail/Node.cpp b/src/xrpld/app/rdb/backend/detail/Node.cpp index 6e92a0de60..f8dc4a6981 100644 --- a/src/xrpld/app/rdb/backend/detail/Node.cpp +++ b/src/xrpld/app/rdb/backend/detail/Node.cpp @@ -1273,7 +1273,7 @@ getTransaction( if (!ledgerSeq) return std::pair{std::move(txn), nullptr}; - std::uint32_t const inLedger = rangeCheckedCast(ledgerSeq.value()); + auto const inLedger = rangeCheckedCast(ledgerSeq.value()); auto txMeta = std::make_shared(id, inLedger, rawMeta); diff --git a/src/xrpld/core/detail/Config.cpp b/src/xrpld/core/detail/Config.cpp index 523cde743a..07c780118a 100644 --- a/src/xrpld/core/detail/Config.cpp +++ b/src/xrpld/core/detail/Config.cpp @@ -926,7 +926,7 @@ Config::loadFromString(std::string const& fileContents) ", must be: [0-9]+ [minutes|hours|days|weeks]"); } - std::uint32_t const duration = beast::lexicalCastThrow(match[1].str()); + auto const duration = beast::lexicalCastThrow(match[1].str()); if (boost::iequals(match[2], "minutes")) { diff --git a/src/xrpld/overlay/detail/PeerImp.cpp b/src/xrpld/overlay/detail/PeerImp.cpp index 5ac61cfd91..83e4d9c851 100644 --- a/src/xrpld/overlay/detail/PeerImp.cpp +++ b/src/xrpld/overlay/detail/PeerImp.cpp @@ -2134,6 +2134,7 @@ PeerImp::onValidatorListMessage( publisherListSequences_[pubKey] = applyResult.sequence; } break; + // NOLINTNEXTLINE(bugprone-branch-clone): identical to the next branch only in Release case ListDisposition::SameSequence: case ListDisposition::KnownSequence: #ifndef NDEBUG diff --git a/src/xrpld/rpc/CTID.h b/src/xrpld/rpc/CTID.h index c2133a19b5..7566e0e143 100644 --- a/src/xrpld/rpc/CTID.h +++ b/src/xrpld/rpc/CTID.h @@ -104,9 +104,9 @@ decodeCTID(T const ctid) noexcept if ((ctidValue & kCtidPrefixMask) != kCtidPrefix) return std::nullopt; - uint32_t const ledgerSeq = static_cast((ctidValue >> 32) & 0x0FFF'FFFF); - uint16_t const txnIndex = static_cast((ctidValue >> 16) & 0xFFFF); - uint16_t const networkID = static_cast(ctidValue & 0xFFFF); + auto const ledgerSeq = static_cast((ctidValue >> 32) & 0x0FFF'FFFF); + auto const txnIndex = static_cast((ctidValue >> 16) & 0xFFFF); + auto const networkID = static_cast(ctidValue & 0xFFFF); return std::make_tuple(ledgerSeq, txnIndex, networkID); } diff --git a/src/xrpld/rpc/handlers/orderbook/BookOffers.cpp b/src/xrpld/rpc/handlers/orderbook/BookOffers.cpp index 5d031c2c74..63dee76f1b 100644 --- a/src/xrpld/rpc/handlers/orderbook/BookOffers.cpp +++ b/src/xrpld/rpc/handlers/orderbook/BookOffers.cpp @@ -107,7 +107,7 @@ parseTakerIssuerJSON( if (taker.isMember(jss::currency)) { - Issue& issue = asset.get(); + auto& issue = asset.get(); if (taker.isMember(jss::issuer)) {