summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitri Gribenko <gribozavr@gmail.com>2019-12-16 15:21:51 +0100
committerDmitri Gribenko <gribozavr@gmail.com>2019-12-16 15:21:51 +0100
commit079ef783dd5530b5f87beefe624b9179547ded7e (patch)
treeb164eb41b1692d3d41e6d6f9054c9613b875a0c0
parent4658da10e4aabd15868876d879cfb185115a170c (diff)
downloadbcm5719-llvm-079ef783dd5530b5f87beefe624b9179547ded7e.tar.gz
bcm5719-llvm-079ef783dd5530b5f87beefe624b9179547ded7e.zip
Revert "[clangd] Implement "textDocument/documentLink" protocol support"
This reverts commit d6417f5584aa7673fa0212029a96cc9cacb1aad5. The tests depend on builtin headers, which is not intentionally supported in clangd tests; these tests are broken in some build environments.
-rw-r--r--clang-tools-extra/clangd/ClangdLSPServer.cpp24
-rw-r--r--clang-tools-extra/clangd/ClangdLSPServer.h2
-rw-r--r--clang-tools-extra/clangd/ClangdServer.cpp11
-rw-r--r--clang-tools-extra/clangd/ClangdServer.h3
-rw-r--r--clang-tools-extra/clangd/Protocol.cpp13
-rw-r--r--clang-tools-extra/clangd/Protocol.h33
-rw-r--r--clang-tools-extra/clangd/XRefs.cpp20
-rw-r--r--clang-tools-extra/clangd/XRefs.h3
-rw-r--r--clang-tools-extra/clangd/test/document-link.test42
-rw-r--r--clang-tools-extra/clangd/test/initialize-params.test3
-rw-r--r--clang-tools-extra/clangd/unittests/XRefsTests.cpp21
11 files changed, 0 insertions, 175 deletions
diff --git a/clang-tools-extra/clangd/ClangdLSPServer.cpp b/clang-tools-extra/clangd/ClangdLSPServer.cpp
index 69b4308a1c9..bd9c31d3844 100644
--- a/clang-tools-extra/clangd/ClangdLSPServer.cpp
+++ b/clang-tools-extra/clangd/ClangdLSPServer.cpp
@@ -566,10 +566,6 @@ void ClangdLSPServer::onInitialize(const InitializeParams &Params,
{"declarationProvider", true},
{"definitionProvider", true},
{"documentHighlightProvider", true},
- {"documentLinkProvider",
- llvm::json::Object{
- {"resolveProvider", false},
- }},
{"hoverProvider", true},
{"renameProvider", std::move(RenameProvider)},
{"selectionRangeProvider", true},
@@ -1204,25 +1200,6 @@ void ClangdLSPServer::onSelectionRange(
});
}
-void ClangdLSPServer::onDocumentLink(
- const DocumentLinkParams &Params,
- Callback<std::vector<DocumentLink>> Reply) {
-
- // TODO(forster): This currently resolves all targets eagerly. This is slow,
- // because it blocks on the preamble/AST being built. We could respond to the
- // request faster by using string matching or the lexer to find the includes
- // and resolving the targets lazily.
- Server->documentLinks(
- Params.textDocument.uri.file(),
- [Reply = std::move(Reply)](
- llvm::Expected<std::vector<DocumentLink>> Links) mutable {
- if (!Links) {
- return Reply(Links.takeError());
- }
- return Reply(std::move(Links));
- });
-}
-
ClangdLSPServer::ClangdLSPServer(
class Transport &Transp, const FileSystemProvider &FSProvider,
const clangd::CodeCompleteOptions &CCOpts,
@@ -1266,7 +1243,6 @@ ClangdLSPServer::ClangdLSPServer(
MsgHandler->bind("textDocument/typeHierarchy", &ClangdLSPServer::onTypeHierarchy);
MsgHandler->bind("typeHierarchy/resolve", &ClangdLSPServer::onResolveTypeHierarchy);
MsgHandler->bind("textDocument/selectionRange", &ClangdLSPServer::onSelectionRange);
- MsgHandler->bind("textDocument/documentLink", &ClangdLSPServer::onDocumentLink);
// clang-format on
}
diff --git a/clang-tools-extra/clangd/ClangdLSPServer.h b/clang-tools-extra/clangd/ClangdLSPServer.h
index 9650b6a7dbb..f1ed317f6ba 100644
--- a/clang-tools-extra/clangd/ClangdLSPServer.h
+++ b/clang-tools-extra/clangd/ClangdLSPServer.h
@@ -111,8 +111,6 @@ private:
Callback<std::vector<SymbolDetails>>);
void onSelectionRange(const SelectionRangeParams &,
Callback<std::vector<SelectionRange>>);
- void onDocumentLink(const DocumentLinkParams &,
- Callback<std::vector<DocumentLink>>);
std::vector<Fix> getFixes(StringRef File, const clangd::Diagnostic &D);
diff --git a/clang-tools-extra/clangd/ClangdServer.cpp b/clang-tools-extra/clangd/ClangdServer.cpp
index c71a8a0d566..40fa28ae140 100644
--- a/clang-tools-extra/clangd/ClangdServer.cpp
+++ b/clang-tools-extra/clangd/ClangdServer.cpp
@@ -611,17 +611,6 @@ void ClangdServer::semanticRanges(PathRef File, Position Pos,
WorkScheduler.runWithAST("SemanticRanges", File, std::move(Action));
}
-void ClangdServer::documentLinks(PathRef File,
- Callback<std::vector<DocumentLink>> CB) {
- auto Action =
- [CB = std::move(CB)](llvm::Expected<InputsAndAST> InpAST) mutable {
- if (!InpAST)
- return CB(InpAST.takeError());
- CB(clangd::getDocumentLinks(InpAST->AST));
- };
- WorkScheduler.runWithAST("DocumentLinks", File, std::move(Action));
-}
-
std::vector<std::pair<Path, std::size_t>>
ClangdServer::getUsedBytesPerFile() const {
return WorkScheduler.getUsedBytesPerFile();
diff --git a/clang-tools-extra/clangd/ClangdServer.h b/clang-tools-extra/clangd/ClangdServer.h
index 4574d6c3503..49934080876 100644
--- a/clang-tools-extra/clangd/ClangdServer.h
+++ b/clang-tools-extra/clangd/ClangdServer.h
@@ -287,9 +287,6 @@ public:
void semanticRanges(PathRef File, Position Pos,
Callback<std::vector<Range>> CB);
- /// Get all document links in a file.
- void documentLinks(PathRef File, Callback<std::vector<DocumentLink>> CB);
-
/// Returns estimated memory usage for each of the currently open files.
/// The order of results is unspecified.
/// Overall memory usage of clangd may be significantly more than reported
diff --git a/clang-tools-extra/clangd/Protocol.cpp b/clang-tools-extra/clangd/Protocol.cpp
index 29ceb1da545..25826bd5a11 100644
--- a/clang-tools-extra/clangd/Protocol.cpp
+++ b/clang-tools-extra/clangd/Protocol.cpp
@@ -1087,18 +1087,5 @@ llvm::json::Value toJSON(const SelectionRange &Out) {
}
return llvm::json::Object{{"range", Out.range}};
}
-
-bool fromJSON(const llvm::json::Value &Params, DocumentLinkParams &R) {
- llvm::json::ObjectMapper O(Params);
- return O && O.map("textDocument", R.textDocument);
-}
-
-llvm::json::Value toJSON(const DocumentLink &DocumentLink) {
- return llvm::json::Object{
- {"range", DocumentLink.range},
- {"target", DocumentLink.target},
- };
-}
-
} // namespace clangd
} // namespace clang
diff --git a/clang-tools-extra/clangd/Protocol.h b/clang-tools-extra/clangd/Protocol.h
index 1ccfa587bf8..f110292b091 100644
--- a/clang-tools-extra/clangd/Protocol.h
+++ b/clang-tools-extra/clangd/Protocol.h
@@ -1250,39 +1250,6 @@ struct SelectionRange {
};
llvm::json::Value toJSON(const SelectionRange &);
-/// Parameters for the document link request.
-struct DocumentLinkParams {
- /// The document to provide document links for.
- TextDocumentIdentifier textDocument;
-};
-bool fromJSON(const llvm::json::Value &, DocumentLinkParams &);
-
-/// A range in a text document that links to an internal or external resource,
-/// like another text document or a web site.
-struct DocumentLink {
- /// The range this link applies to.
- Range range;
-
- /// The uri this link points to. If missing a resolve request is sent later.
- URIForFile target;
-
- // TODO(forster): The following optional fields defined by the language
- // server protocol are unsupported:
- //
- // data?: any - A data entry field that is preserved on a document link
- // between a DocumentLinkRequest and a
- // DocumentLinkResolveRequest.
-
- friend bool operator==(const DocumentLink &LHS, const DocumentLink &RHS) {
- return LHS.range == RHS.range && LHS.target == RHS.target;
- }
-
- friend bool operator!=(const DocumentLink &LHS, const DocumentLink &RHS) {
- return !(LHS == RHS);
- }
-};
-llvm::json::Value toJSON(const DocumentLink &DocumentLink);
-
} // namespace clangd
} // namespace clang
diff --git a/clang-tools-extra/clangd/XRefs.cpp b/clang-tools-extra/clangd/XRefs.cpp
index 1ca388f49f8..b16e7080aa6 100644
--- a/clang-tools-extra/clangd/XRefs.cpp
+++ b/clang-tools-extra/clangd/XRefs.cpp
@@ -166,26 +166,6 @@ llvm::Optional<Location> makeLocation(ASTContext &AST, SourceLocation TokLoc,
} // namespace
-std::vector<DocumentLink> getDocumentLinks(ParsedAST &AST) {
- const auto &SM = AST.getSourceManager();
- auto MainFilePath =
- getCanonicalPath(SM.getFileEntryForID(SM.getMainFileID()), SM);
- if (!MainFilePath) {
- elog("Failed to get a path for the main file, so no links");
- return {};
- }
-
- std::vector<DocumentLink> Result;
- for (auto &Inc : AST.getIncludeStructure().MainFileIncludes) {
- if (!Inc.Resolved.empty()) {
- Result.push_back(DocumentLink(
- {Inc.R, URIForFile::canonicalize(Inc.Resolved, *MainFilePath)}));
- }
- }
-
- return Result;
-}
-
std::vector<LocatedSymbol> locateSymbolAt(ParsedAST &AST, Position Pos,
const SymbolIndex *Index) {
const auto &SM = AST.getSourceManager();
diff --git a/clang-tools-extra/clangd/XRefs.h b/clang-tools-extra/clangd/XRefs.h
index bc8deb1e3df..dc9e4f23f1a 100644
--- a/clang-tools-extra/clangd/XRefs.h
+++ b/clang-tools-extra/clangd/XRefs.h
@@ -49,9 +49,6 @@ llvm::raw_ostream &operator<<(llvm::raw_ostream &, const LocatedSymbol &);
std::vector<LocatedSymbol> locateSymbolAt(ParsedAST &AST, Position Pos,
const SymbolIndex *Index = nullptr);
-/// Get all document links
-std::vector<DocumentLink> getDocumentLinks(ParsedAST &AST);
-
/// Returns highlights for all usages of a symbol at \p Pos.
std::vector<DocumentHighlight> findDocumentHighlights(ParsedAST &AST,
Position Pos);
diff --git a/clang-tools-extra/clangd/test/document-link.test b/clang-tools-extra/clangd/test/document-link.test
deleted file mode 100644
index 7802fe78456..00000000000
--- a/clang-tools-extra/clangd/test/document-link.test
+++ /dev/null
@@ -1,42 +0,0 @@
-# RUN: clangd -lit-test < %s | FileCheck -strict-whitespace %s
-{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{},"trace":"off"}}
----
-{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///main.cpp","languageId":"cpp","version":1,"text":"#include <stdint.h>\n#include <stddef.h>"}}}
----
-{"jsonrpc":"2.0","id":2,"method":"textDocument/documentLink","params":{"textDocument":{"uri":"test:///main.cpp"}}}
-# CHECK: "id": 2,
-# CHECK-NEXT: "jsonrpc": "2.0",
-# CHECK-NEXT: "result": [
-# CHECK-NEXT: {
-# CHECK-NEXT: "range": {
-# CHECK-NEXT: "end": {
-# CHECK-NEXT: "character": 19,
-# CHECK-NEXT: "line": 0
-# CHECK-NEXT: },
-# CHECK-NEXT: "start": {
-# CHECK-NEXT: "character": 9,
-# CHECK-NEXT: "line": 0
-# CHECK-NEXT: }
-# CHECK-NEXT: },
-# CHECK-NEXT: "target": "file://{{.*}}/stdint.h"
-# CHECK-NEXT: },
-# CHECK-NEXT: {
-# CHECK-NEXT: "range": {
-# CHECK-NEXT: "end": {
-# CHECK-NEXT: "character": 19,
-# CHECK-NEXT: "line": 1
-# CHECK-NEXT: },
-# CHECK-NEXT: "start": {
-# CHECK-NEXT: "character": 9,
-# CHECK-NEXT: "line": 1
-# CHECK-NEXT: }
-# CHECK-NEXT: },
-# CHECK-NEXT: "target": "file://{{.*}}/stddef.h"
-# CHECK-NEXT: }
-# CHECK-NEXT: ]
-# CHECK-NEXT:}
-
----
-{"jsonrpc":"2.0","id":3,"method":"shutdown"}
----
-{"jsonrpc":"2.0","method":"exit"}
diff --git a/clang-tools-extra/clangd/test/initialize-params.test b/clang-tools-extra/clangd/test/initialize-params.test
index e5ec9fb3d7a..8a853b7c622 100644
--- a/clang-tools-extra/clangd/test/initialize-params.test
+++ b/clang-tools-extra/clangd/test/initialize-params.test
@@ -18,9 +18,6 @@
# CHECK-NEXT: "definitionProvider": true,
# CHECK-NEXT: "documentFormattingProvider": true,
# CHECK-NEXT: "documentHighlightProvider": true,
-# CHECK-NEXT: "documentLinkProvider": {
-# CHECK-NEXT: "resolveProvider": false
-# CHECK-NEXT: }
# CHECK-NEXT: "documentOnTypeFormattingProvider": {
# CHECK-NEXT: "firstTriggerCharacter": "\n",
# CHECK-NEXT: "moreTriggerCharacter": []
diff --git a/clang-tools-extra/clangd/unittests/XRefsTests.cpp b/clang-tools-extra/clangd/unittests/XRefsTests.cpp
index 51a7f81dcb5..5ec29af76a9 100644
--- a/clang-tools-extra/clangd/unittests/XRefsTests.cpp
+++ b/clang-tools-extra/clangd/unittests/XRefsTests.cpp
@@ -1121,27 +1121,6 @@ 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