Skip to content

Commit 7a39019

Browse files
committed
Support cross-language rename between Swift and clang languages
This adds support for name translation between Swift anc clang languages to allow renaming across those language boundaries. Rename is always initiated at the symbol’s definition, so when renaming an Objective-C symbol from Swift, the user is prompeted to enter the new Objective-C method name. rdar://118996461
1 parent 8d381df commit 7a39019

File tree

5 files changed

+1341
-124
lines changed

5 files changed

+1341
-124
lines changed

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)