Skip to content

Commit 143dccb

Browse files
committed
[SourceKit] Return RenameLocUsage in related identifiers response
This will allow us to get syntactic rename ranges from the locations returned by related identifiers.
1 parent 847671b commit 143dccb

File tree

5 files changed

+24
-6
lines changed

5 files changed

+24
-6
lines changed

test/SourceKit/RelatedIdents/related_idents.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,10 @@ func ifLet(test: Int?) {
109109

110110
// RUN: %sourcekitd-test -req=related-idents -pos=6:17 %s -- -module-name related_idents %s | %FileCheck -check-prefix=CHECK1 %s
111111
// CHECK1: START RANGES
112-
// CHECK1-NEXT: 1:7 - 2
113-
// CHECK1-NEXT: 6:11 - 2
114-
// CHECK1-NEXT: 6:16 - 2
115-
// CHECK1-NEXT: 9:11 - 2
112+
// CHECK1-NEXT: 1:7 - 2 - source.syntacticrename.definition
113+
// CHECK1-NEXT: 6:11 - 2 - source.syntacticrename.reference
114+
// CHECK1-NEXT: 6:16 - 2 - source.syntacticrename.reference
115+
// CHECK1-NEXT: 9:11 - 2 - source.syntacticrename.reference
116116
// CHECK1-NEXT: END RANGES
117117

118118
// RUN: %sourcekitd-test -req=related-idents -pos=5:9 %s -- -module-name related_idents %s | %FileCheck -check-prefix=CHECK2 %s

tools/SourceKit/include/SourceKit/Core/LangSupport.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,7 @@ struct SemanticRefactoringInfo {
786786
struct RelatedIdentInfo {
787787
unsigned Offset;
788788
unsigned Length;
789+
swift::ide::RenameLocUsage Usage;
789790
};
790791

791792
/// Represent one branch of an if config.

tools/SourceKit/lib/SwiftLang/SwiftSourceDocInfo.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2596,7 +2596,8 @@ void SwiftLangSupport::findRelatedIdentifiersInFile(
25962596
}
25972597
unsigned Offset = SrcMgr.getLocOffsetInBuffer(
25982598
ResolvedLoc.range.getStart(), BufferID);
2599-
Ranges.push_back({Offset, ResolvedLoc.range.getByteLength()});
2599+
Ranges.push_back(
2600+
{Offset, ResolvedLoc.range.getByteLength(), RenameLoc.Usage});
26002601
}
26012602
};
26022603
Action();

tools/SourceKit/tools/sourcekitd-test/sourcekitd-test.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2456,8 +2456,10 @@ static void printRelatedIdents(sourcekitd_variant_t Info, StringRef Filename,
24562456
sourcekitd_variant_t Range = sourcekitd_variant_array_get_value(Res, i);
24572457
int64_t Offset = sourcekitd_variant_dictionary_get_int64(Range, KeyOffset);
24582458
int64_t Length = sourcekitd_variant_dictionary_get_int64(Range, KeyLength);
2459+
auto Usage = sourcekitd_variant_dictionary_get_uid(Range, KeyNameType);
24592460
auto LineCol = resolveToLineCol(Offset, Filename, VFSFiles);
2460-
OS << LineCol.first << ':' << LineCol.second << " - " << Length << '\n';
2461+
OS << LineCol.first << ':' << LineCol.second << " - " << Length << " - "
2462+
<< sourcekitd_uid_get_string_ptr(Usage) << '\n';
24612463
}
24622464
OS << "END RANGES\n";
24632465
}

tools/SourceKit/tools/sourcekitd/lib/Service/Requests.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2858,6 +2858,19 @@ reportVariableTypeInfo(const RequestResult<VariableTypesInFile> &Result,
28582858
// FindRelatedIdents
28592859
//===----------------------------------------------------------------------===//
28602860

2861+
static sourcekitd_uid_t renameLocUsageUID(swift::ide::RenameLocUsage Usage) {
2862+
switch (Usage) {
2863+
case swift::ide::RenameLocUsage::Definition:
2864+
return KindDefinition;
2865+
case swift::ide::RenameLocUsage::Reference:
2866+
return KindReference;
2867+
case swift::ide::RenameLocUsage::Call:
2868+
return KindCall;
2869+
case swift::ide::RenameLocUsage::Unknown:
2870+
return KindUnknown;
2871+
}
2872+
}
2873+
28612874
static void findRelatedIdents(StringRef PrimaryFilePath,
28622875
StringRef InputBufferName, int64_t Offset,
28632876
bool CancelOnSubsequentRequest,
@@ -2882,6 +2895,7 @@ static void findRelatedIdents(StringRef PrimaryFilePath,
28822895
auto Elem = Arr.appendDictionary();
28832896
Elem.set(KeyOffset, R.Offset);
28842897
Elem.set(KeyLength, R.Length);
2898+
Elem.set(KeyNameType, renameLocUsageUID(R.Usage));
28852899
}
28862900

28872901
Rec(RespBuilder.createResponse());

0 commit comments

Comments
 (0)