diff --git a/ci/test/03_test_script.sh b/ci/test/03_test_script.sh index 9d6351af5a7..4e4d975778d 100755 --- a/ci/test/03_test_script.sh +++ b/ci/test/03_test_script.sh @@ -209,7 +209,7 @@ fi if [[ "${RUN_IWYU}" == true ]]; then # TODO: Consider enforcing IWYU across the entire codebase. - FILES_WITH_ENFORCED_IWYU="/src/(((crypto|index|kernel|primitives|univalue/(lib|test)|zmq)/.*|common/license_info|node/blockstorage|node/utxo_snapshot|clientversion|core_io|signet)\\.cpp)" + FILES_WITH_ENFORCED_IWYU="/src/(((crypto|index|kernel|primitives|univalue/(lib|test)|util|zmq)/.*|common/license_info|node/blockstorage|node/utxo_snapshot|clientversion|core_io|signet)\\.cpp)" jq --arg patterns "$FILES_WITH_ENFORCED_IWYU" 'map(select(.file | test($patterns)))' "${BASE_BUILD_DIR}/compile_commands.json" > "${BASE_BUILD_DIR}/compile_commands_iwyu_errors.json" jq --arg patterns "$FILES_WITH_ENFORCED_IWYU" 'map(select(.file | test($patterns) | not))' "${BASE_BUILD_DIR}/compile_commands.json" > "${BASE_BUILD_DIR}/compile_commands_iwyu_warnings.json" diff --git a/src/bench/strencodings.cpp b/src/bench/strencodings.cpp index 7d4e188730a..c00de181b54 100644 --- a/src/bench/strencodings.cpp +++ b/src/bench/strencodings.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include diff --git a/src/logging.h b/src/logging.h index 005c67fd83c..069a73ea881 100644 --- a/src/logging.h +++ b/src/logging.h @@ -8,6 +8,7 @@ #include #include // IWYU pragma: export +#include #include #include // IWYU pragma: export #include diff --git a/src/uint256.h b/src/uint256.h index d42042750fa..3fe44ab7670 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -7,6 +7,7 @@ #define BITCOIN_UINT256_H #include +#include #include #include #include diff --git a/src/util/asmap.cpp b/src/util/asmap.cpp index f8b5a527a93..04e47c24c05 100644 --- a/src/util/asmap.cpp +++ b/src/util/asmap.cpp @@ -4,20 +4,18 @@ #include -#include #include -#include #include #include +#include #include #include -#include #include -#include #include #include #include +#include #include #include diff --git a/src/util/bip32.cpp b/src/util/bip32.cpp index db40bfb5b9e..2488eacf515 100644 --- a/src/util/bip32.cpp +++ b/src/util/bip32.cpp @@ -2,12 +2,14 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include #include + +#include #include #include #include +#include #include bool ParseHDKeypath(const std::string& keypath_str, std::vector& keypath) diff --git a/src/util/bytevectorhash.cpp b/src/util/bytevectorhash.cpp index 943517adbec..40930301118 100644 --- a/src/util/bytevectorhash.cpp +++ b/src/util/bytevectorhash.cpp @@ -2,10 +2,12 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include -#include #include +#include +#include + +#include #include ByteVectorHash::ByteVectorHash() : diff --git a/src/util/chaintype.cpp b/src/util/chaintype.cpp index 5059ff7e9f4..6029002af7f 100644 --- a/src/util/chaintype.cpp +++ b/src/util/chaintype.cpp @@ -4,7 +4,8 @@ #include -#include +#include + #include #include diff --git a/src/util/chaintype.h b/src/util/chaintype.h index 3b246ea49b5..caae77c1965 100644 --- a/src/util/chaintype.h +++ b/src/util/chaintype.h @@ -7,6 +7,7 @@ #include #include +#include enum class ChainType { MAIN, diff --git a/src/util/check.h b/src/util/check.h index 34801ca0e8b..4f5b0010161 100644 --- a/src/util/check.h +++ b/src/util/check.h @@ -8,11 +8,14 @@ #include #include +// We use `util/check.h` to provide the `assert()` macro +// to ensure that `NDEBUG` is not defined. #include // IWYU pragma: export #include #include #include #include +#include #include constexpr bool G_FUZZING_BUILD{ diff --git a/src/util/exec.cpp b/src/util/exec.cpp index 6b140613426..87d11237394 100644 --- a/src/util/exec.cpp +++ b/src/util/exec.cpp @@ -5,12 +5,17 @@ #include #include +#ifdef WIN32 #include +#endif +#include #include -#include +#include #ifdef WIN32 +#include +#include #include #include #else diff --git a/src/util/expected.h b/src/util/expected.h index 66fb98e0558..c88c6de4cfa 100644 --- a/src/util/expected.h +++ b/src/util/expected.h @@ -8,7 +8,6 @@ #include #include -#include #include #include #include diff --git a/src/util/feefrac.cpp b/src/util/feefrac.cpp index 68ba2b6665a..088149befcc 100644 --- a/src/util/feefrac.cpp +++ b/src/util/feefrac.cpp @@ -3,9 +3,11 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include -#include + +#include + #include -#include +#include std::partial_ordering CompareChunks(std::span chunks0, std::span chunks1) { diff --git a/src/util/feefrac.h b/src/util/feefrac.h index 25d87d3431b..30ec6b02f18 100644 --- a/src/util/feefrac.h +++ b/src/util/feefrac.h @@ -5,13 +5,13 @@ #ifndef BITCOIN_UTIL_FEEFRAC_H #define BITCOIN_UTIL_FEEFRAC_H -#include #include #include #include #include -#include +#include +#include /** Data structure storing a fee and size, ordered by increasing fee/size. * diff --git a/src/util/fs.cpp b/src/util/fs.cpp index 692f6718425..88966ab0fa2 100644 --- a/src/util/fs.cpp +++ b/src/util/fs.cpp @@ -3,23 +3,21 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include + +#include #include +#include +#include + #ifndef WIN32 -#include #include -#include -#include #include #else #include #include #endif -#include -#include -#include - namespace fsbridge { FILE *fopen(const fs::path& p, const char *mode) diff --git a/src/util/fs.h b/src/util/fs.h index dce371cc5ef..73d6947904a 100644 --- a/src/util/fs.h +++ b/src/util/fs.h @@ -5,17 +5,18 @@ #ifndef BITCOIN_UTIL_FS_H #define BITCOIN_UTIL_FS_H -#include +// IWYU incorrectly suggests removing this header. +// See https://github.com/include-what-you-use/include-what-you-use/issues/1931. +#include // IWYU pragma: keep #include +// The `util/fs.h` header is designed to be a drop-in replacement for `filesystem`. #include // IWYU pragma: export #include #include #include -#include #include #include -#include #include #include diff --git a/src/util/fs_helpers.cpp b/src/util/fs_helpers.cpp index e7780d743c1..8e08e66da8a 100644 --- a/src/util/fs_helpers.cpp +++ b/src/util/fs_helpers.cpp @@ -24,6 +24,7 @@ #ifndef WIN32 #include #include +#include #include #else #include diff --git a/src/util/fs_helpers.h b/src/util/fs_helpers.h index d39ae115c7c..face17fd8b5 100644 --- a/src/util/fs_helpers.h +++ b/src/util/fs_helpers.h @@ -13,6 +13,7 @@ #include #include #include +#include #ifdef __APPLE__ enum class FSType { diff --git a/src/util/hasher.cpp b/src/util/hasher.cpp index 3d5ffcf89b4..b12f7451b32 100644 --- a/src/util/hasher.cpp +++ b/src/util/hasher.cpp @@ -2,10 +2,10 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. +#include + #include #include -#include -#include SaltedUint256Hasher::SaltedUint256Hasher() : m_hasher{ FastRandomContext().rand64(), diff --git a/src/util/hasher.h b/src/util/hasher.h index 02c77033918..7e74c676769 100644 --- a/src/util/hasher.h +++ b/src/util/hasher.h @@ -8,12 +8,11 @@ #include #include #include -#include #include -#include #include #include +#include class SaltedUint256Hasher { diff --git a/src/util/obfuscation.h b/src/util/obfuscation.h index e9a2e6093b6..a5df75ece07 100644 --- a/src/util/obfuscation.h +++ b/src/util/obfuscation.h @@ -5,7 +5,7 @@ #ifndef BITCOIN_UTIL_OBFUSCATION_H #define BITCOIN_UTIL_OBFUSCATION_H -#include +#include #include #include #include @@ -13,6 +13,7 @@ #include #include #include +#include #include #include diff --git a/src/util/overflow.h b/src/util/overflow.h index 48df3549c9e..274ba0454e3 100644 --- a/src/util/overflow.h +++ b/src/util/overflow.h @@ -5,7 +5,8 @@ #ifndef BITCOIN_UTIL_OVERFLOW_H #define BITCOIN_UTIL_OVERFLOW_H -#include +#include + #include #include #include diff --git a/src/util/rbf.cpp b/src/util/rbf.cpp index bc28c6bba22..82ef020d37b 100644 --- a/src/util/rbf.cpp +++ b/src/util/rbf.cpp @@ -6,6 +6,8 @@ #include +#include + bool SignalsOptInRBF(const CTransaction &tx) { for (const CTxIn &txin : tx.vin) { diff --git a/src/util/readwritefile.cpp b/src/util/readwritefile.cpp index 82b596f9056..6a9eeb28e58 100644 --- a/src/util/readwritefile.cpp +++ b/src/util/readwritefile.cpp @@ -9,7 +9,6 @@ #include #include -#include #include #include diff --git a/src/util/readwritefile.h b/src/util/readwritefile.h index 2a9ccf5f421..54a5a305edc 100644 --- a/src/util/readwritefile.h +++ b/src/util/readwritefile.h @@ -7,6 +7,7 @@ #include +#include #include #include #include diff --git a/src/util/signalinterrupt.h b/src/util/signalinterrupt.h index 027dd1531c4..5a23cd1ea25 100644 --- a/src/util/signalinterrupt.h +++ b/src/util/signalinterrupt.h @@ -13,7 +13,6 @@ #endif #include -#include namespace util { /** diff --git a/src/util/sock.cpp b/src/util/sock.cpp index a06ab7a7913..8e0c0f4741b 100644 --- a/src/util/sock.cpp +++ b/src/util/sock.cpp @@ -4,18 +4,23 @@ #include -#include #include #include #include +#include #include #include #include #include +#include +#include +#include #include #include #include +#include +#include #ifdef USE_POLL #include diff --git a/src/util/sock.h b/src/util/sock.h index 8c51b8ea6ea..e20b31e1816 100644 --- a/src/util/sock.h +++ b/src/util/sock.h @@ -6,15 +6,17 @@ #define BITCOIN_UTIL_SOCK_H #include -#include #include -#include +#include +#include #include #include #include #include +class CThreadInterrupt; + /** * Maximum time to wait for I/O readiness. * It will take up until this time to break off in case of an interruption. diff --git a/src/util/strencodings.cpp b/src/util/strencodings.cpp index ff593885083..e64b677fa0a 100644 --- a/src/util/strencodings.cpp +++ b/src/util/strencodings.cpp @@ -7,14 +7,13 @@ #include #include +#include #include -#include -#include -#include +#include #include #include -#include +#include #include #include diff --git a/src/util/strencodings.h b/src/util/strencodings.h index faff83bb8cb..e527972263f 100644 --- a/src/util/strencodings.h +++ b/src/util/strencodings.h @@ -9,11 +9,9 @@ #ifndef BITCOIN_UTIL_STRENCODINGS_H #define BITCOIN_UTIL_STRENCODINGS_H -#include #include #include -#include #include #include #include @@ -21,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/src/util/string.cpp b/src/util/string.cpp index c3b4b474d34..6e86095a15f 100644 --- a/src/util/string.cpp +++ b/src/util/string.cpp @@ -4,7 +4,10 @@ #include +#include +#include #include +#include #include namespace util { diff --git a/src/util/string.h b/src/util/string.h index 89e13099a76..20c78583040 100644 --- a/src/util/string.h +++ b/src/util/string.h @@ -5,13 +5,14 @@ #ifndef BITCOIN_UTIL_STRING_H #define BITCOIN_UTIL_STRING_H -#include - +#include #include +#include #include -#include +#include #include #include +#include #include #include #include diff --git a/src/util/subprocess.h b/src/util/subprocess.h index 8b9171308dd..3d01f4b7f9c 100644 --- a/src/util/subprocess.h +++ b/src/util/subprocess.h @@ -36,10 +36,10 @@ Documentation for C++ subprocessing library. #ifndef BITCOIN_UTIL_SUBPROCESS_H #define BITCOIN_UTIL_SUBPROCESS_H +#include #include #include -#include #include #include #include diff --git a/src/util/syserror.cpp b/src/util/syserror.cpp index e06ed0cdbbf..e7637afe49c 100644 --- a/src/util/syserror.cpp +++ b/src/util/syserror.cpp @@ -4,9 +4,10 @@ #include // IWYU pragma: keep -#include #include +#include + #include #include diff --git a/src/util/thread.cpp b/src/util/thread.cpp index 0fde73c4e29..5b20e807b4c 100644 --- a/src/util/thread.cpp +++ b/src/util/thread.cpp @@ -11,7 +11,6 @@ #include #include #include -#include void util::TraceThread(std::string_view thread_name, std::function thread_func) { diff --git a/src/util/thread.h b/src/util/thread.h index cb1dd86a741..d398b188a7b 100644 --- a/src/util/thread.h +++ b/src/util/thread.h @@ -6,7 +6,7 @@ #define BITCOIN_UTIL_THREAD_H #include -#include +#include namespace util { /** diff --git a/src/util/threadinterrupt.h b/src/util/threadinterrupt.h index 9cac330e3d2..ba45f11795e 100644 --- a/src/util/threadinterrupt.h +++ b/src/util/threadinterrupt.h @@ -6,9 +6,9 @@ #define BITCOIN_UTIL_THREADINTERRUPT_H #include +#include #include -#include #include /** diff --git a/src/util/threadnames.cpp b/src/util/threadnames.cpp index 310f60f639c..0615b331994 100644 --- a/src/util/threadnames.cpp +++ b/src/util/threadnames.cpp @@ -2,18 +2,17 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. +#include + +#include #include #include -#include -#include #if (defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)) #include #include #endif -#include - #if __has_include() #include #endif diff --git a/src/util/time.cpp b/src/util/time.cpp index 9e0715e5250..6a199ebc36a 100644 --- a/src/util/time.cpp +++ b/src/util/time.cpp @@ -5,7 +5,6 @@ #include -#include #include #include #include @@ -13,11 +12,18 @@ #include #include #include +#include #include #include #include #include +#ifdef WIN32 +#include +#else +#include +#endif + static constexpr std::array weekdays{"Thu", "Fri", "Sat", "Sun", "Mon", "Tue", "Wed"}; // 1970-01-01 was a Thursday. static constexpr std::array months{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; diff --git a/src/util/time.h b/src/util/time.h index 30d363bb612..4630798954b 100644 --- a/src/util/time.h +++ b/src/util/time.h @@ -9,10 +9,17 @@ // The `util/time.h` header is designed to be a drop-in replacement for `chrono`. #include // IWYU pragma: export #include +#include #include #include #include +#ifdef WIN32 +#include +#else +#include +#endif + using namespace std::chrono_literals; /// Version of the system clock that is mockable in the context of tests (via diff --git a/src/util/tokenpipe.cpp b/src/util/tokenpipe.cpp index c982fa6fc47..6f701e45746 100644 --- a/src/util/tokenpipe.cpp +++ b/src/util/tokenpipe.cpp @@ -1,15 +1,18 @@ // Copyright (c) 2021-present The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include #include // IWYU pragma: keep +#include + #ifndef WIN32 #include -#include #include + +#include +#include #include TokenPipeEnd TokenPipe::TakeReadEnd() diff --git a/src/util/translation.h b/src/util/translation.h index cc29eef660c..26fb4b8cfbf 100644 --- a/src/util/translation.h +++ b/src/util/translation.h @@ -6,9 +6,9 @@ #define BITCOIN_UTIL_TRANSLATION_H #include +#include #include -#include #include #include