@@ -195,8 +195,8 @@ public enum Request {
195195 case editorOpen( file: File )
196196 /// A `cursorinfo` request for an offset in the given file, using the `arguments` given.
197197 case cursorInfo( file: String , offset: Int64 , arguments: [ String ] )
198- /// A custom request by passing in the sourcekitd_object_t directly.
199- case customRequest( request: sourcekitd_object_t )
198+ /// A custom request by passing in the `SourceKitObject` directly.
199+ case customRequest( request: SourceKitObject )
200200 /// A request generated by sourcekit using the yaml representation.
201201 case yamlRequest( yaml: String )
202202 /// A `codecomplete` request by passing in the file name, contents, offset
@@ -217,45 +217,42 @@ public enum Request {
217217 /// A documentation request for the given module.
218218 case moduleInfo( module: String , arguments: [ String ] )
219219
220- fileprivate var sourcekitObject : sourcekitd_object_t {
221- let dict : [ sourcekitd_uid_t : sourcekitd_object_t ? ]
220+ fileprivate var sourcekitObject : SourceKitObject {
222221 switch self {
223222 case . editorOpen( let file) :
224223 if let path = file. path {
225- dict = [
226- sourcekitd_uid_get_from_cstr ( " key.request " ) ! : sourcekitd_request_uid_create ( sourcekitd_uid_get_from_cstr ( " source.request.editor.open " ) ! ) ,
227- sourcekitd_uid_get_from_cstr ( " key.name " ) ! : sourcekitd_request_string_create ( path) ,
228- sourcekitd_uid_get_from_cstr ( " key.sourcefile " ) ! : sourcekitd_request_string_create ( path)
224+ return [
225+ " key.request " : UID ( " source.request.editor.open " ) ,
226+ " key.name " : path,
227+ " key.sourcefile " : path
229228 ]
230229 } else {
231- dict = [
232- sourcekitd_uid_get_from_cstr ( " key.request " ) ! : sourcekitd_request_uid_create ( sourcekitd_uid_get_from_cstr ( " source.request.editor.open " ) ! ) ,
233- sourcekitd_uid_get_from_cstr ( " key.name " ) ! : sourcekitd_request_string_create ( String ( file. contents. hash) ) ,
234- sourcekitd_uid_get_from_cstr ( " key.sourcetext " ) ! : sourcekitd_request_string_create ( file. contents)
230+ return [
231+ " key.request " : UID ( " source.request.editor.open " ) ,
232+ " key.name " : String ( file. contents. hash) ,
233+ " key.sourcetext " : file. contents
235234 ]
236235 }
237236 case . cursorInfo( let file, let offset, let arguments) :
238- var compilerargs = arguments. map ( { sourcekitd_request_string_create ( $0) } )
239- dict = [
240- sourcekitd_uid_get_from_cstr ( " key.request " ) !: sourcekitd_request_uid_create ( sourcekitd_uid_get_from_cstr ( " source.request.cursorinfo " ) !) ,
241- sourcekitd_uid_get_from_cstr ( " key.name " ) !: sourcekitd_request_string_create ( file) ,
242- sourcekitd_uid_get_from_cstr ( " key.sourcefile " ) !: sourcekitd_request_string_create ( file) ,
243- sourcekitd_uid_get_from_cstr ( " key.offset " ) !: sourcekitd_request_int64_create ( offset) ,
244- sourcekitd_uid_get_from_cstr ( " key.compilerargs " ) !: sourcekitd_request_array_create ( & compilerargs, compilerargs. count)
237+ return [
238+ " key.request " : UID ( " source.request.cursorinfo " ) ,
239+ " key.name " : file,
240+ " key.sourcefile " : file,
241+ " key.offset " : offset,
242+ " key.compilerargs " : arguments
245243 ]
246244 case . customRequest( let request) :
247245 return request
248246 case . yamlRequest( let yaml) :
249- return sourcekitd_request_create_from_yaml ( yaml, nil ) !
247+ return . init ( sourcekitd_request_create_from_yaml ( yaml, nil ) !)
250248 case . codeCompletionRequest( let file, let contents, let offset, let arguments) :
251- var compilerargs = arguments. map ( { sourcekitd_request_string_create ( $0) } )
252- dict = [
253- sourcekitd_uid_get_from_cstr ( " key.request " ) !: sourcekitd_request_uid_create ( sourcekitd_uid_get_from_cstr ( " source.request.codecomplete " ) !) ,
254- sourcekitd_uid_get_from_cstr ( " key.name " ) !: sourcekitd_request_string_create ( file) ,
255- sourcekitd_uid_get_from_cstr ( " key.sourcefile " ) !: sourcekitd_request_string_create ( file) ,
256- sourcekitd_uid_get_from_cstr ( " key.sourcetext " ) !: sourcekitd_request_string_create ( contents) ,
257- sourcekitd_uid_get_from_cstr ( " key.offset " ) !: sourcekitd_request_int64_create ( offset) ,
258- sourcekitd_uid_get_from_cstr ( " key.compilerargs " ) !: sourcekitd_request_array_create ( & compilerargs, compilerargs. count)
249+ return [
250+ " key.request " : UID ( " source.request.codecomplete " ) ,
251+ " key.name " : file,
252+ " key.sourcefile " : file,
253+ " key.sourcetext " : contents,
254+ " key.offset " : offset,
255+ " key.compilerargs " : arguments
259256 ]
260257 case . interface( let file, let uuid, var arguments) :
261258 if !arguments. contains ( " -x " ) {
@@ -264,70 +261,58 @@ public enum Request {
264261 if !arguments. contains ( " -isysroot " ) {
265262 arguments. append ( contentsOf: [ " -isysroot " , sdkPath ( ) ] )
266263 }
267- var compilerargs = ( [ file] + arguments) . map ( { sourcekitd_request_string_create ( $0) } )
268- dict = [
269- sourcekitd_uid_get_from_cstr ( " key.request " ) !:
270- sourcekitd_request_uid_create ( sourcekitd_uid_get_from_cstr ( " source.request.editor.open.interface.header " ) !) ,
271- sourcekitd_uid_get_from_cstr ( " key.name " ) !: sourcekitd_request_string_create ( uuid) ,
272- sourcekitd_uid_get_from_cstr ( " key.filepath " ) !: sourcekitd_request_string_create ( file) ,
273- sourcekitd_uid_get_from_cstr ( " key.compilerargs " ) !: sourcekitd_request_array_create ( & compilerargs, compilerargs. count)
264+ return [
265+ " key.request " : UID ( " source.request.editor.open.interface.header " ) ,
266+ " key.name " : uuid,
267+ " key.filepath " : file,
268+ " key.compilerargs " : [ file] + arguments
274269 ]
275270 case . findUSR( let file, let usr) :
276- dict = [
277- sourcekitd_uid_get_from_cstr ( " key.request " ) ! : sourcekitd_request_uid_create ( sourcekitd_uid_get_from_cstr ( " source.request.editor.find_usr " ) ! ) ,
278- sourcekitd_uid_get_from_cstr ( " key.usr " ) ! : sourcekitd_request_string_create ( usr) ,
279- sourcekitd_uid_get_from_cstr ( " key.sourcefile " ) ! : sourcekitd_request_string_create ( file)
271+ return [
272+ " key.request " : UID ( " source.request.editor.find_usr " ) ,
273+ " key.usr " : usr,
274+ " key.sourcefile " : file
280275 ]
281276 case . index( let file, let arguments) :
282- var compilerargs = arguments. map ( { sourcekitd_request_string_create ( $0) } )
283- dict = [
284- sourcekitd_uid_get_from_cstr ( " key.request " ) !: sourcekitd_request_uid_create ( sourcekitd_uid_get_from_cstr ( " source.request.indexsource " ) !) ,
285- sourcekitd_uid_get_from_cstr ( " key.sourcefile " ) !: sourcekitd_request_string_create ( file) ,
286- sourcekitd_uid_get_from_cstr ( " key.compilerargs " ) !: sourcekitd_request_array_create ( & compilerargs, compilerargs. count)
277+ return [
278+ " key.request " : UID ( " source.request.indexsource " ) ,
279+ " key.sourcefile " : file,
280+ " key.compilerargs " : arguments
287281 ]
288282 case . format( let file, let line, let useTabs, let indentWidth) :
289- let formatOptions = [
290- sourcekitd_uid_get_from_cstr ( " key.editor.format.indentwidth " ) !: sourcekitd_request_int64_create ( indentWidth) ,
291- sourcekitd_uid_get_from_cstr ( " key.editor.format.tabwidth " ) !: sourcekitd_request_int64_create ( indentWidth) ,
292- sourcekitd_uid_get_from_cstr ( " key.editor.format.usetabs " ) !: sourcekitd_request_int64_create ( useTabs ? 1 : 0 )
293- ]
294- var formatOptionsKeys = Array ( formatOptions. keys. map ( { $0 as sourcekitd_uid_t ? } ) )
295- var formatOptionsValues = Array ( formatOptions. values)
296- dict = [
297- sourcekitd_uid_get_from_cstr ( " key.request " ) !: sourcekitd_request_uid_create ( sourcekitd_uid_get_from_cstr ( " source.request.editor.formattext " ) !) ,
298- sourcekitd_uid_get_from_cstr ( " key.name " ) !: sourcekitd_request_string_create ( file) ,
299- sourcekitd_uid_get_from_cstr ( " key.line " ) !: sourcekitd_request_int64_create ( line) ,
300- sourcekitd_uid_get_from_cstr ( " key.editor.format.options " ) !:
301- sourcekitd_request_dictionary_create ( & formatOptionsKeys, & formatOptionsValues, formatOptions. count)
283+ return [
284+ " key.request " : UID ( " source.request.editor.formattext " ) ,
285+ " key.name " : file,
286+ " key.line " : line,
287+ " key.editor.format.options " : [
288+ " key.editor.format.indentwidth " : indentWidth,
289+ " key.editor.format.tabwidth " : indentWidth,
290+ " key.editor.format.usetabs " : useTabs ? 1 : 0
291+ ]
302292 ]
303293 case . replaceText( let file, let offset, let length, let sourceText) :
304- dict = [
305- sourcekitd_uid_get_from_cstr ( " key.request " ) ! : sourcekitd_request_uid_create ( sourcekitd_uid_get_from_cstr ( " source.request.editor.replacetext " ) ! ) ,
306- sourcekitd_uid_get_from_cstr ( " key.name " ) ! : sourcekitd_request_string_create ( file) ,
307- sourcekitd_uid_get_from_cstr ( " key.offset " ) ! : sourcekitd_request_int64_create ( offset) ,
308- sourcekitd_uid_get_from_cstr ( " key.length " ) ! : sourcekitd_request_int64_create ( length) ,
309- sourcekitd_uid_get_from_cstr ( " key.sourcetext " ) ! : sourcekitd_request_string_create ( sourceText)
294+ return [
295+ " key.request " : UID ( " source.request.editor.replacetext " ) ,
296+ " key.name " : file,
297+ " key.offset " : offset,
298+ " key.length " : length,
299+ " key.sourcetext " : sourceText
310300 ]
311301 case . docInfo( let text, let arguments) :
312- var compilerargs = arguments. map ( { sourcekitd_request_string_create ( $0) } )
313- dict = [
314- sourcekitd_uid_get_from_cstr ( " key.request " ) !: sourcekitd_request_uid_create ( sourcekitd_uid_get_from_cstr ( " source.request.docinfo " ) !) ,
315- sourcekitd_uid_get_from_cstr ( " key.name " ) !: sourcekitd_request_string_create ( NSUUID ( ) . uuidString) ,
316- sourcekitd_uid_get_from_cstr ( " key.compilerargs " ) !: sourcekitd_request_array_create ( & compilerargs, compilerargs. count) ,
317- sourcekitd_uid_get_from_cstr ( " key.sourcetext " ) !: sourcekitd_request_string_create ( text)
302+ return [
303+ " key.request " : UID ( " source.request.docinfo " ) ,
304+ " key.name " : NSUUID ( ) . uuidString,
305+ " key.compilerargs " : arguments,
306+ " key.sourcetext " : text
318307 ]
319308 case . moduleInfo( let module, let arguments) :
320- var compilerargs = arguments. map ( { sourcekitd_request_string_create ( $0) } )
321- dict = [
322- sourcekitd_uid_get_from_cstr ( " key.request " ) !: sourcekitd_request_uid_create ( sourcekitd_uid_get_from_cstr ( " source.request.docinfo " ) !) ,
323- sourcekitd_uid_get_from_cstr ( " key.name " ) !: sourcekitd_request_string_create ( NSUUID ( ) . uuidString) ,
324- sourcekitd_uid_get_from_cstr ( " key.compilerargs " ) !: sourcekitd_request_array_create ( & compilerargs, compilerargs. count) ,
325- sourcekitd_uid_get_from_cstr ( " key.modulename " ) !: sourcekitd_request_string_create ( module)
309+ return [
310+ " key.request " : UID ( " source.request.docinfo " ) ,
311+ " key.name " : NSUUID ( ) . uuidString,
312+ " key.compilerargs " : arguments,
313+ " key.modulename " : module
326314 ]
327315 }
328- var keys = Array ( dict. keys. map ( { $0 as sourcekitd_uid_t ? } ) )
329- var values = Array ( dict. values)
330- return sourcekitd_request_dictionary_create ( & keys, & values, dict. count) !
331316 }
332317
333318 /**
@@ -338,7 +323,7 @@ public enum Request {
338323
339324 - returns: sourcekitd_object_t representation of the Request, if successful.
340325 */
341- internal static func cursorInfoRequest( filePath: String ? , arguments: [ String ] ) -> sourcekitd_object_t ? {
326+ internal static func cursorInfoRequest( filePath: String ? , arguments: [ String ] ) -> SourceKitObject ? {
342327 if let path = filePath {
343328 return Request . cursorInfo ( file: path, offset: 0 , arguments: arguments) . sourcekitObject
344329 }
@@ -353,11 +338,11 @@ public enum Request {
353338
354339 - returns: SourceKit response if successful.
355340 */
356- internal static func send( cursorInfoRequest: sourcekitd_object_t , atOffset offset: Int64 ) -> [ String : SourceKitRepresentable ] ? {
341+ internal static func send( cursorInfoRequest: SourceKitObject , atOffset offset: Int64 ) -> [ String : SourceKitRepresentable ] ? {
357342 if offset == 0 {
358343 return nil
359344 }
360- sourcekitd_request_dictionary_set_int64 ( cursorInfoRequest, sourcekitd_uid_get_from_cstr ( SwiftDocKey . offset. rawValue ) ! , offset)
345+ cursorInfoRequest. updateValue ( offset, forKey : SwiftDocKey . offset)
361346 return try ? Request . customRequest ( request: cursorInfoRequest) . send ( )
362347 }
363348
@@ -369,7 +354,7 @@ public enum Request {
369354 */
370355 public func send( ) throws -> [ String : SourceKitRepresentable ] {
371356 initializeSourceKitFailable
372- let response = sourcekitd_send_request_sync ( sourcekitObject)
357+ let response = sourcekitd_send_request_sync ( sourcekitObject. sourcekitdObject! )
373358 defer { sourcekitd_response_dispose ( response!) }
374359 if sourcekitd_response_is_error ( response!) {
375360 let error = Request . Error ( response: response!)
@@ -432,20 +417,16 @@ public enum Request {
432417
433418extension Request : CustomStringConvertible {
434419 /// A textual representation of `Request`.
435- public var description : String { return String ( validatingUTF8 : sourcekitd_request_description_copy ( sourcekitObject) ! ) ! }
420+ public var description : String { return sourcekitObject. description }
436421}
437422
438423private func interfaceForModule( _ module: String , compilerArguments: [ String ] ) throws -> [ String : SourceKitRepresentable ] {
439- var compilerargs = compilerArguments. map { sourcekitd_request_string_create ( $0) }
440- let dict = [
441- sourcekitd_uid_get_from_cstr ( " key.request " ) !: sourcekitd_request_uid_create ( sourcekitd_uid_get_from_cstr ( " source.request.editor.open.interface " ) !) ,
442- sourcekitd_uid_get_from_cstr ( " key.name " ) !: sourcekitd_request_string_create ( NSUUID ( ) . uuidString) ,
443- sourcekitd_uid_get_from_cstr ( " key.compilerargs " ) !: sourcekitd_request_array_create ( & compilerargs, compilerargs. count) ,
444- sourcekitd_uid_get_from_cstr ( " key.modulename " ) !: sourcekitd_request_string_create ( " SourceKittenFramework. \( module) " )
445- ]
446- var keys = Array ( dict. keys. map ( { $0 as sourcekitd_uid_t ? } ) )
447- var values = Array ( dict. values)
448- return try Request . customRequest ( request: sourcekitd_request_dictionary_create ( & keys, & values, dict. count) !) . send ( )
424+ return try Request . customRequest ( request: [
425+ " key.request " : UID ( " source.request.editor.open.interface " ) ,
426+ " key.name " : NSUUID ( ) . uuidString,
427+ " key.compilerargs " : compilerArguments,
428+ " key.modulename " : " SourceKittenFramework. \( module) "
429+ ] ) . send ( )
449430}
450431
451432extension String {
0 commit comments