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
CodeCompletionItem.swift:50
    public static func parseResponse(response: [String: SourceKitRepresentable]) -> [CodeCompletionItem] {
CodeCompletionItem.swift:51
        return (response["key.results"] as! [SourceKitRepresentable]).map { item in
CodeCompletionItem.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) -> Bool
Request.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]) {
{ 0015 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 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
Structure.swift:57
    return lhs.dictionary.isEqualTo(rhs.dictionary)
(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
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]
(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:262
        dispatch_once(&sourceKitInitializationToken) {
Request.swift:312
        dispatch_once(&sourceKitInitializationToken) {
: dispatch_once_t = 0 0098 0099 /// dispatch_semaphore_t used when waiting for sourcekitd to be restored. 0100 private var sourceKitWaitingRestoredSemaphore
Request.swift:318
                    dispatch_semaphore_signal(sourceKitWaitingRestoredSemaphore)
Request.swift:328
                dispatch_semaphore_wait(sourceKitWaitingRestoredSemaphore,
= dispatch_semaphore_create(0) 0101 private let sourceKitWaitingRestoredTimeout
Request.swift:329
                    dispatch_time(DISPATCH_TIME_NOW, sourceKitWaitingRestoredTimeout))
= Int64(10 * NSEC_PER_SEC) 0102 0103 /// SourceKit UID to String map. 0104 private var uidStringMap
Request.swift:114
    if let string = uidStringMap[uid] {
Request.swift:133
        uidStringMap[uid] = uidString
= [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:74
            if let key = stringForSourceKitUID(key), value = fromSourceKit(value) {
Request.swift:88
        return stringForSourceKitUID(sourcekitd_variant_uid_get_value(sourcekitObject))!
(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:132
        let uidString = sourceKittenRawValueStringFrom(uidString) ?? "\(uidString)"
(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:81
        return swiftStringFrom(sourcekitd_variant_string_get_ptr(sourcekitObject),
(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
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).sourcekitObject
Request.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())
{ 0171 /// An `editor.open` request for the given File. 0172 case EditorOpen
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) 0173 /// A `cursorinfo` request for an offset in the given file, using the `arguments` given. 0174 case CursorInfo
Request.swift:198
        case .CursorInfo(let file, let offset, let arguments):
Request.swift:235
            return Request.CursorInfo(file: path, offset: 0, arguments: arguments).sourcekitObject
(file: String, offset: Int64, arguments: [String]) 0175 /// A custom request by passing in the sourcekitd_object_t directly. 0176 case CustomRequest
Request.swift:207
        case .CustomRequest(let request):
Request.swift:253
        return try? Request.CustomRequest(request).failableSend()
(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:209
        case .CodeCompletionRequest(let file, let contents, let offset, let arguments):
(file: String, contents: String, offset: Int64, arguments: [String]) 0180 0181 private var sourcekitObject
Request.swift:235
            return Request.CursorInfo(file: path, offset: 0, arguments: arguments).sourcekitObject
Request.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))! }
: 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
SwiftDocs.swift:33
                cursorInfoRequest: Request.cursorInfoRequestForFilePath(file.path, arguments: arguments)
(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
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: 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
Structure.swift:33
        self.init(sourceKitResponse: Request.EditorOpen(file).send())
SyntaxMap.swift:52
        self.init(sourceKitResponse: Request.EditorOpen(file).send())
() -> [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
Request.swift:326
            let error = Request.Error(response: response)
SwiftDocs.swift:35
        } catch let error as Request.Error {
: ErrorType, CustomStringConvertible { 0272 case ConnectionInterrupted
Request.swift:285
            case .ConnectionInterrupted(let string): return string
Request.swift:296
            case SOURCEKITD_ERROR_CONNECTION_INTERRUPTED: self = .ConnectionInterrupted(description)
Request.swift:327
            if case .ConnectionInterrupted = error {
(String?) 0273 case Invalid
Request.swift:286
            case .Invalid(let string): return string
Request.swift:297
            case SOURCEKITD_ERROR_REQUEST_INVALID: self = .Invalid(description)
(String?) 0274 case Failed
Request.swift:287
            case .Failed(let string): return string
Request.swift:298
            case SOURCEKITD_ERROR_REQUEST_FAILED: self = .Failed(description)
(String?) 0275 case Cancelled
Request.swift:288
            case .Cancelled(let string): return string
Request.swift:299
            case SOURCEKITD_ERROR_REQUEST_CANCELLED: self = .Cancelled(description)
(String?) 0276 case Unknown
Request.swift:289
            case .Unknown(let string): return string
Request.swift:300
            default: self = .Unknown(description)
(String?) 0277 0278 /// A textual representation of `self`. 0279 public var description
SwiftDocs.swift:36
            fputs(error.description, stderr)
: String { 0280 return getDescription() ?? "no description" 0281 } 0282 0283 private func getDescription
Request.swift:280
            return getDescription() ?? "no description"
() -> 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:326
            let error = Request.Error(response: response)
(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:253
        return try? Request.CustomRequest(request).failableSend()
SwiftDocs.swift:32
                dictionary: try Request.EditorOpen(file).failableSend(),
() 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