[PATCH] D58029: [clangd] Make system header mappings available for PreambleParsedCallback
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 11 02:31:04 PST 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL353687: [clangd] Make system header mappings available for PreambleParsedCallback (authored by kadircet, committed by ).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D58029/new/
https://reviews.llvm.org/D58029
Files:
clang-tools-extra/trunk/clangd/ClangdUnit.cpp
clang-tools-extra/trunk/unittests/clangd/FileIndexTests.cpp
Index: clang-tools-extra/trunk/clangd/ClangdUnit.cpp
===================================================================
--- clang-tools-extra/trunk/clangd/ClangdUnit.cpp
+++ clang-tools-extra/trunk/clangd/ClangdUnit.cpp
@@ -96,14 +96,13 @@
class CppFilePreambleCallbacks : public PreambleCallbacks {
public:
CppFilePreambleCallbacks(PathRef File, PreambleParsedCallback ParsedCallback)
- : File(File), ParsedCallback(ParsedCallback) {}
+ : File(File), ParsedCallback(ParsedCallback) {
+ addSystemHeadersMapping(&CanonIncludes);
+ }
IncludeStructure takeIncludes() { return std::move(Includes); }
- CanonicalIncludes takeCanonicalIncludes() {
- addSystemHeadersMapping(&CanonIncludes);
- return std::move(CanonIncludes);
- }
+ CanonicalIncludes takeCanonicalIncludes() { return std::move(CanonIncludes); }
void AfterExecute(CompilerInstance &CI) override {
if (!ParsedCallback)
Index: clang-tools-extra/trunk/unittests/clangd/FileIndexTests.cpp
===================================================================
--- clang-tools-extra/trunk/unittests/clangd/FileIndexTests.cpp
+++ clang-tools-extra/trunk/unittests/clangd/FileIndexTests.cpp
@@ -212,6 +212,39 @@
"<the/good/header.h>");
}
+TEST(FileIndexTest, HasSystemHeaderMappingsInPreamble) {
+ FileIndex Index;
+ const std::string Header = R"cpp(
+ class Foo {};
+ )cpp";
+ auto MainFile = testPath("foo.cpp");
+ auto HeaderFile = testPath("bits/alloc_traits.h");
+ std::vector<const char *> Cmd = {"clang", "-xc++", MainFile.c_str(),
+ "-include", HeaderFile.c_str()};
+ // Preparse ParseInputs.
+ ParseInputs PI;
+ PI.CompileCommand.Directory = testRoot();
+ PI.CompileCommand.Filename = MainFile;
+ PI.CompileCommand.CommandLine = {Cmd.begin(), Cmd.end()};
+ PI.Contents = "";
+ PI.FS = buildTestFS({{MainFile, ""}, {HeaderFile, Header}});
+
+ // Prepare preamble.
+ auto CI = buildCompilerInvocation(PI);
+ auto PreambleData = buildPreamble(
+ MainFile, *buildCompilerInvocation(PI), /*OldPreamble=*/nullptr,
+ tooling::CompileCommand(), PI, std::make_shared<PCHContainerOperations>(),
+ /*StoreInMemory=*/true,
+ [&](ASTContext &Ctx, std::shared_ptr<Preprocessor> PP,
+ const CanonicalIncludes &Includes) {
+ Index.updatePreamble(MainFile, Ctx, PP, Includes);
+ });
+ auto Symbols = runFuzzyFind(Index, "");
+ EXPECT_THAT(Symbols, ElementsAre(_));
+ EXPECT_THAT(Symbols.begin()->IncludeHeaders.front().IncludeHeader,
+ "<memory>");
+}
+
TEST(FileIndexTest, TemplateParamsInLabel) {
auto Source = R"cpp(
template <class Ty>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D58029.186203.patch
Type: text/x-patch
Size: 2660 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190211/14b3f89b/attachment.bin>
More information about the cfe-commits
mailing list