mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[sourcekit] Synchronize cursor-info requests on generated interfaces
Cursor info requires access to the underlying AST, which is not thread-safe. This manifest as crashes when performing concurrent cursor-info requests on the same generated interface. We already prevented concurrent cursor-infos on regular Swift files by using the ASTManager, but generated interfaces use the InterfaceGenContext which may use either an ASTUnit or its own internal CompilerInstance. rdar://problem/27311624
This commit is contained in:
@@ -209,6 +209,10 @@ namespace SourceKit {
|
||||
EditorDiagConsumer &ASTUnit::getEditorDiagConsumer() const {
|
||||
return Impl.CollectDiagConsumer;
|
||||
}
|
||||
|
||||
void ASTUnit::performAsync(std::function<void()> Fn) {
|
||||
Impl.Queue.dispatch(std::move(Fn));
|
||||
}
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
Reference in New Issue
Block a user