Skip to content

Commit 4373825

Browse files
committed
IDE: Update diagnostics to take AvailabilityRange instead of VersionTuple.
1 parent fe0688c commit 4373825

File tree

2 files changed

+12
-19
lines changed

2 files changed

+12
-19
lines changed

include/swift/AST/DiagnosticsIDE.def

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ WARNING(ide_availability_softdeprecated, Deprecation,
3030
"%0 will be deprecated"
3131
" in %select{a future version|%select{a future version of %2|%2 %4}3}1"
3232
"%select{|: %5}5",
33-
(const ValueDecl *, bool, AvailabilityDomain, bool, llvm::VersionTuple,
33+
(const ValueDecl *, bool, AvailabilityDomain, bool, AvailabilityRange,
3434
StringRef))
3535

3636
WARNING(ide_availability_softdeprecated_rename, Deprecation,
3737
"%0 will be deprecated"
3838
" in %select{a future version|%select{a future version of %2|%2 %4}3}1"
3939
": renamed to '%5'",
40-
(const ValueDecl *, bool, AvailabilityDomain, bool, llvm::VersionTuple,
40+
(const ValueDecl *, bool, AvailabilityDomain, bool, AvailabilityRange,
4141
StringRef))
4242

4343
WARNING(ide_recursive_accessor_reference,none,

lib/IDE/CodeCompletionDiagnostics.cpp

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -88,57 +88,50 @@ bool CodeCompletionDiagnostics::getDiagnosticForDeprecated(
8888
// So getter/setter specific availability doesn't work in code completion.
8989

9090
auto Domain = Attr.getDomain();
91-
llvm::VersionTuple DeprecatedVersion;
92-
if (Attr.getDeprecated())
93-
DeprecatedVersion = Attr.getDeprecated().value();
94-
95-
llvm::VersionTuple RemappedDeprecatedVersion;
96-
if (AvailabilityInference::updateDeprecatedAvailabilityDomainForFallback(
97-
Attr, Ctx, Domain, RemappedDeprecatedVersion))
98-
DeprecatedVersion = RemappedDeprecatedVersion;
99-
91+
auto DeprecatedRange = Attr.getDeprecatedRange(Ctx);
10092
auto Message = Attr.getMessage();
10193
auto NewName = Attr.getRename();
10294
if (!isSoftDeprecated) {
10395
if (Message.empty() && NewName.empty()) {
10496
getDiagnostics(severity, Out, diag::availability_deprecated, D,
10597
Attr.isPlatformSpecific(), Domain,
106-
Attr.getDeprecated().has_value(), DeprecatedVersion,
98+
DeprecatedRange.hasMinimumVersion(), DeprecatedRange,
10799
/*message*/ StringRef());
108100
} else if (!Message.empty()) {
109101
EncodedDiagnosticMessage EncodedMessage(Message);
110102
getDiagnostics(severity, Out, diag::availability_deprecated, D,
111103
Attr.isPlatformSpecific(), Domain,
112-
Attr.getDeprecated().has_value(), DeprecatedVersion,
104+
DeprecatedRange.hasMinimumVersion(), DeprecatedRange,
113105
EncodedMessage.Message);
114106
} else {
115107
getDiagnostics(severity, Out, diag::availability_deprecated_rename, D,
116108
Attr.isPlatformSpecific(), Domain,
117-
Attr.getDeprecated().has_value(), DeprecatedVersion, false,
109+
DeprecatedRange.hasMinimumVersion(), DeprecatedRange,
110+
false,
118111
/*ReplaceKind*/ 0, NewName);
119112
}
120113
} else {
121114
// '100000' is used as a version number in API that will be deprecated in an
122115
// upcoming release. This number is to match the 'API_TO_BE_DEPRECATED'
123116
// macro defined in Darwin platforms.
124-
static llvm::VersionTuple DISTANT_FUTURE_VESION(100000);
125-
bool isDistantFuture = DeprecatedVersion >= DISTANT_FUTURE_VESION;
117+
bool isDistantFuture = DeprecatedRange.isContainedIn(
118+
AvailabilityRange(llvm::VersionTuple(100000)));
126119

127120
if (Message.empty() && NewName.empty()) {
128121
getDiagnostics(severity, Out, diag::ide_availability_softdeprecated, D,
129122
Attr.isPlatformSpecific(), Domain, !isDistantFuture,
130-
DeprecatedVersion,
123+
DeprecatedRange,
131124
/*message*/ StringRef());
132125
} else if (!Message.empty()) {
133126
EncodedDiagnosticMessage EncodedMessage(Message);
134127
getDiagnostics(severity, Out, diag::ide_availability_softdeprecated, D,
135128
Attr.isPlatformSpecific(), Domain, !isDistantFuture,
136-
DeprecatedVersion, EncodedMessage.Message);
129+
DeprecatedRange, EncodedMessage.Message);
137130
} else {
138131
getDiagnostics(severity, Out,
139132
diag::ide_availability_softdeprecated_rename, D,
140133
Attr.isPlatformSpecific(), Domain, !isDistantFuture,
141-
DeprecatedVersion, NewName);
134+
DeprecatedRange, NewName);
142135
}
143136
}
144137
return false;

0 commit comments

Comments
 (0)