mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-03 12:49:50 -05:00
Merge topic 'iwyu-std-hash'
aefb8559dc IWYU: Fix workaround mapping for std::hash
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2267
This commit is contained in:
+2
-1
@@ -285,7 +285,8 @@ if(CMake_RUN_IWYU)
|
||||
message(FATAL_ERROR "CMake_RUN_IWYU is ON but include-what-you-use is not found!")
|
||||
endif()
|
||||
set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE
|
||||
"${IWYU_COMMAND};-Xiwyu;--mapping_file=${CMake_SOURCE_DIR}/Utilities/IWYU/mapping.imp;-w;-DCMAKE_IWYU")
|
||||
"${IWYU_COMMAND};-Xiwyu;--mapping_file=${CMake_SOURCE_DIR}/Utilities/IWYU/mapping.imp;-w")
|
||||
list(APPEND CMAKE_CXX_INCLUDE_WHAT_YOU_USE ${CMake_IWYU_OPTIONS})
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "cm_kwiml.h"
|
||||
#include <cstddef>
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <string>
|
||||
@@ -15,14 +16,12 @@
|
||||
// IWYU insists we should forward-declare instead of including <functional>,
|
||||
// but we cannot forward-declare reliably because some C++ standard libraries
|
||||
// put the template in an inline namespace.
|
||||
#ifdef CMAKE_IWYU
|
||||
#ifdef CMAKE_IWYU_FORWARD_STD_HASH
|
||||
/* clang-format off */
|
||||
namespace std {
|
||||
template <class T> struct hash;
|
||||
}
|
||||
/* clang-format on */
|
||||
#else
|
||||
# include <functional>
|
||||
#endif
|
||||
|
||||
#include "cmFindCommon.h"
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
#include <set>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
// Get rid of some windows macros:
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
#{ symbol: [ "std::pair", private, "<set>", public ] },
|
||||
|
||||
# HACK: iwyu wrongly thinks that <system_error> is needed for std::hash
|
||||
{ symbol: [ "std::hash", private, "<utility>", public ] },
|
||||
{ symbol: [ "std::hash", private, "<functional>", public ] },
|
||||
|
||||
# __decay_and_strip is used internally in the C++11 standard library.
|
||||
# IWYU does not classify it as internal and suggests to add <type_traits>.
|
||||
|
||||
Reference in New Issue
Block a user