in SourceKitStressTester/Sources/StressTester/SourceKitDocument.swift [109:134]
func rangeInfo(offset: Int, length: Int) throws -> (RequestInfo, SourceKitdResponse) {
let request = SourceKitdRequest(uid: .request_RangeInfo)
request.addParameter(.key_SourceFile, value: args.forFile.path)
request.addParameter(.key_Offset, value: offset)
request.addParameter(.key_Length, value: length)
request.addParameter(.key_RetrieveRefactorActions, value: 1)
request.addCompilerArgs(args.sourcekitdArgs)
let info = RequestInfo.rangeInfo(document: documentInfo, offset: offset,
length: length, args: args.sourcekitdArgs)
let response = try sendWithTimeout(request, info: info)
if let actions = response.value.getOptional(.key_RefactorActions)?.getArray() {
for i in 0 ..< actions.count {
let action = actions.getDictionary(i)
guard action.getOptional(.key_ActionUnavailableReason) == nil else { continue }
let actionName = action.getString(.key_ActionName)
let kind = action.getUID(.key_ActionUID)
_ = try semanticRefactoring(actionKind: kind, actionName: actionName,
offset: offset)
}
}
return (info, response)
}