summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/unittests/XRefsTests.cpp
diff options
context:
space:
mode:
authorMichael Forster <forster@google.com>2019-12-12 14:30:02 +0100
committerSam McCall <sam.mccall@gmail.com>2019-12-12 14:55:20 +0100
commitd6417f5584aa7673fa0212029a96cc9cacb1aad5 (patch)
tree3f42ba6020a54e4387f64b5d33c4077c1ca423c4 /clang-tools-extra/clangd/unittests/XRefsTests.cpp
parent9c8cfa09d762a307bae55b75b621cbc53f4a3b3b (diff)
downloadbcm5719-llvm-d6417f5584aa7673fa0212029a96cc9cacb1aad5.tar.gz
bcm5719-llvm-d6417f5584aa7673fa0212029a96cc9cacb1aad5.zip
[clangd] Implement "textDocument/documentLink" protocol support
Summary: This adds an implementation for the "textDocument/documentLink" LSP request. It returns links for all `#include` directives to the resolved target files. Fixes https://github.com/clangd/clangd/issues/217. Reviewers: sammccall Reviewed By: sammccall Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D70872
Diffstat (limited to 'clang-tools-extra/clangd/unittests/XRefsTests.cpp')
-rw-r--r--clang-tools-extra/clangd/unittests/XRefsTests.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/unittests/XRefsTests.cpp b/clang-tools-extra/clangd/unittests/XRefsTests.cpp
index e009c1c3ab2..058f205bb3a 100644
--- a/clang-tools-extra/clangd/unittests/XRefsTests.cpp
+++ b/clang-tools-extra/clangd/unittests/XRefsTests.cpp
@@ -1048,6 +1048,27 @@ TEST(GetNonLocalDeclRefs, All) {
}
}
+TEST(DocumentLinks, All) {
+ Annotations MainCpp(R"cpp(
+ #include $foo[["foo.h"]]
+ int end_of_preamble = 0;
+ #include $bar[["bar.h"]]
+ )cpp");
+
+ TestTU TU;
+ TU.Code = MainCpp.code();
+ TU.AdditionalFiles = {{"foo.h", ""}, {"bar.h", ""}};
+ auto AST = TU.build();
+
+ EXPECT_THAT(
+ clangd::getDocumentLinks(AST),
+ ElementsAre(
+ DocumentLink({MainCpp.range("foo"),
+ URIForFile::canonicalize(testPath("foo.h"), "")}),
+ DocumentLink({MainCpp.range("bar"),
+ URIForFile::canonicalize(testPath("bar.h"), "")})));
+}
+
} // namespace
} // namespace clangd
} // namespace clang
OpenPOWER on IntegriCloud