mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-08 17:11:33 +00:00
[clangd] Use Contents from inputs in codeComplete and signatureHelp
Summary: ClangdServer::{codeComplete,signatureHelp} both use the Contents from the draft manager. Since we want to move the draft manager from ClangdServer to ClangdLSPServer, this patch changes those methods to find the file contents from InputsAndPreamble, which contains the source passed in previously. Subscribers: klimek, ilya-biryukov, jkorous-apple, ioeric, cfe-commits Differential Revision: https://reviews.llvm.org/D44484 llvm-svn: 327550
This commit is contained in:
parent
706a8095b3
commit
5a48cf86f1
@ -154,9 +154,9 @@ void ClangdServer::codeComplete(PathRef File, Position Pos,
|
||||
// Copy PCHs to avoid accessing this->PCHs concurrently
|
||||
std::shared_ptr<PCHContainerOperations> PCHs = this->PCHs;
|
||||
auto FS = FSProvider.getFileSystem();
|
||||
auto Task = [PCHs, Pos, FS, CodeCompleteOpts](
|
||||
std::string Contents, Path File, Callback<CompletionList> CB,
|
||||
llvm::Expected<InputsAndPreamble> IP) {
|
||||
auto Task = [PCHs, Pos, FS,
|
||||
CodeCompleteOpts](Path File, Callback<CompletionList> CB,
|
||||
llvm::Expected<InputsAndPreamble> IP) {
|
||||
assert(IP && "error when trying to read preamble for codeComplete");
|
||||
auto PreambleData = IP->Preamble;
|
||||
|
||||
@ -164,13 +164,12 @@ void ClangdServer::codeComplete(PathRef File, Position Pos,
|
||||
// both the old and the new version in case only one of them matches.
|
||||
CompletionList Result = clangd::codeComplete(
|
||||
File, IP->Command, PreambleData ? &PreambleData->Preamble : nullptr,
|
||||
Contents, Pos, FS, PCHs, CodeCompleteOpts);
|
||||
IP->Contents, Pos, FS, PCHs, CodeCompleteOpts);
|
||||
CB(std::move(Result));
|
||||
};
|
||||
|
||||
WorkScheduler.runWithPreamble(
|
||||
"CodeComplete", File,
|
||||
Bind(Task, std::move(*Latest.Draft), File.str(), std::move(CB)));
|
||||
WorkScheduler.runWithPreamble("CodeComplete", File,
|
||||
Bind(Task, File.str(), std::move(CB)));
|
||||
}
|
||||
|
||||
void ClangdServer::signatureHelp(PathRef File, Position Pos,
|
||||
@ -183,8 +182,7 @@ void ClangdServer::signatureHelp(PathRef File, Position Pos,
|
||||
|
||||
auto PCHs = this->PCHs;
|
||||
auto FS = FSProvider.getFileSystem();
|
||||
auto Action = [Pos, FS, PCHs](std::string Contents, Path File,
|
||||
Callback<SignatureHelp> CB,
|
||||
auto Action = [Pos, FS, PCHs](Path File, Callback<SignatureHelp> CB,
|
||||
llvm::Expected<InputsAndPreamble> IP) {
|
||||
if (!IP)
|
||||
return CB(IP.takeError());
|
||||
@ -192,12 +190,11 @@ void ClangdServer::signatureHelp(PathRef File, Position Pos,
|
||||
auto PreambleData = IP->Preamble;
|
||||
CB(clangd::signatureHelp(File, IP->Command,
|
||||
PreambleData ? &PreambleData->Preamble : nullptr,
|
||||
Contents, Pos, FS, PCHs));
|
||||
IP->Contents, Pos, FS, PCHs));
|
||||
};
|
||||
|
||||
WorkScheduler.runWithPreamble(
|
||||
"SignatureHelp", File,
|
||||
Bind(Action, std::move(*Latest.Draft), File.str(), std::move(CB)));
|
||||
WorkScheduler.runWithPreamble("SignatureHelp", File,
|
||||
Bind(Action, File.str(), std::move(CB)));
|
||||
}
|
||||
|
||||
llvm::Expected<tooling::Replacements>
|
||||
|
Loading…
Reference in New Issue
Block a user