func codeComplete()

in SourceKitStressTester/Sources/StressTester/SourceKitDocument.swift [271:300]


  func codeComplete(offset: Int, expectedResult: ExpectedResult?) throws -> (request: RequestInfo, response: SourceKitdResponse, instructions: Int, reusingASTContext: Bool) {
    var responseToReport: SourceKitdResponse
    let openRequest = buildCompletionRequest(request: .request_CodeCompleteOpen, offset: offset, extraOptions: extraCodeCompleteOptions)
    let openInfo = RequestInfo.codeCompleteOpen(document: documentInfo, offset: offset,
                                                args: args.sourcekitdArgs)
    let (openResponse, openInstructions) = try sendWithTimeoutMeasuringInstructions(openRequest, info: openInfo)

    let reusingASTContext = openResponse.value.getBool(.key_ReusingASTContext)

    if let expectedResult = expectedResult {
      var updateOptions = extraCodeCompleteOptions

      updateOptions["filtertext"] = expectedResult.name.base

      let updateRequest = buildCompletionRequest(request: .request_CodeCompleteUpdate, offset: offset, extraOptions: updateOptions)
      let updateInfo = RequestInfo.codeCompleteOpen(document: documentInfo, offset: offset, args: args.sourcekitdArgs)
      let updateResponse = try sendWithTimeout(updateRequest, info: updateInfo) { response in
        try checkExpectedCompletionResult(expectedResult, in: response, info: openInfo)
      }
      responseToReport = updateResponse
    } else {
      responseToReport = openResponse
    }

    let closeRequest = buildCompletionRequest(request: .request_CodeCompleteClose, offset: offset, extraOptions: extraCodeCompleteOptions)
    let closeInfo = RequestInfo.codeCompleteClose(document: documentInfo, offset: offset)
    _ = try sendWithTimeout(closeRequest, info: closeInfo)

    return (openInfo, responseToReport, openInstructions, reusingASTContext)
  }