0001 // 0002 // Request.swift 0003 // SourceKitten 0004 // 0005 // Created by JP Simard on 2015-01-03. 0006 // Copyright (c) 2015 JP Simard. All rights reserved. 0007 // 0008 0009 import Foundation 0010 #if SWIFT_PACKAGE 0011 import SourceKit 0012 #endif 0013 0014 public protocol SourceKitRepresentable{ 0015 func isEqualTo
CodeCompletionItem.swift:50 public static func parseResponse(response: [String: SourceKitRepresentable]) -> [CodeCompletionItem] {CodeCompletionItem.swift:51 return (response["key.results"] as! [SourceKitRepresentable]).map { item inCodeCompletionItem.swift:52 let dict = item as! [String: SourceKitRepresentable]File.swift:61 public func parseDeclaration(dictionary: [String: SourceKitRepresentable]) -> String? {File.swift:81 public func parseScopeRange(dictionary: [String: SourceKitRepresentable]) -> (start: Int, end: Int)? {File.swift:104 private func markNameFromDictionary(dictionary: [String: SourceKitRepresentable]) -> String? {File.swift:123 public func processDictionary(dictionary: [String: SourceKitRepresentable], cursorInfoRequest: sourcekitd_object_t? = nil, syntaxMap: SyntaxMap? = nil) -> [String: SourceKitRepresentable] {File.swift:123 public func processDictionary(dictionary: [String: SourceKitRepresentable], cursorInfoRequest: sourcekitd_object_t? = nil, syntaxMap: SyntaxMap? = nil) -> [String: SourceKitRepresentable] {File.swift:168 internal func furtherProcessDictionary(dictionary: [String: SourceKitRepresentable], documentedTokenOffsets: [Int], cursorInfoRequest: sourcekitd_object_t, syntaxMap: SyntaxMap) -> [String: SourceKitRepresentable] {File.swift:168 internal func furtherProcessDictionary(dictionary: [String: SourceKitRepresentable], documentedTokenOffsets: [Int], cursorInfoRequest: sourcekitd_object_t, syntaxMap: SyntaxMap) -> [String: SourceKitRepresentable] {File.swift:194 private func newSubstructure(dictionary: [String: SourceKitRepresentable], cursorInfoRequest: sourcekitd_object_t?, syntaxMap: SyntaxMap?) -> [SourceKitRepresentable]? {File.swift:194 private func newSubstructure(dictionary: [String: SourceKitRepresentable], cursorInfoRequest: sourcekitd_object_t?, syntaxMap: SyntaxMap?) -> [SourceKitRepresentable]? {File.swift:196 .map({ $0 as! [String: SourceKitRepresentable] })File.swift:209 private func dictWithCommentMarkNamesCursorInfo(dictionary: [String: SourceKitRepresentable], cursorInfoRequest: sourcekitd_object_t) -> [String: SourceKitRepresentable]? {File.swift:209 private func dictWithCommentMarkNamesCursorInfo(dictionary: [String: SourceKitRepresentable], cursorInfoRequest: sourcekitd_object_t) -> [String: SourceKitRepresentable]? {File.swift:220 atOffset: SwiftDocKey.getNameOffset(dictionary)!) ?? [String: SourceKitRepresentable]()File.swift:238 private func shouldInsert(parent: [String: SourceKitRepresentable], offset: Int64) -> Bool {File.swift:255 private func insertDoc(doc: [String: SourceKitRepresentable], parent: [String: SourceKitRepresentable], offset: Int64) -> [String: SourceKitRepresentable]? {File.swift:255 private func insertDoc(doc: [String: SourceKitRepresentable], parent: [String: SourceKitRepresentable], offset: Int64) -> [String: SourceKitRepresentable]? {File.swift:255 private func insertDoc(doc: [String: SourceKitRepresentable], parent: [String: SourceKitRepresentable], offset: Int64) -> [String: SourceKitRepresentable]? {File.swift:261 if SwiftDocKey.getOffset(structure as! [String: SourceKitRepresentable])! < offset {File.swift:271 if let subArray = parent[key] as? [SourceKitRepresentable] {File.swift:274 if let subDict = insertDoc(doc, parent: subArray[i] as! [String: SourceKitRepresentable], offset: offset) {File.swift:291 internal func shouldTreatAsSameFile(dictionary: [String: SourceKitRepresentable]) -> Bool {File.swift:300 private func shouldParseDeclaration(dictionary: [String: SourceKitRepresentable]) -> Bool {File.swift:318 public func getDocumentationCommentBody(dictionary: [String: SourceKitRepresentable], syntaxMap: SyntaxMap) -> String? {File.swift:339 private func isDeclarationOrCommentMark(dictionary: [String: SourceKitRepresentable]) -> Bool {File.swift:354 public func parseFullXMLDocs(xmlDocs: String) -> [String: SourceKitRepresentable]? {File.swift:392 private func childrenAsArray(indexer: XMLIndexer) -> [SourceKitRepresentable]? {JSONOutput.swift:35 public func toAnyObject(dictionary: [String: SourceKitRepresentable]) -> [String: AnyObject] {JSONOutput.swift:41 case let object as [SourceKitRepresentable]:JSONOutput.swift:42 anyDictionary[key] = object.map { toAnyObject($0 as! [String: SourceKitRepresentable]) }JSONOutput.swift:43 case let object as [[String: SourceKitRepresentable]]:JSONOutput.swift:45 case let object as [String: SourceKitRepresentable]:OffsetMap.swift:26 public func generateOffsetMap(documentedTokenOffsets: [Int], dictionary: [String: SourceKitRepresentable]) -> OffsetMap {OffsetMap.swift:49 private func mapOffsets(dictionary: [String: SourceKitRepresentable], offsetMap: OffsetMap) -> OffsetMap {OffsetMap.swift:68 offsetMap = mapOffsets(subDict as! [String: SourceKitRepresentable], offsetMap: offsetMap)Request.swift:15 func isEqualTo(rhs: SourceKitRepresentable) -> BoolRequest.swift:17 extension Array: SourceKitRepresentable {}Request.swift:18 extension Dictionary: SourceKitRepresentable {}Request.swift:19 extension String: SourceKitRepresentable {}Request.swift:20 extension Int64: SourceKitRepresentable {}Request.swift:21 extension Bool: SourceKitRepresentable {}Request.swift:23 extension SourceKitRepresentable {Request.swift:24 public func isEqualTo(rhs: SourceKitRepresentable) -> Bool {Request.swift:26 case let lhs as [SourceKitRepresentable]:Request.swift:28 if let rhs = rhs as? [SourceKitRepresentable] where rhs[idx].isEqualTo(value) {Request.swift:34 case let lhs as [String: SourceKitRepresentable]:Request.swift:36 if let rhs = rhs as? [String: SourceKitRepresentable],Request.swift:55 private func fromSourceKit(sourcekitObject: sourcekitd_variant_t) -> SourceKitRepresentable? {Request.swift:58 var array = [SourceKitRepresentable]()Request.swift:72 var dict = [String: SourceKitRepresentable](minimumCapacity: count)Request.swift:248 internal static func sendCursorInfoRequest(request: sourcekitd_object_t, atOffset offset: Int64) -> [String: SourceKitRepresentable]? {Request.swift:261 public func send() -> [String: SourceKitRepresentable] {Request.swift:267 return fromSourceKit(sourcekitd_response_get_value(response)) as! [String: SourceKitRepresentable]Request.swift:311 public func failableSend() throws -> [String: SourceKitRepresentable] {Request.swift:333 return fromSourceKit(sourcekitd_response_get_value(response)) as! [String: SourceKitRepresentable]Structure.swift:14 public let dictionary: [String: SourceKitRepresentable]Structure.swift:21 public init(sourceKitResponse: [String: SourceKitRepresentable]) {SwiftDocKey.swift:88 private static func get<T>(key: SwiftDocKey, _ dictionary: [String: SourceKitRepresentable]) -> T? {SwiftDocKey.swift:99 internal static func getKind(dictionary: [String: SourceKitRepresentable]) -> String? {SwiftDocKey.swift:110 internal static func getSyntaxMap(dictionary: [String: SourceKitRepresentable]) -> [SourceKitRepresentable]? {SwiftDocKey.swift:110 internal static func getSyntaxMap(dictionary: [String: SourceKitRepresentable]) -> [SourceKitRepresentable]? {SwiftDocKey.swift:121 internal static func getOffset(dictionary: [String: SourceKitRepresentable]) -> Int64? {SwiftDocKey.swift:132 internal static func getLength(dictionary: [String: SourceKitRepresentable]) -> Int64? {SwiftDocKey.swift:143 internal static func getTypeName(dictionary: [String: SourceKitRepresentable]) -> String? {SwiftDocKey.swift:154 internal static func getAnnotatedDeclaration(dictionary: [String: SourceKitRepresentable]) -> String? {SwiftDocKey.swift:165 internal static func getSubstructure(dictionary: [String: SourceKitRepresentable]) -> [SourceKitRepresentable]? {SwiftDocKey.swift:165 internal static func getSubstructure(dictionary: [String: SourceKitRepresentable]) -> [SourceKitRepresentable]? {SwiftDocKey.swift:176 internal static func getNameOffset(dictionary: [String: SourceKitRepresentable]) -> Int64? {SwiftDocKey.swift:187 internal static func getNameLength(dictionary: [String: SourceKitRepresentable]) -> Int64? {SwiftDocKey.swift:198 internal static func getBodyOffset(dictionary: [String: SourceKitRepresentable]) -> Int64? {SwiftDocKey.swift:209 internal static func getBodyLength(dictionary: [String: SourceKitRepresentable]) -> Int64? {SwiftDocKey.swift:220 internal static func getFilePath(dictionary: [String: SourceKitRepresentable]) -> String? {SwiftDocKey.swift:231 internal static func getFullXMLDocs(dictionary: [String: SourceKitRepresentable]) -> String? {SwiftDocs.swift:20 public let docsDictionary: [String: SourceKitRepresentable]SwiftDocs.swift:50 public init(file: File, dictionary: [String: SourceKitRepresentable], cursorInfoRequest: sourcekitd_object_t?) {SwiftDocs.swift:53 let syntaxMapData = dictionary.removeValueForKey(SwiftDocKey.SyntaxMap.rawValue) as! [SourceKitRepresentable]SyntaxMap.swift:30 public init(data: [SourceKitRepresentable]) {SyntaxMap.swift:32 let dict = item as! [String: SourceKitRepresentable]SyntaxMap.swift:42 public init(sourceKitResponse: [String: SourceKitRepresentable]) {(rhs: SourceKitRepresentable) -> Bool 0016 } 0017 extension Array: SourceKitRepresentable {} 0018 extension Dictionary: SourceKitRepresentable {} 0019 extension String: SourceKitRepresentable {} 0020 extension Int64: SourceKitRepresentable {} 0021 extension Bool: SourceKitRepresentable {} 0022 0023 extension SourceKitRepresentable { 0024 public func isEqualTo
Request.swift:28 if let rhs = rhs as? [SourceKitRepresentable] where rhs[idx].isEqualTo(value) {Request.swift:37 rhsValue = rhs[key] where rhsValue.isEqualTo(value) {(rhs: SourceKitRepresentable) -> Bool { 0025 switch self { 0026 case let lhs as [SourceKitRepresentable]: 0027 for (idx, value) in lhs.enumerate() { 0028 if let rhs = rhs as? [SourceKitRepresentable] where rhs[idx].isEqualTo(value) { 0029 continue 0030 } 0031 return false 0032 } 0033 return true 0034 case let lhs as [String: SourceKitRepresentable]: 0035 for (key, value) in lhs { 0036 if let rhs = rhs as? [String: SourceKitRepresentable], 0037 rhsValue = rhs[key] where rhsValue.isEqualTo(value) { 0038 continue 0039 } 0040 return false 0041 } 0042 return true 0043 case let lhs as String: 0044 return lhs == rhs as? String 0045 case let lhs as Int64: 0046 return lhs == rhs as? Int64 0047 case let lhs as Bool: 0048 return lhs == rhs as? Bool 0049 default: 0050 fatalError("Should never happen because we've checked all SourceKitRepresentable types") 0051 } 0052 } 0053 } 0054 0055 private func fromSourceKit
Structure.swift:57 return lhs.dictionary.isEqualTo(rhs.dictionary)(sourcekitObject: sourcekitd_variant_t) -> SourceKitRepresentable? { 0056 switch sourcekitd_variant_get_type(sourcekitObject) { 0057 case SOURCEKITD_VARIANT_TYPE_ARRAY: 0058 var array = [SourceKitRepresentable]() 0059 sourcekitd_variant_array_apply(sourcekitObject) { index, value in 0060 if let value = fromSourceKit(value) { 0061 array.insert(value, atIndex: Int(index)) 0062 } 0063 return true 0064 } 0065 return array 0066 case SOURCEKITD_VARIANT_TYPE_DICTIONARY: 0067 var count: Int = 0 0068 sourcekitd_variant_dictionary_apply(sourcekitObject) { _, _ in 0069 count += 1 0070 return true 0071 } 0072 var dict = [String: SourceKitRepresentable](minimumCapacity: count) 0073 sourcekitd_variant_dictionary_apply(sourcekitObject) { key, value in 0074 if let key = stringForSourceKitUID(key), value = fromSourceKit(value) { 0075 dict[key] = value 0076 } 0077 return true 0078 } 0079 return dict 0080 case SOURCEKITD_VARIANT_TYPE_STRING: 0081 return swiftStringFrom(sourcekitd_variant_string_get_ptr(sourcekitObject), 0082 length: sourcekitd_variant_string_get_length(sourcekitObject))! 0083 case SOURCEKITD_VARIANT_TYPE_INT64: 0084 return sourcekitd_variant_int64_get_value(sourcekitObject) 0085 case SOURCEKITD_VARIANT_TYPE_BOOL: 0086 return sourcekitd_variant_bool_get_value(sourcekitObject) 0087 case SOURCEKITD_VARIANT_TYPE_UID: 0088 return stringForSourceKitUID(sourcekitd_variant_uid_get_value(sourcekitObject))! 0089 case SOURCEKITD_VARIANT_TYPE_NULL: 0090 return nil 0091 default: 0092 fatalError("Should never happen because we've checked all SourceKitRepresentable types") 0093 } 0094 } 0095 0096 /// dispatch_once_t token used to only initialize SourceKit once per session. 0097 private var sourceKitInitializationToken
Request.swift:60 if let value = fromSourceKit(value) {Request.swift:74 if let key = stringForSourceKitUID(key), value = fromSourceKit(value) {Request.swift:267 return fromSourceKit(sourcekitd_response_get_value(response)) as! [String: SourceKitRepresentable]Request.swift:333 return fromSourceKit(sourcekitd_response_get_value(response)) as! [String: SourceKitRepresentable]: dispatch_once_t = 0 0098 0099 /// dispatch_semaphore_t used when waiting for sourcekitd to be restored. 0100 private var sourceKitWaitingRestoredSemaphore
Request.swift:262 dispatch_once(&sourceKitInitializationToken) {Request.swift:312 dispatch_once(&sourceKitInitializationToken) {= dispatch_semaphore_create(0) 0101 private let sourceKitWaitingRestoredTimeout
Request.swift:318 dispatch_semaphore_signal(sourceKitWaitingRestoredSemaphore)Request.swift:328 dispatch_semaphore_wait(sourceKitWaitingRestoredSemaphore,= Int64(10 * NSEC_PER_SEC) 0102 0103 /// SourceKit UID to String map. 0104 private var uidStringMap
Request.swift:329 dispatch_time(DISPATCH_TIME_NOW, sourceKitWaitingRestoredTimeout))= [sourcekitd_uid_t: String]() 0105 0106 /** 0107 Cache SourceKit requests for strings from UIDs 0108 0109 - parameter uid: UID received from sourcekitd* responses. 0110 0111 - returns: Cached UID string if available, nil otherwise. 0112 */ 0113 internal func stringForSourceKitUID
Request.swift:114 if let string = uidStringMap[uid] {Request.swift:133 uidStringMap[uid] = uidString(uid: sourcekitd_uid_t) -> String? { 0114 if let string = uidStringMap[uid] { 0115 return string 0116 } 0117 let length = sourcekitd_uid_get_length(uid) 0118 let pointer = UnsafeMutablePointer<Int8>(sourcekitd_uid_get_string_ptr(uid)) 0119 if let uidString = String(bytesNoCopy: pointer, length: length, 0120 encoding: NSUTF8StringEncoding, freeWhenDone: false) { 0121 /* 0122 `String` created by `String(UTF8String:)` is based on `NSString`. 0123 `NSString` base `String` has performance penalty on getting `hashValue`. 0124 Everytime on getting `hashValue`, it calls `decomposedStringWithCanonicalMapping` for 0125 "Unicode Normalization Form D" and creates autoreleased `CFString (mutable)` and 0126 `CFString (store)`. Those `CFString` are created every time on using `hashValue`, such as 0127 using `String` for Dictionary's key or adding to Set. 0128 0129 For avoiding those penalty, replaces with enum's rawValue String if defined in SourceKitten. 0130 That does not cause calling `decomposedStringWithCanonicalMapping`. 0131 */ 0132 let uidString = sourceKittenRawValueStringFrom(uidString) ?? "\(uidString)" 0133 uidStringMap[uid] = uidString 0134 return uidString 0135 } 0136 return nil 0137 } 0138 0139 /** 0140 Returns SourceKitten defined enum's rawValue String from string 0141 0142 - parameter uidString: String created from sourcekitd_uid_get_string_ptr(). 0143 0144 - returns: rawValue String if defined in SourceKitten, nil otherwise. 0145 */ 0146 private func sourceKittenRawValueStringFrom
Request.swift:74 if let key = stringForSourceKitUID(key), value = fromSourceKit(value) {Request.swift:88 return stringForSourceKitUID(sourcekitd_variant_uid_get_value(sourcekitObject))!(uidString: String) -> String? { 0147 return SwiftDocKey(rawValue: uidString)?.rawValue ?? 0148 SwiftDeclarationKind(rawValue: uidString)?.rawValue ?? 0149 SyntaxKind(rawValue: uidString)?.rawValue 0150 } 0151 0152 /** 0153 Returns Swift's native String from NSUTF8StringEncoding bytes and length 0154 0155 `String(UTF8String:)` creates `String` based on `NSString`. 0156 That is slower than Swift's native String on some scene. 0157 0158 - parameter bytes: UnsafePointer<Int8> 0159 - parameter length: length of bytes 0160 0161 - returns: String Swift's native String 0162 */ 0163 private func swiftStringFrom
Request.swift:132 let uidString = sourceKittenRawValueStringFrom(uidString) ?? "\(uidString)"(bytes: UnsafePointer<Int8>, length: Int) -> String? { 0164 let pointer = UnsafeMutablePointer<Int8>(bytes) 0165 return String(bytesNoCopy: pointer, length: length, encoding: NSUTF8StringEncoding, 0166 freeWhenDone: false).map { "\($0)" } 0167 } 0168 0169 /// Represents a SourceKit request. 0170 public enum Request
Request.swift:81 return swiftStringFrom(sourcekitd_variant_string_get_ptr(sourcekitObject),{ 0171 /// An `editor.open` request for the given File. 0172 case EditorOpen
File.swift:172 if let response = Request.sendCursorInfoRequest(cursorInfoRequest, atOffset: Int64(offset)).map({ processDictionary($0, cursorInfoRequest: nil, syntaxMap: syntaxMap) }),File.swift:219 var updateDict = Request.sendCursorInfoRequest(cursorInfoRequest,Request.swift:235 return Request.CursorInfo(file: path, offset: 0, arguments: arguments).sourcekitObjectRequest.swift:253 return try? Request.CustomRequest(request).failableSend()Request.swift:326 let error = Request.Error(response: response)Request.swift:339 extension Request: CustomStringConvertible {Structure.swift:33 self.init(sourceKitResponse: Request.EditorOpen(file).send())SwiftDocs.swift:32 dictionary: try Request.EditorOpen(file).failableSend(),SwiftDocs.swift:33 cursorInfoRequest: Request.cursorInfoRequestForFilePath(file.path, arguments: arguments)SwiftDocs.swift:35 } catch let error as Request.Error {SyntaxMap.swift:52 self.init(sourceKitResponse: Request.EditorOpen(file).send())(File) 0173 /// A `cursorinfo` request for an offset in the given file, using the `arguments` given. 0174 case CursorInfo
Request.swift:184 case .EditorOpen(let file):Structure.swift:33 self.init(sourceKitResponse: Request.EditorOpen(file).send())SwiftDocs.swift:32 dictionary: try Request.EditorOpen(file).failableSend(),SyntaxMap.swift:52 self.init(sourceKitResponse: Request.EditorOpen(file).send())(file: String, offset: Int64, arguments: [String]) 0175 /// A custom request by passing in the sourcekitd_object_t directly. 0176 case CustomRequest
Request.swift:198 case .CursorInfo(let file, let offset, let arguments):Request.swift:235 return Request.CursorInfo(file: path, offset: 0, arguments: arguments).sourcekitObject(sourcekitd_object_t) 0177 /// A `codecomplete` request by passing in the file name, contents, offset 0178 /// for which to generate code completion options and array of compiler arguments. 0179 case CodeCompletionRequest
Request.swift:207 case .CustomRequest(let request):Request.swift:253 return try? Request.CustomRequest(request).failableSend()(file: String, contents: String, offset: Int64, arguments: [String]) 0180 0181 private var sourcekitObject
Request.swift:209 case .CodeCompletionRequest(let file, let contents, let offset, let arguments):: sourcekitd_object_t { 0182 var dict: [sourcekitd_uid_t : sourcekitd_object_t] 0183 switch self { 0184 case .EditorOpen(let file): 0185 if let path = file.path { 0186 dict = [ 0187 sourcekitd_uid_get_from_cstr("key.request"): sourcekitd_request_uid_create(sourcekitd_uid_get_from_cstr("source.request.editor.open")), 0188 sourcekitd_uid_get_from_cstr("key.name"): sourcekitd_request_string_create(path), 0189 sourcekitd_uid_get_from_cstr("key.sourcefile"): sourcekitd_request_string_create(path) 0190 ] 0191 } else { 0192 dict = [ 0193 sourcekitd_uid_get_from_cstr("key.request"): sourcekitd_request_uid_create(sourcekitd_uid_get_from_cstr("source.request.editor.open")), 0194 sourcekitd_uid_get_from_cstr("key.name"): sourcekitd_request_string_create(String(file.contents.hash)), 0195 sourcekitd_uid_get_from_cstr("key.sourcetext"): sourcekitd_request_string_create(file.contents) 0196 ] 0197 } 0198 case .CursorInfo(let file, let offset, let arguments): 0199 var compilerargs = arguments.map({ sourcekitd_request_string_create($0) }) 0200 dict = [ 0201 sourcekitd_uid_get_from_cstr("key.request"): sourcekitd_request_uid_create(sourcekitd_uid_get_from_cstr("source.request.cursorinfo")), 0202 sourcekitd_uid_get_from_cstr("key.name"): sourcekitd_request_string_create(file), 0203 sourcekitd_uid_get_from_cstr("key.sourcefile"): sourcekitd_request_string_create(file), 0204 sourcekitd_uid_get_from_cstr("key.offset"): sourcekitd_request_int64_create(offset), 0205 sourcekitd_uid_get_from_cstr("key.compilerargs"): sourcekitd_request_array_create(&compilerargs, compilerargs.count) 0206 ] 0207 case .CustomRequest(let request): 0208 return request 0209 case .CodeCompletionRequest(let file, let contents, let offset, let arguments): 0210 var compilerargs = arguments.map({ sourcekitd_request_string_create($0) }) 0211 dict = [ 0212 sourcekitd_uid_get_from_cstr("key.request"): sourcekitd_request_uid_create(sourcekitd_uid_get_from_cstr("source.request.codecomplete")), 0213 sourcekitd_uid_get_from_cstr("key.name"): sourcekitd_request_string_create(file), 0214 sourcekitd_uid_get_from_cstr("key.sourcefile"): sourcekitd_request_string_create(file), 0215 sourcekitd_uid_get_from_cstr("key.sourcetext"): sourcekitd_request_string_create(contents), 0216 sourcekitd_uid_get_from_cstr("key.offset"): sourcekitd_request_int64_create(offset), 0217 sourcekitd_uid_get_from_cstr("key.compilerargs"): sourcekitd_request_array_create(&compilerargs, compilerargs.count) 0218 ] 0219 } 0220 var keys = Array(dict.keys) 0221 var values = Array(dict.values) 0222 return sourcekitd_request_dictionary_create(&keys, &values, dict.count) 0223 } 0224 0225 /** 0226 Create a Request.CursorInfo.sourcekitObject() from a file path and compiler arguments. 0227 0228 - parameter filePath: Path of the file to create request. 0229 - parameter arguments: Compiler arguments. 0230 0231 - returns: sourcekitd_object_t representation of the Request, if successful. 0232 */ 0233 internal static func cursorInfoRequestForFilePath
Request.swift:235 return Request.CursorInfo(file: path, offset: 0, arguments: arguments).sourcekitObjectRequest.swift:265 let response = sourcekitd_send_request_sync(sourcekitObject)Request.swift:323 let response = sourcekitd_send_request_sync(sourcekitObject)Request.swift:341 public var description: String { return String(UTF8String: sourcekitd_request_description_copy(sourcekitObject))! }(filePath: String?, arguments: [String]) -> sourcekitd_object_t? { 0234 if let path = filePath { 0235 return Request.CursorInfo(file: path, offset: 0, arguments: arguments).sourcekitObject 0236 } 0237 return nil 0238 } 0239 0240 /** 0241 Send a Request.CursorInfo by updating its offset. Returns SourceKit response if successful. 0242 0243 - parameter request: sourcekitd_object_t representation of Request.CursorInfo 0244 - parameter offset: Offset to update request. 0245 0246 - returns: SourceKit response if successful. 0247 */ 0248 internal static func sendCursorInfoRequest
SwiftDocs.swift:33 cursorInfoRequest: Request.cursorInfoRequestForFilePath(file.path, arguments: arguments)(request: sourcekitd_object_t, atOffset offset: Int64) -> [String: SourceKitRepresentable]? { 0249 if offset == 0 { 0250 return nil 0251 } 0252 sourcekitd_request_dictionary_set_int64(request, sourcekitd_uid_get_from_cstr(SwiftDocKey.Offset.rawValue), offset) 0253 return try? Request.CustomRequest(request).failableSend() 0254 } 0255 0256 /** 0257 Sends the request to SourceKit and return the response as an [String: SourceKitRepresentable]. 0258 0259 - returns: SourceKit output as a dictionary. 0260 */ 0261 public func send
File.swift:172 if let response = Request.sendCursorInfoRequest(cursorInfoRequest, atOffset: Int64(offset)).map({ processDictionary($0, cursorInfoRequest: nil, syntaxMap: syntaxMap) }),File.swift:219 var updateDict = Request.sendCursorInfoRequest(cursorInfoRequest,() -> [String: SourceKitRepresentable] { 0262 dispatch_once(&sourceKitInitializationToken) { 0263 sourcekitd_initialize() 0264 } 0265 let response = sourcekitd_send_request_sync(sourcekitObject) 0266 defer { sourcekitd_response_dispose(response) } 0267 return fromSourceKit(sourcekitd_response_get_value(response)) as! [String: SourceKitRepresentable] 0268 } 0269 0270 /// A enum representation of SOURCEKITD_ERROR_* 0271 public enum Error
Structure.swift:33 self.init(sourceKitResponse: Request.EditorOpen(file).send())SyntaxMap.swift:52 self.init(sourceKitResponse: Request.EditorOpen(file).send()): ErrorType, CustomStringConvertible { 0272 case ConnectionInterrupted
Request.swift:326 let error = Request.Error(response: response)SwiftDocs.swift:35 } catch let error as Request.Error {(String?) 0273 case Invalid
Request.swift:285 case .ConnectionInterrupted(let string): return stringRequest.swift:296 case SOURCEKITD_ERROR_CONNECTION_INTERRUPTED: self = .ConnectionInterrupted(description)Request.swift:327 if case .ConnectionInterrupted = error {(String?) 0274 case Failed
Request.swift:286 case .Invalid(let string): return stringRequest.swift:297 case SOURCEKITD_ERROR_REQUEST_INVALID: self = .Invalid(description)(String?) 0275 case Cancelled
Request.swift:287 case .Failed(let string): return stringRequest.swift:298 case SOURCEKITD_ERROR_REQUEST_FAILED: self = .Failed(description)(String?) 0276 case Unknown
Request.swift:288 case .Cancelled(let string): return stringRequest.swift:299 case SOURCEKITD_ERROR_REQUEST_CANCELLED: self = .Cancelled(description)(String?) 0277 0278 /// A textual representation of `self`. 0279 public var description
Request.swift:289 case .Unknown(let string): return stringRequest.swift:300 default: self = .Unknown(description): String { 0280 return getDescription() ?? "no description" 0281 } 0282 0283 private func getDescription
SwiftDocs.swift:36 fputs(error.description, stderr)() -> String? { 0284 switch self { 0285 case .ConnectionInterrupted(let string): return string 0286 case .Invalid(let string): return string 0287 case .Failed(let string): return string 0288 case .Cancelled(let string): return string 0289 case .Unknown(let string): return string 0290 } 0291 } 0292 0293 private init
Request.swift:280 return getDescription() ?? "no description"(response: sourcekitd_response_t) { 0294 let description = String(UTF8String: sourcekitd_response_error_get_description(response)) 0295 switch sourcekitd_response_error_get_kind(response) { 0296 case SOURCEKITD_ERROR_CONNECTION_INTERRUPTED: self = .ConnectionInterrupted(description) 0297 case SOURCEKITD_ERROR_REQUEST_INVALID: self = .Invalid(description) 0298 case SOURCEKITD_ERROR_REQUEST_FAILED: self = .Failed(description) 0299 case SOURCEKITD_ERROR_REQUEST_CANCELLED: self = .Cancelled(description) 0300 default: self = .Unknown(description) 0301 } 0302 } 0303 } 0304 0305 /** 0306 Sends the request to SourceKit and return the response as an [String: SourceKitRepresentable]. 0307 0308 - returns: SourceKit output as a dictionary. 0309 - throws: Request.Error on fail () 0310 */ 0311 public func failableSend
Request.swift:326 let error = Request.Error(response: response)() throws -> [String: SourceKitRepresentable] { 0312 dispatch_once(&sourceKitInitializationToken) { 0313 sourcekitd_initialize() 0314 sourcekitd_set_notification_handler() { response in 0315 if !sourcekitd_response_is_error(response) { 0316 fflush(stdout) 0317 fputs("sourcekitten: connection to SourceKitService restored!\n", stderr) 0318 dispatch_semaphore_signal(sourceKitWaitingRestoredSemaphore) 0319 } 0320 sourcekitd_response_dispose(response) 0321 } 0322 } 0323 let response = sourcekitd_send_request_sync(sourcekitObject) 0324 defer { sourcekitd_response_dispose(response) } 0325 if sourcekitd_response_is_error(response) { 0326 let error = Request.Error(response: response) 0327 if case .ConnectionInterrupted = error { 0328 dispatch_semaphore_wait(sourceKitWaitingRestoredSemaphore, 0329 dispatch_time(DISPATCH_TIME_NOW, sourceKitWaitingRestoredTimeout)) 0330 } 0331 throw error 0332 } 0333 return fromSourceKit(sourcekitd_response_get_value(response)) as! [String: SourceKitRepresentable] 0334 } 0335 } 0336 0337 // MARK: CustomStringConvertible 0338 0339 extension Request: CustomStringConvertible { 0340 /// A textual representation of `Request`. 0341 public var description: String { return String(UTF8String: sourcekitd_request_description_copy(sourcekitObject))! } 0342 } 0343
Request.swift:253 return try? Request.CustomRequest(request).failableSend()SwiftDocs.swift:32 dictionary: try Request.EditorOpen(file).failableSend(),