|
14 | 14 | #include "clang/Basic/FileEntry.h" |
15 | 15 | #include "clang/Basic/FileManager.h" |
16 | 16 | #include "clang/Basic/LLVM.h" |
| 17 | +#include "clang/Basic/LangOptions.h" |
17 | 18 | #include "clang/Basic/SourceLocation.h" |
18 | 19 | #include "clang/Basic/SourceManager.h" |
19 | 20 | #include "clang/Basic/Specifiers.h" |
@@ -179,8 +180,10 @@ class PragmaIncludes::RecordPragma : public PPCallbacks, public CommentHandler { |
179 | 180 | RecordPragma(const CompilerInstance &CI, PragmaIncludes *Out) |
180 | 181 | : RecordPragma(CI.getPreprocessor(), Out) {} |
181 | 182 | RecordPragma(const Preprocessor &P, PragmaIncludes *Out) |
182 | | - : SM(P.getSourceManager()), HeaderInfo(P.getHeaderSearchInfo()), Out(Out), |
183 | | - Arena(std::make_shared<llvm::BumpPtrAllocator>()), |
| 183 | + : SM(P.getSourceManager()), HeaderInfo(P.getHeaderSearchInfo()), |
| 184 | + L(P.getLangOpts().CPlusPlus ? tooling::stdlib::Lang::CXX |
| 185 | + : tooling::stdlib::Lang::C), |
| 186 | + Out(Out), Arena(std::make_shared<llvm::BumpPtrAllocator>()), |
184 | 187 | UniqueStrings(*Arena), |
185 | 188 | MainFileStem(llvm::sys::path::stem( |
186 | 189 | SM.getNonBuiltinFilenameForID(SM.getMainFileID()).value_or(""))) {} |
@@ -224,7 +227,7 @@ class PragmaIncludes::RecordPragma : public PPCallbacks, public CommentHandler { |
224 | 227 | std::optional<Header> IncludedHeader; |
225 | 228 | if (IsAngled) |
226 | 229 | if (auto StandardHeader = |
227 | | - tooling::stdlib::Header::named("<" + FileName.str() + ">")) { |
| 230 | + tooling::stdlib::Header::named("<" + FileName.str() + ">", L)) { |
228 | 231 | IncludedHeader = *StandardHeader; |
229 | 232 | } |
230 | 233 | if (!IncludedHeader && File) |
@@ -363,6 +366,7 @@ class PragmaIncludes::RecordPragma : public PPCallbacks, public CommentHandler { |
363 | 366 | bool InMainFile = false; |
364 | 367 | const SourceManager &SM; |
365 | 368 | const HeaderSearch &HeaderInfo; |
| 369 | + const tooling::stdlib::Lang L; |
366 | 370 | PragmaIncludes *Out; |
367 | 371 | std::shared_ptr<llvm::BumpPtrAllocator> Arena; |
368 | 372 | /// Intern table for strings. Contents are on the arena. |
|
0 commit comments