summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/ClangdServer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clangd/ClangdServer.cpp')
-rw-r--r--clang-tools-extra/clangd/ClangdServer.cpp42
1 files changed, 15 insertions, 27 deletions
diff --git a/clang-tools-extra/clangd/ClangdServer.cpp b/clang-tools-extra/clangd/ClangdServer.cpp
index a306ed2288c..abb09a86abf 100644
--- a/clang-tools-extra/clangd/ClangdServer.cpp
+++ b/clang-tools-extra/clangd/ClangdServer.cpp
@@ -141,7 +141,6 @@ void ClangdServer::forceReparse(PathRef File) {
void ClangdServer::codeComplete(
PathRef File, Position Pos, const clangd::CodeCompleteOptions &Opts,
UniqueFunction<void(Tagged<CompletionList>)> Callback,
- llvm::Optional<StringRef> OverridenContents,
IntrusiveRefCntPtr<vfs::FileSystem> *UsedFS) {
using CallbackType = UniqueFunction<void(Tagged<CompletionList>)>;
@@ -154,14 +153,9 @@ void ClangdServer::codeComplete(
if (!CodeCompleteOpts.Index) // Respect overridden index.
CodeCompleteOpts.Index = Index;
- std::string Contents;
- if (OverridenContents) {
- Contents = OverridenContents->str();
- } else {
- VersionedDraft Latest = DraftMgr.getDraft(File);
- assert(Latest.Draft && "codeComplete called for non-added document");
- Contents = *Latest.Draft;
- }
+ VersionedDraft Latest = DraftMgr.getDraft(File);
+ // FIXME(sammccall): return error for consistency?
+ assert(Latest.Draft && "codeComplete called for non-added document");
// Copy PCHs to avoid accessing this->PCHs concurrently
std::shared_ptr<PCHContainerOperations> PCHs = this->PCHs;
@@ -183,34 +177,27 @@ void ClangdServer::codeComplete(
WorkScheduler.runWithPreamble(
"CodeComplete", File,
- Bind(Task, std::move(Contents), File.str(), std::move(Callback)));
+ Bind(Task, std::move(*Latest.Draft), File.str(), std::move(Callback)));
}
void ClangdServer::signatureHelp(
PathRef File, Position Pos,
UniqueFunction<void(llvm::Expected<Tagged<SignatureHelp>>)> Callback,
- llvm::Optional<StringRef> OverridenContents,
IntrusiveRefCntPtr<vfs::FileSystem> *UsedFS) {
auto TaggedFS = FSProvider.getTaggedFileSystem(File);
if (UsedFS)
*UsedFS = TaggedFS.Value;
- std::string Contents;
- if (OverridenContents) {
- Contents = OverridenContents->str();
- } else {
- VersionedDraft Latest = DraftMgr.getDraft(File);
- if (!Latest.Draft)
- return Callback(llvm::make_error<llvm::StringError>(
- "signatureHelp is called for non-added document",
- llvm::errc::invalid_argument));
- Contents = std::move(*Latest.Draft);
- }
+ VersionedDraft Latest = DraftMgr.getDraft(File);
+ if (!Latest.Draft)
+ return Callback(llvm::make_error<llvm::StringError>(
+ "signatureHelp is called for non-added document",
+ llvm::errc::invalid_argument));
auto PCHs = this->PCHs;
- auto Action = [Contents, Pos, TaggedFS,
- PCHs](Path File, decltype(Callback) Callback,
- llvm::Expected<InputsAndPreamble> IP) {
+ auto Action = [Pos, TaggedFS, PCHs](std::string Contents, Path File,
+ decltype(Callback) Callback,
+ llvm::Expected<InputsAndPreamble> IP) {
if (!IP)
return Callback(IP.takeError());
@@ -223,8 +210,9 @@ void ClangdServer::signatureHelp(
TaggedFS.Tag));
};
- WorkScheduler.runWithPreamble("SignatureHelp", File,
- Bind(Action, File.str(), std::move(Callback)));
+ WorkScheduler.runWithPreamble(
+ "SignatureHelp", File,
+ Bind(Action, std::move(*Latest.Draft), File.str(), std::move(Callback)));
}
llvm::Expected<tooling::Replacements>
OpenPOWER on IntegriCloud