Skip to content

Commit 1409cb1

Browse files
committed
AST: Teach DiagnosticEngine to accept AvailabilityRange arguments.
1 parent b64df73 commit 1409cb1

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

include/swift/AST/ASTBridging.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ enum ENUM_EXTENSIBILITY_ATTR(open) BridgedDiagID : uint32_t {
514514
};
515515

516516
class BridgedDiagnosticArgument {
517-
int64_t storage[3];
517+
int64_t storage[4];
518518

519519
public:
520520
BRIDGED_INLINE BridgedDiagnosticArgument(const swift::DiagnosticArgument &arg);

include/swift/AST/DiagnosticEngine.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ namespace swift {
146146
DescriptiveStmtKind,
147147
DeclAttribute,
148148
AvailabilityDomain,
149+
AvailabilityRange,
149150
VersionTuple,
150151
LayoutConstraint,
151152
ActorIsolation,
@@ -184,6 +185,7 @@ namespace swift {
184185
StmtKind DescriptiveStmtKindVal;
185186
const DeclAttribute *DeclAttributeVal;
186187
AvailabilityDomain AvailabilityDomainVal;
188+
AvailabilityRange AvailabilityRangeVal;
187189
llvm::VersionTuple VersionVal;
188190
LayoutConstraint LayoutConstraintVal;
189191
ActorIsolation ActorIsolationVal;
@@ -288,6 +290,10 @@ namespace swift {
288290
: Kind(DiagnosticArgumentKind::AvailabilityDomain),
289291
AvailabilityDomainVal(domain) {}
290292

293+
DiagnosticArgument(const AvailabilityRange &range)
294+
: Kind(DiagnosticArgumentKind::AvailabilityRange),
295+
AvailabilityRangeVal(range) {}
296+
291297
DiagnosticArgument(llvm::VersionTuple version)
292298
: Kind(DiagnosticArgumentKind::VersionTuple),
293299
VersionVal(version) { }
@@ -418,6 +424,11 @@ namespace swift {
418424
return AvailabilityDomainVal;
419425
}
420426

427+
const AvailabilityRange getAsAvailabilityRange() const {
428+
assert(Kind == DiagnosticArgumentKind::AvailabilityRange);
429+
return AvailabilityRangeVal;
430+
}
431+
421432
llvm::VersionTuple getAsVersionTuple() const {
422433
assert(Kind == DiagnosticArgumentKind::VersionTuple);
423434
return VersionVal;

lib/AST/DiagnosticEngine.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,11 @@ static void formatDiagnosticArgument(StringRef Modifier,
10631063
"Improper modifier for AvailabilityDomain argument");
10641064
Out << Arg.getAsAvailabilityDomain().getNameForDiagnostics();
10651065
break;
1066+
case DiagnosticArgumentKind::AvailabilityRange:
1067+
assert(Modifier.empty() &&
1068+
"Improper modifier for AvailabilityRange argument");
1069+
Out << Arg.getAsAvailabilityRange().getRawMinimumVersion().getAsString();
1070+
break;
10661071
case DiagnosticArgumentKind::VersionTuple:
10671072
assert(Modifier.empty() &&
10681073
"Improper modifier for VersionTuple argument");

0 commit comments

Comments
 (0)