diff options
author | Michael Forster <forster@google.com> | 2019-12-12 14:30:02 +0100 |
---|---|---|
committer | Sam McCall <sam.mccall@gmail.com> | 2019-12-12 14:55:20 +0100 |
commit | d6417f5584aa7673fa0212029a96cc9cacb1aad5 (patch) | |
tree | 3f42ba6020a54e4387f64b5d33c4077c1ca423c4 /clang-tools-extra/clangd/unittests/XRefsTests.cpp | |
parent | 9c8cfa09d762a307bae55b75b621cbc53f4a3b3b (diff) | |
download | bcm5719-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.cpp | 21 |
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 |