Skip to content

Commit a1c8280

Browse files
committed
[SourceKit] Refactor collection of available refactorings
Update to have a single refactoring collection method for cursor refactorings and another for ranges. The various functions were only needed because of the extra availability information on renames, so just give that to all refactorings.
1 parent df35da4 commit a1c8280

File tree

4 files changed

+163
-194
lines changed

4 files changed

+163
-194
lines changed

include/swift/Refactoring/Refactoring.h

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ struct RenameRangeDetail {
7272
Optional<unsigned> Index;
7373
};
7474

75-
enum class RenameAvailableKind {
75+
enum class RefactorAvailableKind {
7676
Available,
7777
Unavailable_system_symbol,
7878
Unavailable_has_no_location,
@@ -81,14 +81,14 @@ enum class RenameAvailableKind {
8181
Unavailable_decl_from_clang,
8282
};
8383

84-
struct RenameAvailabilityInfo {
84+
struct RefactorAvailabilityInfo {
8585
RefactoringKind Kind;
86-
RenameAvailableKind AvailableKind;
87-
RenameAvailabilityInfo(RefactoringKind Kind,
88-
RenameAvailableKind AvailableKind)
86+
RefactorAvailableKind AvailableKind;
87+
RefactorAvailabilityInfo(RefactoringKind Kind,
88+
RefactorAvailableKind AvailableKind)
8989
: Kind(Kind), AvailableKind(AvailableKind) {}
90-
RenameAvailabilityInfo(RefactoringKind Kind)
91-
: RenameAvailabilityInfo(Kind, RenameAvailableKind::Available) {}
90+
RefactorAvailabilityInfo(RefactoringKind Kind)
91+
: RefactorAvailabilityInfo(Kind, RefactorAvailableKind::Available) {}
9292
};
9393

9494
class FindRenameRangesConsumer {
@@ -112,7 +112,7 @@ class FindRenameRangesAnnotatingConsumer : public FindRenameRangesConsumer {
112112

113113
StringRef getDescriptiveRefactoringKindName(RefactoringKind Kind);
114114

115-
StringRef getDescriptiveRenameUnavailableReason(RenameAvailableKind Kind);
115+
StringRef getDescriptiveRenameUnavailableReason(RefactorAvailableKind Kind);
116116

117117
bool refactorSwiftModule(ModuleDecl *M, RefactoringOptions Opts,
118118
SourceEditConsumer &EditConsumer,
@@ -131,25 +131,13 @@ int findLocalRenameRanges(SourceFile *SF, RangeConfig Range,
131131
FindRenameRangesConsumer &RenameConsumer,
132132
DiagnosticConsumer &DiagConsumer);
133133

134-
void collectAvailableRefactorings(
135-
SourceFile *SF, RangeConfig Range, bool &RangeStartMayNeedRename,
136-
llvm::SmallVectorImpl<RefactoringKind> &Kinds,
137-
llvm::ArrayRef<DiagnosticConsumer *> DiagConsumers);
138-
139-
void collectAvailableRefactorings(ResolvedCursorInfoPtr CursorInfo,
140-
llvm::SmallVectorImpl<RefactoringKind> &Kinds,
141-
bool ExcludeRename);
142-
143-
/// Stores information about the reference that rename availability is being
144-
/// queried on.
145-
struct RenameRefInfo {
146-
SourceFile *SF; ///< The source file containing the reference.
147-
SourceLoc Loc; ///< The reference's source location.
148-
bool IsArgLabel; ///< Whether Loc is on an arg label, rather than base name.
149-
};
134+
SmallVector<RefactorAvailabilityInfo, 0>
135+
collectRefactorings(SourceFile *SF, RangeConfig Range,
136+
bool &RangeStartMayNeedRename,
137+
llvm::ArrayRef<DiagnosticConsumer *> DiagConsumers);
150138

151-
Optional<RenameAvailabilityInfo>
152-
renameAvailabilityInfo(const ValueDecl *VD, Optional<RenameRefInfo> RefInfo);
139+
SmallVector<RefactorAvailabilityInfo, 0>
140+
collectRefactorings(ResolvedCursorInfoPtr CursorInfo, bool ExcludeRename);
153141

154142
} // namespace ide
155143
} // namespace swift

0 commit comments

Comments
 (0)