mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[SourceKit] Allow explicit cancellation of requests with a cancellation token
The key changes here are - To keep track of cancellation tokens for all `ScheduledConsumer`s in `SwiftASTManager` - Generate unique request handles for all incoming requests (`create_request_handle `), use these request handles as cancellation tokens and return them from the `sourcekitd_send_request` methods - Implement cancellation with `sourcekitd_cancel_request` as the entry point and `SwiftASTManager::cancelASTConsumer` as the termination point Everything else is just plumbing the cancellation token through the various abstraction layers. rdar://83391505
This commit is contained in:
@@ -307,6 +307,11 @@ void SwiftLangSupport::dependencyUpdated() {
|
||||
CompletionInst->markCachedCompilerInstanceShouldBeInvalidated();
|
||||
}
|
||||
|
||||
void SwiftLangSupport::cancelRequest(
|
||||
SourceKitCancellationToken CancellationToken) {
|
||||
getASTManager()->cancelASTConsumer(CancellationToken);
|
||||
}
|
||||
|
||||
UIdent SwiftLangSupport::getUIDForDeclLanguage(const swift::Decl *D) {
|
||||
if (D->hasClangNode())
|
||||
return KindObjC;
|
||||
|
||||
Reference in New Issue
Block a user