@@ -195,8 +195,8 @@ public enum Request {
195
195
case editorOpen( file: File )
196
196
/// A `cursorinfo` request for an offset in the given file, using the `arguments` given.
197
197
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 )
200
200
/// A request generated by sourcekit using the yaml representation.
201
201
case yamlRequest( yaml: String )
202
202
/// A `codecomplete` request by passing in the file name, contents, offset
@@ -217,45 +217,42 @@ public enum Request {
217
217
/// A documentation request for the given module.
218
218
case moduleInfo( module: String , arguments: [ String ] )
219
219
220
- fileprivate var sourcekitObject : sourcekitd_object_t {
221
- let dict : [ sourcekitd_uid_t : sourcekitd_object_t ? ]
220
+ fileprivate var sourcekitObject : SourceKitObject {
222
221
switch self {
223
222
case . editorOpen( let file) :
224
223
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
229
228
]
230
229
} 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
235
234
]
236
235
}
237
236
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
245
243
]
246
244
case . customRequest( let request) :
247
245
return request
248
246
case . yamlRequest( let yaml) :
249
- return sourcekitd_request_create_from_yaml ( yaml, nil ) !
247
+ return . init ( sourcekitd_request_create_from_yaml ( yaml, nil ) !)
250
248
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
259
256
]
260
257
case . interface( let file, let uuid, var arguments) :
261
258
if !arguments. contains ( " -x " ) {
@@ -264,70 +261,58 @@ public enum Request {
264
261
if !arguments. contains ( " -isysroot " ) {
265
262
arguments. append ( contentsOf: [ " -isysroot " , sdkPath ( ) ] )
266
263
}
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
274
269
]
275
270
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
280
275
]
281
276
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
287
281
]
288
282
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
+ ]
302
292
]
303
293
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
310
300
]
311
301
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
318
307
]
319
308
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
326
314
]
327
315
}
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) !
331
316
}
332
317
333
318
/**
@@ -338,7 +323,7 @@ public enum Request {
338
323
339
324
- returns: sourcekitd_object_t representation of the Request, if successful.
340
325
*/
341
- internal static func cursorInfoRequest( filePath: String ? , arguments: [ String ] ) -> sourcekitd_object_t ? {
326
+ internal static func cursorInfoRequest( filePath: String ? , arguments: [ String ] ) -> SourceKitObject ? {
342
327
if let path = filePath {
343
328
return Request . cursorInfo ( file: path, offset: 0 , arguments: arguments) . sourcekitObject
344
329
}
@@ -353,11 +338,11 @@ public enum Request {
353
338
354
339
- returns: SourceKit response if successful.
355
340
*/
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 ] ? {
357
342
if offset == 0 {
358
343
return nil
359
344
}
360
- sourcekitd_request_dictionary_set_int64 ( cursorInfoRequest, sourcekitd_uid_get_from_cstr ( SwiftDocKey . offset. rawValue ) ! , offset)
345
+ cursorInfoRequest. updateValue ( offset, forKey : SwiftDocKey . offset)
361
346
return try ? Request . customRequest ( request: cursorInfoRequest) . send ( )
362
347
}
363
348
@@ -369,7 +354,7 @@ public enum Request {
369
354
*/
370
355
public func send( ) throws -> [ String : SourceKitRepresentable ] {
371
356
initializeSourceKitFailable
372
- let response = sourcekitd_send_request_sync ( sourcekitObject)
357
+ let response = sourcekitd_send_request_sync ( sourcekitObject. sourcekitdObject! )
373
358
defer { sourcekitd_response_dispose ( response!) }
374
359
if sourcekitd_response_is_error ( response!) {
375
360
let error = Request . Error ( response: response!)
@@ -432,20 +417,16 @@ public enum Request {
432
417
433
418
extension Request : CustomStringConvertible {
434
419
/// 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 }
436
421
}
437
422
438
423
private 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 ( )
449
430
}
450
431
451
432
extension String {
0 commit comments