[IDE] Report ambiguous cursor info results

This commit is contained in:
Alex Hoppen
2023-03-17 10:49:29 -07:00
parent 05b59d1462
commit eb6729754d
5 changed files with 65 additions and 22 deletions

View File

@@ -1915,15 +1915,15 @@ static void deliverCursorInfoResults(
// TODO: Implement delivery of other result types as more cursor info kinds
// are migrated to be completion-like.
CursorInfoData Data;
for (auto ResolvedCursorInfo : Results.getResult().ResolvedCursorInfos) {
for (auto ResolvedCursorInfo : Results->ResolvedCursorInfos) {
if (auto Result = dyn_cast_or_null<ResolvedValueRefCursorInfo>(
ResolvedCursorInfo)) {
std::string Diagnostic; // Unused
addCursorInfoForDecl(Data, Result, AddRefactorings, AddSymbolGraph,
Lang, Invoc, Diagnostic, /*PreviousSnaps=*/{});
}
Data.DidReuseAST = Results->DidReuseAST;
}
Data.DidReuseAST = Results->DidReuseAST;
if (!Data.Symbols.empty()) {
Receiver(RequestResult<CursorInfoData>::fromResult(Data));
}
@@ -2008,7 +2008,8 @@ void SwiftLangSupport::getCursorInfo(
std::unique_ptr<llvm::MemoryBuffer> UnresolvedInputFile =
getASTManager()->getMemoryBuffer(RealInputFilePath, fileSystem,
InputFileError);
if (UnresolvedInputFile) {
// The solver-based implementation doesn't support range based cursor info.
if (UnresolvedInputFile && Length == 0) {
auto SolverBasedReceiver = [&](const RequestResult<CursorInfoData> &Res) {
SolverBasedProducedResult = true;
Receiver(Res);