Skip to content

Commit d784537

Browse files
authored
Merge pull request #1038 from ahoppen/ahoppen/clang-global-rename
Support cross-language rename between Swift and clang languages
2 parents d8a30f9 + b9ccf57 commit d784537

File tree

8 files changed

+1451
-135
lines changed

8 files changed

+1451
-135
lines changed

Sources/SourceKitD/SKDResponseArray.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ public final class SKDResponseArray {
3535

3636
/// If the `applier` returns `false`, iteration terminates.
3737
@discardableResult
38-
public func forEach(_ applier: (Int, SKDResponseDictionary) -> Bool) -> Bool {
38+
public func forEach(_ applier: (Int, SKDResponseDictionary) throws -> Bool) rethrows -> Bool {
3939
for i in 0..<count {
40-
if !applier(i, SKDResponseDictionary(sourcekitd.api.variant_array_get_value(array, i), response: resp)) {
40+
if try !applier(i, SKDResponseDictionary(sourcekitd.api.variant_array_get_value(array, i), response: resp)) {
4141
return false
4242
}
4343
}
@@ -46,29 +46,29 @@ public final class SKDResponseArray {
4646

4747
/// If the `applier` returns `false`, iteration terminates.
4848
@discardableResult
49-
public func forEachUID(_ applier: (Int, sourcekitd_uid_t) -> Bool) -> Bool {
49+
public func forEachUID(_ applier: (Int, sourcekitd_uid_t) throws -> Bool) rethrows -> Bool {
5050
for i in 0..<count {
51-
if let uid = sourcekitd.api.variant_array_get_uid(array, i), !applier(i, uid) {
51+
if let uid = sourcekitd.api.variant_array_get_uid(array, i), try !applier(i, uid) {
5252
return false
5353
}
5454
}
5555
return true
5656
}
5757

58-
public func map<T>(_ transform: (SKDResponseDictionary) -> T) -> [T] {
58+
public func map<T>(_ transform: (SKDResponseDictionary) throws -> T) rethrows -> [T] {
5959
var result: [T] = []
6060
result.reserveCapacity(self.count)
61-
self.forEach { _, element in
62-
result.append(transform(element))
61+
try self.forEach { _, element in
62+
result.append(try transform(element))
6363
return true
6464
}
6565
return result
6666
}
6767

68-
public func compactMap<T>(_ transform: (SKDResponseDictionary) -> T?) -> [T] {
68+
public func compactMap<T>(_ transform: (SKDResponseDictionary) throws -> T?) rethrows -> [T] {
6969
var result: [T] = []
70-
self.forEach { _, element in
71-
if let transformed = transform(element) {
70+
try self.forEach { _, element in
71+
if let transformed = try transform(element) {
7272
result.append(transformed)
7373
}
7474
return true

Sources/SourceKitD/sourcekitd_uids.swift

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ public struct sourcekitd_keys {
1818
public let annotated_decl: sourcekitd_uid_t
1919
public let annotations: sourcekitd_uid_t
2020
public let argindex: sourcekitd_uid_t
21+
public let argNames: sourcekitd_uid_t
2122
public let associated_usrs: sourcekitd_uid_t
23+
public let baseName: sourcekitd_uid_t
2224
public let bodylength: sourcekitd_uid_t
2325
public let bodyoffset: sourcekitd_uid_t
2426
public let cancelOnSubsequentRequest: sourcekitd_uid_t
@@ -50,12 +52,14 @@ public struct sourcekitd_keys {
5052
public let includeNonEditableBaseNames: sourcekitd_uid_t
5153
public let is_system: sourcekitd_uid_t
5254
public let isDynamic: sourcekitd_uid_t
55+
public let isZeroArgSelector: sourcekitd_uid_t
5356
public let kind: sourcekitd_uid_t
5457
public let length: sourcekitd_uid_t
5558
public let line: sourcekitd_uid_t
5659
public let locations: sourcekitd_uid_t
5760
public let modulename: sourcekitd_uid_t
5861
public let name: sourcekitd_uid_t
62+
public let namekind: sourcekitd_uid_t
5963
public let namelength: sourcekitd_uid_t
6064
public let nameoffset: sourcekitd_uid_t
6165
public let nameType: sourcekitd_uid_t
@@ -80,6 +84,7 @@ public struct sourcekitd_keys {
8084
public let results: sourcekitd_uid_t
8185
public let retrieve_refactor_actions: sourcekitd_uid_t
8286
public let secondarySymbols: sourcekitd_uid_t
87+
public let selectorPieces: sourcekitd_uid_t
8388
public let semantic_tokens: sourcekitd_uid_t
8489
public let severity: sourcekitd_uid_t
8590
public let sourceEditKindActive: sourcekitd_uid_t
@@ -126,14 +131,16 @@ public struct sourcekitd_keys {
126131
annotated_decl = api.uid_get_from_cstr("key.annotated_decl")!
127132
annotations = api.uid_get_from_cstr("key.annotations")!
128133
argindex = api.uid_get_from_cstr("key.argindex")!
134+
argNames = api.uid_get_from_cstr("key.argnames")!
129135
associated_usrs = api.uid_get_from_cstr("key.associated_usrs")!
136+
baseName = api.uid_get_from_cstr("key.basename")!
130137
bodylength = api.uid_get_from_cstr("key.bodylength")!
131138
bodyoffset = api.uid_get_from_cstr("key.bodyoffset")!
132139
cancelOnSubsequentRequest = api.uid_get_from_cstr("key.cancel_on_subsequent_request")!
133140
categories = api.uid_get_from_cstr("key.categories")!
134-
category = api.uid_get_from_cstr("key.category")!
135141
categorizededits = api.uid_get_from_cstr("key.categorizededits")!
136142
categorizedranges = api.uid_get_from_cstr("key.categorizedranges")!
143+
category = api.uid_get_from_cstr("key.category")!
137144
column = api.uid_get_from_cstr("key.column")!
138145
compilerargs = api.uid_get_from_cstr("key.compilerargs")!
139146
context = api.uid_get_from_cstr("key.context")!
@@ -158,12 +165,14 @@ public struct sourcekitd_keys {
158165
includeNonEditableBaseNames = api.uid_get_from_cstr("key.include_non_editable_base_names")!
159166
is_system = api.uid_get_from_cstr("key.is_system")!
160167
isDynamic = api.uid_get_from_cstr("key.is_dynamic")!
168+
isZeroArgSelector = api.uid_get_from_cstr("key.is_zero_arg_selector")!
161169
kind = api.uid_get_from_cstr("key.kind")!
162170
length = api.uid_get_from_cstr("key.length")!
163171
line = api.uid_get_from_cstr("key.line")!
164172
locations = api.uid_get_from_cstr("key.locations")!
165173
modulename = api.uid_get_from_cstr("key.modulename")!
166174
name = api.uid_get_from_cstr("key.name")!
175+
namekind = api.uid_get_from_cstr("key.namekind")!
167176
namelength = api.uid_get_from_cstr("key.namelength")!
168177
nameoffset = api.uid_get_from_cstr("key.nameoffset")!
169178
nameType = api.uid_get_from_cstr("key.nametype")!
@@ -188,6 +197,7 @@ public struct sourcekitd_keys {
188197
results = api.uid_get_from_cstr("key.results")!
189198
retrieve_refactor_actions = api.uid_get_from_cstr("key.retrieve_refactor_actions")!
190199
secondarySymbols = api.uid_get_from_cstr("key.secondary_symbols")!
200+
selectorPieces = api.uid_get_from_cstr("key.selectorpieces")!
191201
semantic_tokens = api.uid_get_from_cstr("key.semantic_tokens")!
192202
severity = api.uid_get_from_cstr("key.severity")!
193203
sourceEditKindActive = api.uid_get_from_cstr("source.edit.kind.active")!
@@ -231,44 +241,46 @@ public struct sourcekitd_keys {
231241
}
232242

233243
public struct sourcekitd_requests {
234-
public let crash_exit: sourcekitd_uid_t
235-
public let editor_open: sourcekitd_uid_t
236-
public let editor_open_interface: sourcekitd_uid_t
237-
public let editor_close: sourcekitd_uid_t
238-
public let editor_replacetext: sourcekitd_uid_t
239-
public let codecomplete: sourcekitd_uid_t
244+
public let codecomplete_close: sourcekitd_uid_t
240245
public let codecomplete_open: sourcekitd_uid_t
241246
public let codecomplete_update: sourcekitd_uid_t
242-
public let codecomplete_close: sourcekitd_uid_t
247+
public let codecomplete: sourcekitd_uid_t
248+
public let crash_exit: sourcekitd_uid_t
243249
public let cursorinfo: sourcekitd_uid_t
244250
public let diagnostics: sourcekitd_uid_t
245-
public let semantic_tokens: sourcekitd_uid_t
251+
public let editor_close: sourcekitd_uid_t
252+
public let editor_open_interface: sourcekitd_uid_t
253+
public let editor_open: sourcekitd_uid_t
254+
public let editor_replacetext: sourcekitd_uid_t
246255
public let expression_type: sourcekitd_uid_t
256+
public let find_syntactic_rename_ranges: sourcekitd_uid_t
247257
public let find_usr: sourcekitd_uid_t
248-
public let variable_type: sourcekitd_uid_t
258+
public let nameTranslation: sourcekitd_uid_t
249259
public let relatedidents: sourcekitd_uid_t
250260
public let semantic_refactoring: sourcekitd_uid_t
251-
public let find_syntactic_rename_ranges: sourcekitd_uid_t
261+
public let semantic_tokens: sourcekitd_uid_t
262+
public let variable_type: sourcekitd_uid_t
252263

253264
public init(api: sourcekitd_functions_t) {
254-
crash_exit = api.uid_get_from_cstr("source.request.crash_exit")!
255-
editor_open = api.uid_get_from_cstr("source.request.editor.open")!
256-
editor_open_interface = api.uid_get_from_cstr("source.request.editor.open.interface")!
257-
editor_close = api.uid_get_from_cstr("source.request.editor.close")!
258-
editor_replacetext = api.uid_get_from_cstr("source.request.editor.replacetext")!
259265
codecomplete = api.uid_get_from_cstr("source.request.codecomplete")!
266+
codecomplete_close = api.uid_get_from_cstr("source.request.codecomplete.close")!
260267
codecomplete_open = api.uid_get_from_cstr("source.request.codecomplete.open")!
261268
codecomplete_update = api.uid_get_from_cstr("source.request.codecomplete.update")!
262-
codecomplete_close = api.uid_get_from_cstr("source.request.codecomplete.close")!
269+
crash_exit = api.uid_get_from_cstr("source.request.crash_exit")!
263270
cursorinfo = api.uid_get_from_cstr("source.request.cursorinfo")!
264271
diagnostics = api.uid_get_from_cstr("source.request.diagnostics")!
265-
semantic_tokens = api.uid_get_from_cstr("source.request.semantic_tokens")!
272+
editor_close = api.uid_get_from_cstr("source.request.editor.close")!
273+
editor_open = api.uid_get_from_cstr("source.request.editor.open")!
274+
editor_open_interface = api.uid_get_from_cstr("source.request.editor.open.interface")!
275+
editor_replacetext = api.uid_get_from_cstr("source.request.editor.replacetext")!
266276
expression_type = api.uid_get_from_cstr("source.request.expression.type")!
277+
find_syntactic_rename_ranges = api.uid_get_from_cstr("source.request.find-syntactic-rename-ranges")!
267278
find_usr = api.uid_get_from_cstr("source.request.editor.find_usr")!
268-
variable_type = api.uid_get_from_cstr("source.request.variable.type")!
279+
nameTranslation = api.uid_get_from_cstr("source.request.name.translation")!
269280
relatedidents = api.uid_get_from_cstr("source.request.relatedidents")!
270281
semantic_refactoring = api.uid_get_from_cstr("source.request.semantic.refactoring")!
271-
find_syntactic_rename_ranges = api.uid_get_from_cstr("source.request.find-syntactic-rename-ranges")!
282+
semantic_tokens = api.uid_get_from_cstr("source.request.semantic_tokens")!
283+
variable_type = api.uid_get_from_cstr("source.request.variable.type")!
272284
}
273285
}
274286

@@ -375,6 +387,8 @@ public struct sourcekitd_values {
375387
public let syntaxtype_identifier: sourcekitd_uid_t
376388
public let expr_object_literal: sourcekitd_uid_t
377389
public let expr_call: sourcekitd_uid_t
390+
public let namekindSwift: sourcekitd_uid_t
391+
public let namekindObjC: sourcekitd_uid_t
378392

379393
public let kind_keyword: sourcekitd_uid_t
380394

@@ -487,6 +501,8 @@ public struct sourcekitd_values {
487501
syntaxtype_identifier = api.uid_get_from_cstr("source.lang.swift.syntaxtype.identifier")!
488502
expr_object_literal = api.uid_get_from_cstr("source.lang.swift.expr.object_literal")!
489503
expr_call = api.uid_get_from_cstr("source.lang.swift.expr.call")!
504+
namekindSwift = api.uid_get_from_cstr("source.lang.name.kind.swift")!
505+
namekindObjC = api.uid_get_from_cstr("source.lang.name.kind.objc")!
490506

491507
kind_keyword = api.uid_get_from_cstr("source.lang.swift.keyword")!
492508
}

0 commit comments

Comments
 (0)