[SourceKit] Fail requests when an error occurs

Previously, requests would fail silently by returning an empty struct
in the response.

With this change, responses will properly report fail with the internal
error.
This commit is contained in:
David Goldman
2019-04-18 11:25:53 -04:00
parent f978cb0ba3
commit 10ecea6269
20 changed files with 291 additions and 223 deletions

View File

@@ -490,26 +490,31 @@ public:
unsigned Length, bool Actionables,
bool CancelOnSubsequentRequest,
ArrayRef<const char *> Args,
std::function<void(const CursorInfoData &)> Receiver) override;
std::function<void(const CursorInfoData &,
StringRef Error)> Receiver) override;
void getNameInfo(StringRef Filename, unsigned Offset,
NameTranslatingInfo &Input,
ArrayRef<const char *> Args,
std::function<void(const NameTranslatingInfo &)> Receiver) override;
std::function<void(const NameTranslatingInfo &,
StringRef Error)> Receiver) override;
void getRangeInfo(StringRef Filename, unsigned Offset, unsigned Length,
bool CancelOnSubsequentRequest, ArrayRef<const char *> Args,
std::function<void(const RangeInfo&)> Receiver) override;
std::function<void(const RangeInfo&,
StringRef Error)> Receiver) override;
void getCursorInfoFromUSR(
StringRef Filename, StringRef USR, bool CancelOnSubsequentRequest,
ArrayRef<const char *> Args,
std::function<void(const CursorInfoData &)> Receiver) override;
std::function<void(const CursorInfoData &,
StringRef Errro)> Receiver) override;
void findRelatedIdentifiersInFile(StringRef Filename, unsigned Offset,
bool CancelOnSubsequentRequest,
ArrayRef<const char *> Args,
std::function<void(const RelatedIdentsInfo &)> Receiver) override;
std::function<void(const RelatedIdentsInfo &,
StringRef Errror)> Receiver) override;
void syntacticRename(llvm::MemoryBuffer *InputBuf,
ArrayRef<RenameLocations> RenameLocations,
@@ -527,7 +532,8 @@ public:
void collectExpressionTypes(StringRef FileName, ArrayRef<const char *> Args,
ArrayRef<const char *> ExpectedProtocols,
std::function<void(const ExpressionTypesInFile&)> Receiver) override;
std::function<void(const ExpressionTypesInFile&,
StringRef Errror)> Receiver) override;
void semanticRefactoring(StringRef Filename, SemanticRefactoringInfo Info,
ArrayRef<const char*> Args,
@@ -542,10 +548,12 @@ public:
findUSRRange(StringRef DocumentName, StringRef USR) override;
void findInterfaceDocument(StringRef ModuleName, ArrayRef<const char *> Args,
std::function<void(const InterfaceDocInfo &)> Receiver) override;
std::function<void(const InterfaceDocInfo &,
StringRef Error)> Receiver) override;
void findModuleGroups(StringRef ModuleName, ArrayRef<const char *> Args,
std::function<void(ArrayRef<StringRef>, StringRef Error)> Receiver) override;
std::function<void(ArrayRef<StringRef>,
StringRef Error)> Receiver) override;
void getExpressionContextInfo(llvm::MemoryBuffer *inputBuf, unsigned Offset,
ArrayRef<const char *> Args,