02_iwyu_hash.patch raw

   1  Map std::hash to its providing standard headers.
   2  Backport of https://github.com/include-what-you-use/include-what-you-use/pull/2013
   3  (commit 52f85e1f4d990f55fc6556d543eb051d79364a16) to the clang_22 release
   4  branch. Drop once the upstream fix lands in the IWYU branch tracked by
   5  ci/test/00_setup_env_native_iwyu.sh.
   6  
   7  --- a/std_symbol_map.inc
   8  +++ b/std_symbol_map.inc
   9  @@ -1054,12 +1054,27 @@
  10   { "std::has_unique_object_representations_v", kPrivate, "<type_traits>", kPublic },
  11   { "std::has_virtual_destructor", kPrivate, "<type_traits>", kPublic },
  12   { "std::has_virtual_destructor_v", kPrivate, "<type_traits>", kPublic },
  13  +{ "std::hash", kPrivate, "<functional>", kPublic },
  14  +{ "std::hash", kPrivate, "<bitset>", kPublic },
  15  +{ "std::hash", kPrivate, "<coroutine>", kPublic },
  16  +{ "std::hash", kPrivate, "<filesystem>", kPublic },
  17  +{ "std::hash", kPrivate, "<memory>", kPublic },
  18  +{ "std::hash", kPrivate, "<optional>", kPublic },
  19  +{ "std::hash", kPrivate, "<stacktrace>", kPublic },
  20  +{ "std::hash", kPrivate, "<string>", kPublic },
  21  +{ "std::hash", kPrivate, "<string_view>", kPublic },
  22  +{ "std::hash", kPrivate, "<system_error>", kPublic },
  23  +{ "std::hash", kPrivate, "<thread>", kPublic },
  24  +{ "std::hash", kPrivate, "<typeindex>", kPublic },
  25  +{ "std::hash", kPrivate, "<variant>", kPublic },
  26  +{ "std::hash", kPrivate, "<vector>", kPublic },
  27   { "std::hash<std::basic_stacktrace<:0>>", kPrivate, "<stacktrace>", kPublic },
  28   { "std::hash<std::basic_string<char, std::char_traits<char>, :0>>", kPrivate, "<string>", kPublic },
  29   { "std::hash<std::basic_string<char16_t, std::char_traits<char16_t>, :0>>", kPrivate, "<string>", kPublic },
  30   { "std::hash<std::basic_string<char32_t, std::char_traits<char32_t>, :0>>", kPrivate, "<string>", kPublic },
  31   { "std::hash<std::basic_string<char8_t, std::char_traits<char8_t>, :0>>", kPrivate, "<string>", kPublic },
  32   { "std::hash<std::basic_string<wchar_t, std::char_traits<wchar_t>, :0>>", kPrivate, "<string>", kPublic },
  33  +{ "std::hash<std::bitset<:0>>", kPrivate, "<bitset>", kPublic },
  34   { "std::hash<std::coroutine_handle<:0>>", kPrivate, "<coroutine>", kPublic },
  35   { "std::hash<std::error_code>", kPrivate, "<system_error>", kPublic },
  36   { "std::hash<std::error_condition>", kPrivate, "<system_error>", kPublic },
  37  @@ -1069,6 +1084,7 @@
  38   { "std::hash<std::shared_ptr<:0>>", kPrivate, "<memory>", kPublic },
  39   { "std::hash<std::stacktrace_entry>", kPrivate, "<stacktrace>", kPublic },
  40   { "std::hash<std::string_view>", kPrivate, "<string_view>", kPublic },
  41  +{ "std::hash<std::thread::id>", kPrivate, "<thread>", kPublic },
  42   { "std::hash<std::type_index>", kPrivate, "<typeindex>", kPublic },
  43   { "std::hash<std::u16string_view>", kPrivate, "<string_view>", kPublic },
  44   { "std::hash<std::u32string_view>", kPrivate, "<string_view>", kPublic },
  45