@@ -264,7 +264,6 @@ class CodeCompletionSession {
264264 self . clientSupportsDocumentationResolve =
265265 clientCapabilities. textDocument? . completion? . completionItem? . resolveSupport? . properties. contains ( " documentation " )
266266 ?? false
267-
268267 }
269268
270269 private func open(
@@ -279,7 +278,6 @@ class CodeCompletionSession {
279278
280279 let sourcekitdPosition = snapshot. sourcekitdPosition ( of: self . position)
281280 let req = sourcekitd. dictionary ( [
282- keys. request: sourcekitd. requests. codeCompleteOpen,
283281 keys. line: sourcekitdPosition. line,
284282 keys. column: sourcekitdPosition. utf8Column,
285283 keys. name: uri. pseudoPath,
@@ -288,7 +286,7 @@ class CodeCompletionSession {
288286 keys. codeCompleteOptions: optionsDictionary ( filterText: filterText) ,
289287 ] )
290288
291- let dict = try await sendSourceKitdRequest ( req, snapshot: snapshot)
289+ let dict = try await send ( sourceKitDRequest : \ . codeCompleteOpen , req, snapshot: snapshot)
292290 self . state = . open
293291
294292 guard let completions: SKDResponseArray = dict [ keys. results] else {
@@ -314,15 +312,14 @@ class CodeCompletionSession {
314312 logger. info ( " Updating code completion session: \( self . description) filter= \( filterText) " )
315313 let sourcekitdPosition = snapshot. sourcekitdPosition ( of: self . position)
316314 let req = sourcekitd. dictionary ( [
317- keys. request: sourcekitd. requests. codeCompleteUpdate,
318315 keys. line: sourcekitdPosition. line,
319316 keys. column: sourcekitdPosition. utf8Column,
320317 keys. name: uri. pseudoPath,
321318 keys. sourceFile: uri. pseudoPath,
322319 keys. codeCompleteOptions: optionsDictionary ( filterText: filterText) ,
323320 ] )
324321
325- let dict = try await sendSourceKitdRequest ( req, snapshot: snapshot)
322+ let dict = try await send ( sourceKitDRequest : \ . codeCompleteUpdate , req, snapshot: snapshot)
326323 guard let completions: SKDResponseArray = dict [ keys. results] else {
327324 return CompletionList ( isIncomplete: false , items: [ ] )
328325 }
@@ -363,29 +360,31 @@ class CodeCompletionSession {
363360 case . open:
364361 let sourcekitdPosition = snapshot. sourcekitdPosition ( of: self . position)
365362 let req = sourcekitd. dictionary ( [
366- keys. request: sourcekitd. requests. codeCompleteClose,
367363 keys. line: sourcekitdPosition. line,
368364 keys. column: sourcekitdPosition. utf8Column,
369365 keys. sourceFile: snapshot. uri. pseudoPath,
370366 keys. name: snapshot. uri. pseudoPath,
371367 keys. codeCompleteOptions: [ keys. useNewAPI: 1 ] ,
372368 ] )
373369 logger. info ( " Closing code completion session: \( self . description) " )
374- _ = try ? await sendSourceKitdRequest ( req, snapshot: nil )
370+ _ = try ? await send ( sourceKitDRequest : \ . codeCompleteClose , req, snapshot: nil )
375371 self . state = . closed
376372 }
377373 }
378374
379375 // MARK: - Helpers
380376
381- private func sendSourceKitdRequest(
377+ private func send(
378+ sourceKitDRequest requestUid: KeyPath < sourcekitd_api_requests , sourcekitd_api_uid_t > & Sendable ,
382379 _ request: SKDRequestDictionary ,
383380 snapshot: DocumentSnapshot ?
384381 ) async throws -> SKDResponseDictionary {
385382 try await sourcekitd. send (
383+ requestUid,
386384 request,
387385 timeout: options. sourcekitdRequestTimeoutOrDefault,
388386 restartTimeout: options. semanticServiceRestartTimeoutOrDefault,
387+ documentUrl: snapshot? . uri. arbitrarySchemeURL,
389388 fileContents: snapshot? . text
390389 )
391390 }
@@ -560,11 +559,17 @@ class CodeCompletionSession {
560559 var item = item
561560 if let itemId = CompletionItemData ( fromLSPAny: item. data) ? . itemId {
562561 let req = sourcekitd. dictionary ( [
563- sourcekitd. keys. request: sourcekitd. requests. codeCompleteDocumentation,
564- sourcekitd. keys. identifier: itemId,
562+ sourcekitd. keys. identifier: itemId
565563 ] )
566564 let documentationResponse = await orLog ( " Retrieving documentation for completion item " ) {
567- try await sourcekitd. send ( req, timeout: timeout, restartTimeout: restartTimeout, fileContents: nil )
565+ try await sourcekitd. send (
566+ \. codeCompleteDocumentation,
567+ req,
568+ timeout: timeout,
569+ restartTimeout: restartTimeout,
570+ documentUrl: nil ,
571+ fileContents: nil
572+ )
568573 }
569574 if let docString: String = documentationResponse ? [ sourcekitd. keys. docBrief] {
570575 item. documentation = . markupContent( MarkupContent ( kind: . markdown, value: docString) )
0 commit comments