@@ -128,7 +128,7 @@ public final class SwiftLanguageServer: ToolchainLanguageServer {
128128 // in addition to the existing push-based publish notifications.
129129 // If the client supports pull diagnostics, we report the capability
130130 // and we should disable the publish notifications to avoid double-reporting.
131- return capabilityRegistry. pullDiagnosticsRegistration ( . swift) == nil
131+ return capabilityRegistry. pullDiagnosticsRegistration ( for : . swift) == nil
132132 }
133133
134134 private var state : LanguageServerState {
@@ -152,7 +152,6 @@ public final class SwiftLanguageServer: ToolchainLanguageServer {
152152 public init ? (
153153 client: LocalConnection ,
154154 toolchain: Toolchain ,
155- clientCapabilities: ClientCapabilities ? ,
156155 options: SourceKitServer . Options ,
157156 workspace: Workspace ,
158157 reopenDocuments: @escaping ( ToolchainLanguageServer ) -> Void
@@ -977,6 +976,7 @@ extension SwiftLanguageServer {
977976 }
978977
979978 public func foldingRange( _ req: Request < FoldingRangeRequest > ) {
979+ let foldingRangeCapabilities = capabilityRegistry. clientCapabilities. textDocument? . foldingRange
980980 queue. async {
981981 guard let snapshot = self . documentManager. latestSnapshot ( req. params. textDocument. uri) else {
982982 log ( " failed to find snapshot for url \( req. params. textDocument. uri) " )
@@ -1155,17 +1155,16 @@ extension SwiftLanguageServer {
11551155 }
11561156 }
11571157
1158- let capabilities = capabilityRegistry. clientCapabilities. textDocument? . foldingRange
11591158 // If the limit is less than one, do nothing.
1160- if let limit = capabilities ? . rangeLimit, limit <= 0 {
1159+ if let limit = foldingRangeCapabilities ? . rangeLimit, limit <= 0 {
11611160 req. reply ( [ ] )
11621161 return
11631162 }
11641163
11651164 let rangeFinder = FoldingRangeFinder (
11661165 snapshot: snapshot,
1167- rangeLimit: capabilities ? . rangeLimit,
1168- lineFoldingOnly: capabilities ? . lineFoldingOnly ?? false )
1166+ rangeLimit: foldingRangeCapabilities ? . rangeLimit,
1167+ lineFoldingOnly: foldingRangeCapabilities ? . lineFoldingOnly ?? false )
11691168 rangeFinder. walk ( sourceFile)
11701169 let ranges = rangeFinder. finalize ( )
11711170
@@ -1180,12 +1179,12 @@ extension SwiftLanguageServer {
11801179 ]
11811180 let wantedActionKinds = req. params. context. only
11821181 let providers = providersAndKinds. filter { wantedActionKinds? . contains ( $0. 1 ) != false }
1182+ let codeActionCapabilities = capabilityRegistry. clientCapabilities. textDocument? . codeAction
11831183 retrieveCodeActions ( req, providers: providers. map { $0. provider } ) { result in
11841184 switch result {
11851185 case . success( let codeActions) :
1186- let capabilities = capabilityRegistry. clientCapabilities. textDocument? . codeAction
11871186 let response = CodeActionRequestResponse ( codeActions: codeActions,
1188- clientCapabilities: capabilities )
1187+ clientCapabilities: codeActionCapabilities )
11891188 req. reply ( response)
11901189 case . failure( let error) :
11911190 req. reply ( . failure( error) )
@@ -1366,15 +1365,14 @@ extension SwiftLanguageServer {
13661365
13671366 let supportsCodeDescription = capabilityRegistry. clientHasDiagnosticsCodeDescriptionSupport
13681367
1369- let handle = self . sourcekitd. send ( skreq, self . queue) { [ weak self] response in
1370- guard let self = self else { return }
1368+ let handle = self . sourcekitd. send ( skreq, self . queue) { response in
13711369 guard let dict = response. success else {
13721370 return completion ( . failure( ResponseError ( response. failure!) ) )
13731371 }
13741372
13751373 var diagnostics : [ Diagnostic ] = [ ]
13761374 dict [ keys. diagnostics] ? . forEach { _, diag in
1377- if var diagnostic = Diagnostic ( diag, in: snapshot, useEducationalNoteAsCode: supportsCodeDescription) {
1375+ if let diagnostic = Diagnostic ( diag, in: snapshot, useEducationalNoteAsCode: supportsCodeDescription) {
13781376 diagnostics. append ( diagnostic)
13791377 }
13801378 return true
0 commit comments