in Sources/SourceKitLSP/Swift/CodeCompletionSession.swift [72:97]
func update(
filterText: String,
position: Position,
in snapshot: DocumentSnapshot,
options: SKCompletionOptions,
completion: @escaping (LSPResult<CompletionList>) -> Void)
{
queue.async {
switch self.state {
case .closed:
self._open(filterText: filterText, position: position, in: snapshot, options: options, completion: completion)
case .opening(let group):
group.notify(queue: self.queue) {
switch self.state {
case .closed, .opening(_):
// Don't try again.
completion(.failure(.cancelled))
case .open:
self._update(filterText: filterText, position: position, in: snapshot, options: options, completion: completion)
}
}
case .open:
self._update(filterText: filterText, position: position, in: snapshot, options: options, completion: completion)
}
}
}