Skip to content

Commit 4d94d55

Browse files
authored
Merge pull request swiftlang#79098 from tshortli/consolidate-unexpected-available-versions-diagnostic
Parse/Sema: Consolidate diagnostics for unexpected versions
2 parents d620886 + 427c8af commit 4d94d55

File tree

4 files changed

+4
-30
lines changed

4 files changed

+4
-30
lines changed

include/swift/AST/DiagnosticsParse.def

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1579,10 +1579,6 @@ ERROR(attr_availability_expected_equal,none,
15791579
ERROR(attr_availability_expected_version,none,
15801580
"expected version number in '%0' attribute", (StringRef))
15811581

1582-
WARNING(attr_availability_nonspecific_platform_unexpected_version,none,
1583-
"unexpected version number in '%0' attribute for non-specific platform "
1584-
"'*'", (StringRef))
1585-
15861582
WARNING(attr_availability_wildcard_ignored,none,
15871583
"* as platform name has no effect in '%0' attribute", (StringRef))
15881584

lib/Parse/ParseDecl.cpp

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -546,26 +546,6 @@ ParserResult<AvailableAttr> Parser::parseExtendedAvailabilitySpecList(
546546
if (AnyArgumentInvalid)
547547
return nullptr;
548548

549-
// Warn if any version is specified with the universal domain ('*').
550-
bool SomeVersion = (!Introduced.empty() ||
551-
!Deprecated.empty() ||
552-
!Obsoleted.empty());
553-
if (Platform == "*" && SomeVersion) {
554-
auto diag = diagnose(AttrLoc,
555-
diag::attr_availability_nonspecific_platform_unexpected_version,
556-
AttrName);
557-
if (!Introduced.empty())
558-
diag.fixItRemove(SourceRange(Introduced.DelimiterLoc,
559-
Introduced.Range.End));
560-
if (!Deprecated.empty())
561-
diag.fixItRemove(SourceRange(Deprecated.DelimiterLoc,
562-
Deprecated.Range.End));
563-
if (!Obsoleted.empty())
564-
diag.fixItRemove(SourceRange(Obsoleted.DelimiterLoc,
565-
Obsoleted.Range.End));
566-
return nullptr;
567-
}
568-
569549
auto Attr = new (Context) AvailableAttr(
570550
AtLoc, SourceRange(AttrLoc, Tok.getLoc()), Platform, PlatformLoc,
571551
AttrKind, Message, Renamed, Introduced.Version, Introduced.Range,

lib/Sema/TypeCheckAttr.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8404,9 +8404,7 @@ SemanticAvailableAttrRequest::evaluate(swift::Evaluator &evaluator,
84048404
bool hasVersionSpec =
84058405
(introducedVersion || deprecatedVersion || obsoletedVersion);
84068406

8407-
// FIXME: [availability] For the universal domain, this is currently
8408-
// diagnosed during parsing. That diagnostic should be subsumed by this one.
8409-
if (!domain->isVersioned() && hasVersionSpec && !domain->isUniversal()) {
8407+
if (!domain->isVersioned() && hasVersionSpec) {
84108408
SourceRange versionSourceRange;
84118409
if (introducedVersion)
84128410
versionSourceRange = semanticAttr.getIntroducedSourceRange();

test/Parse/diagnose_availability.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ func twoShorthandsFollowedByDeprecated() {}
3333
// Missing/wrong warning message for '*' or 'swift' platform.
3434

3535
@available(*, deprecated: 4.2)
36-
// expected-warning@-1 {{unexpected version number in 'available' attribute for non-specific platform '*'}} {{25-30=}}
36+
// expected-warning@-1 {{unexpected version number in '@available' attribute for '*'}}
3737
func allPlatformsDeprecatedVersion() {}
3838

3939
@available(*, deprecated, obsoleted: 4.2)
40-
// expected-warning@-1 {{unexpected version number in 'available' attribute for non-specific platform '*'}} {{36-41=}}
40+
// expected-warning@-1 {{unexpected version number in '@available' attribute for '*'}}
4141
func allPlatformsDeprecatedAndObsoleted() {}
4242

4343
@available(*, introduced: 4.0, deprecated: 4.1, obsoleted: 4.2)
44-
// expected-warning@-1 {{unexpected version number in 'available' attribute for non-specific platform '*'}} {{25-30=}} {{42-47=}} {{58-63=}}
44+
// expected-warning@-1 {{unexpected version number in '@available' attribute for '*'}}
4545
func allPlatformsDeprecatedAndObsoleted2() {}
4646

4747
@available(swift, unavailable)

0 commit comments

Comments
 (0)