summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/index/CanonicalIncludes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clangd/index/CanonicalIncludes.cpp')
-rw-r--r--clang-tools-extra/clangd/index/CanonicalIncludes.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/clang-tools-extra/clangd/index/CanonicalIncludes.cpp b/clang-tools-extra/clangd/index/CanonicalIncludes.cpp
index 017547ce057..55df267c4fa 100644
--- a/clang-tools-extra/clangd/index/CanonicalIncludes.cpp
+++ b/clang-tools-extra/clangd/index/CanonicalIncludes.cpp
@@ -86,16 +86,25 @@ collectIWYUHeaderMaps(CanonicalIncludes *Includes) {
return llvm::make_unique<PragmaCommentHandler>(Includes);
}
-void addSystemHeadersMapping(CanonicalIncludes *Includes) {
+void addSystemHeadersMapping(CanonicalIncludes *Includes,
+ const LangOptions &Language) {
static const std::vector<std::pair<const char *, const char *>> SymbolMap = {
#define SYMBOL(Name, NameSpace, Header) { #NameSpace#Name, #Header },
#include "StdSymbolMap.inc"
#undef SYMBOL
};
-
- for (const auto &Pair : SymbolMap)
- Includes->addSymbolMapping(Pair.first, Pair.second);
-
+ static const std::vector<std::pair<const char *, const char *>> CSymbolMap = {
+#define SYMBOL(Name, NameSpace, Header) { #Name, #Header },
+ #include "CSymbolMap.inc"
+#undef SYMBOL
+ };
+ if (Language.CPlusPlus) {
+ for (const auto &Pair : SymbolMap)
+ Includes->addSymbolMapping(Pair.first, Pair.second);
+ } else if (Language.C11) {
+ for (const auto &Pair : CSymbolMap)
+ Includes->addSymbolMapping(Pair.first, Pair.second);
+ }
// FIXME: remove the std header mapping once we support ambiguous symbols, now
// it serves as a fallback to disambiguate:
// - symbols with mulitiple headers (e.g. std::move)
OpenPOWER on IntegriCloud