Skip to content

Commit fe0688c

Browse files
committed
Sema: Update diagnostics to take AvailabilityRange instead of VersionTuple.
1 parent 1409cb1 commit fe0688c

File tree

6 files changed

+93
-99
lines changed

6 files changed

+93
-99
lines changed

include/swift/AST/DiagnosticsSema.def

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1841,7 +1841,7 @@ ERROR(attr_objc_implementation_no_conformance,none,
18411841
ERROR(attr_objc_implementation_raise_minimum_deployment_target,none,
18421842
"'@implementation' of an Objective-C class requires a minimum deployment "
18431843
"target of at least %0 %1",
1844-
(AvailabilityDomain, llvm::VersionTuple))
1844+
(AvailabilityDomain, AvailabilityRange))
18451845
ERROR(attr_implementation_requires_language,none,
18461846
"'@implementation' used without specifying the language being "
18471847
"implemented",
@@ -3996,7 +3996,7 @@ ERROR(attr_not_on_decl_with_invalid_access_level,none,
39963996
ERROR(attr_has_no_effect_decl_not_available_before,none,
39973997
"'%0' has no effect because %1 is not "
39983998
"available before %2 %3",
3999-
(DeclAttribute, const ValueDecl *, AvailabilityDomain, llvm::VersionTuple))
3999+
(DeclAttribute, const ValueDecl *, AvailabilityDomain, AvailabilityRange))
40004000

40014001
ERROR(attr_has_no_effect_on_unavailable_decl,none,
40024002
"'%0' has no effect because %1 is unavailable on %2",
@@ -6008,7 +6008,7 @@ ERROR(isolated_deinit_on_value_type,none,
60086008
())
60096009
ERROR(isolated_deinit_unavailable,none,
60106010
"isolated deinit is only available in %0 %1 or newer",
6011-
(AvailabilityDomain, llvm::VersionTuple))
6011+
(AvailabilityDomain, AvailabilityRange))
60126012

60136013
//------------------------------------------------------------------------------
60146014
// MARK: String Processing
@@ -6023,7 +6023,7 @@ ERROR(regex_capture_types_failed_to_decode,none,
60236023

60246024
ERROR(regex_feature_unavailable, none,
60256025
"%0 is only available in %1 %2 or newer",
6026-
(StringRef, AvailabilityDomain, llvm::VersionTuple))
6026+
(StringRef, AvailabilityDomain, AvailabilityRange))
60276027

60286028
ERROR(must_import_regex_builder_module,none,
60296029
"regex builder requires the 'RegexBuilder' module be imported'", ())
@@ -6373,7 +6373,7 @@ ERROR(objc_in_generic_extension,none,
63736373
"cannot contain '@objc' members", (bool))
63746374
ERROR(objc_in_resilient_extension,none,
63756375
"'@objc' %0 in extension of subclass of %1 requires %2 %3",
6376-
(DescriptiveDeclKind, Identifier, AvailabilityDomain, llvm::VersionTuple))
6376+
(DescriptiveDeclKind, Identifier, AvailabilityDomain, AvailabilityRange))
63776377
ERROR(objc_operator, none,
63786378
"operator methods cannot be declared @objc", ())
63796379
ERROR(objc_operator_proto, none,
@@ -6384,7 +6384,7 @@ ERROR(objc_for_generic_class,none,
63846384
"because they are not directly visible from Objective-C", ())
63856385
ERROR(objc_for_resilient_class,none,
63866386
"explicit '@objc' on subclass of %0 requires %1 %2",
6387-
(Identifier, AvailabilityDomain, llvm::VersionTuple))
6387+
(Identifier, AvailabilityDomain, AvailabilityRange))
63886388
ERROR(objc_getter_for_nonobjc_property,none,
63896389
"'@objc' getter for non-'@objc' property", ())
63906390
ERROR(objc_getter_for_nonobjc_subscript,none,
@@ -6784,25 +6784,25 @@ NOTE(availability_marked_unavailable, none,
67846784

67856785
NOTE(availability_introduced_in_version, none,
67866786
"%0 was introduced in %1 %2",
6787-
(const ValueDecl *, AvailabilityDomain, llvm::VersionTuple))
6787+
(const ValueDecl *, AvailabilityDomain, AvailabilityRange))
67886788

67896789
NOTE(availability_obsoleted, none,
67906790
"%0 was obsoleted in %1 %2",
6791-
(const ValueDecl *, AvailabilityDomain, llvm::VersionTuple))
6791+
(const ValueDecl *, AvailabilityDomain, AvailabilityRange))
67926792

67936793
GROUPED_WARNING(availability_deprecated, DeprecatedDeclaration, Deprecation,
67946794
"%0 %select{is|%select{is|was}3}1 "
67956795
"deprecated%select{| in %2%select{| %4}3}1%select{|: %5}5",
67966796
(const ValueDecl *, bool, AvailabilityDomain, bool,
6797-
llvm::VersionTuple, StringRef))
6797+
AvailabilityRange, StringRef))
67986798

67996799
GROUPED_WARNING(
68006800
availability_deprecated_rename, DeprecatedDeclaration, Deprecation,
68016801
"%0 %select{is|%select{is|was}3}1 "
68026802
"deprecated%select{| in %2%select{| %4}3}1: "
68036803
"%select{renamed to|replaced by}5%" REPLACEMENT_DECL_KIND_SELECT "6 "
68046804
"'%7'",
6805-
(const ValueDecl *, bool, AvailabilityDomain, bool, llvm::VersionTuple,
6805+
(const ValueDecl *, bool, AvailabilityDomain, bool, AvailabilityRange,
68066806
bool, unsigned, StringRef))
68076807
#undef REPLACEMENT_DECL_KIND_SELECT
68086808

@@ -6815,63 +6815,63 @@ ERROR(availability_decl_more_than_enclosing, none,
68156815

68166816
NOTE(availability_implicit_decl_here, none,
68176817
"%0 implicitly declared here with availability of %1 %2 or newer",
6818-
(DescriptiveDeclKind, AvailabilityDomain, llvm::VersionTuple))
6818+
(DescriptiveDeclKind, AvailabilityDomain, AvailabilityRange))
68196819

68206820
NOTE(availability_decl_more_than_enclosing_here, none,
68216821
"enclosing scope requires availability of %0 %1 or newer",
6822-
(AvailabilityDomain, llvm::VersionTuple))
6822+
(AvailabilityDomain, AvailabilityRange))
68236823

68246824
ERROR(availability_decl_only_version_newer, none,
68256825
"%0 is only available in %1 %2 or newer",
6826-
(const ValueDecl *, AvailabilityDomain, llvm::VersionTuple))
6826+
(const ValueDecl *, AvailabilityDomain, AvailabilityRange))
68276827

68286828
ERROR(availability_decl_only_version_newer_for_clients, none,
68296829
"%0 is only available in %1 %2 or newer; clients of %3 may have a lower"
68306830
" deployment target",
6831-
(const ValueDecl *, AvailabilityDomain, llvm::VersionTuple, ModuleDecl *))
6831+
(const ValueDecl *, AvailabilityDomain, AvailabilityRange, ModuleDecl *))
68326832

68336833
WARNING(availability_decl_only_version_newer_for_clients_warn, none,
68346834
"%0 is only available in %1 %2 or newer; clients of %3 may have a lower"
68356835
" deployment target",
6836-
(const ValueDecl *, AvailabilityDomain, llvm::VersionTuple,
6836+
(const ValueDecl *, AvailabilityDomain, AvailabilityRange,
68376837
ModuleDecl *))
68386838

68396839
ERROR(availability_opaque_types_only_version_newer, none,
68406840
"'some' return types are only available in %0 %1 or newer",
6841-
(AvailabilityDomain, llvm::VersionTuple))
6841+
(AvailabilityDomain, AvailabilityRange))
68426842

68436843
ERROR(availability_concurrency_only_version_newer, none,
68446844
"concurrency is only available in %0 %1 or newer",
6845-
(AvailabilityDomain, llvm::VersionTuple))
6845+
(AvailabilityDomain, AvailabilityRange))
68466846

68476847
ERROR(availability_parameterized_protocol_only_version_newer, none,
68486848
"runtime support for parameterized protocol types is only available in "
68496849
"%0 %1 or newer",
6850-
(AvailabilityDomain, llvm::VersionTuple))
6850+
(AvailabilityDomain, AvailabilityRange))
68516851

68526852
ERROR(availability_isolated_any_only_version_newer, none,
68536853
"runtime support for @isolated(any) function types is only available in "
68546854
"%0 %1 or newer",
6855-
(AvailabilityDomain, llvm::VersionTuple))
6855+
(AvailabilityDomain, AvailabilityRange))
68566856

68576857
ERROR(availability_copyable_generics_casting_only_version_newer, none,
68586858
"runtime support for casting types with noncopyable generic arguments "
68596859
"is only available in %0 %1 or newer",
6860-
(AvailabilityDomain, llvm::VersionTuple))
6860+
(AvailabilityDomain, AvailabilityRange))
68616861

68626862
ERROR(availability_escapable_generics_casting_only_version_newer, none,
68636863
"runtime support for casting types with nonescapable generic arguments "
68646864
"is only available in %0 %1 or newer",
6865-
(AvailabilityDomain, llvm::VersionTuple))
6865+
(AvailabilityDomain, AvailabilityRange))
68666866

68676867
ERROR(availability_typed_throws_only_version_newer, none,
68686868
"runtime support for typed throws function types is only available in "
68696869
"%0 %1 or newer",
6870-
(AvailabilityDomain, llvm::VersionTuple))
6870+
(AvailabilityDomain, AvailabilityRange))
68716871

68726872
ERROR(availability_variadic_type_only_version_newer, none,
68736873
"parameter packs in generic types are only available in %0 %1 or newer",
6874-
(AvailabilityDomain, llvm::VersionTuple))
6874+
(AvailabilityDomain, AvailabilityRange))
68756875

68766876
NOTE(availability_guard_with_version_check, none,
68776877
"add 'if #available' version check", ())
@@ -6884,7 +6884,7 @@ FIXIT(insert_available_attr,
68846884

68856885
ERROR(availability_inout_accessor_only_version_newer, none,
68866886
"cannot pass as inout because %0 is only available in %1 %2 or newer",
6887-
(const ValueDecl *, AvailabilityDomain, llvm::VersionTuple))
6887+
(const ValueDecl *, AvailabilityDomain, AvailabilityRange))
68886888

68896889
ERROR(availability_query_required_for_platform, none,
68906890
"condition required for target platform '%0'", (StringRef))
@@ -6931,7 +6931,7 @@ WARNING(availability_enum_element_no_potential_warn,
69316931
ERROR(availability_protocol_requires_version,
69326932
none, "protocol %0 requires %1 to be available in %2 %3 and newer",
69336933
(const ProtocolDecl *, const ValueDecl *, AvailabilityDomain,
6934-
llvm::VersionTuple))
6934+
AvailabilityRange))
69356935

69366936
NOTE(availability_protocol_requirement_here, none,
69376937
"protocol requirement here", ())
@@ -6972,22 +6972,22 @@ NOTE(conformance_availability_marked_unavailable, none,
69726972

69736973
NOTE(conformance_availability_introduced_in_version, none,
69746974
"conformance of %0 to %1 was introduced in %2 %3",
6975-
(Type, Type, AvailabilityDomain, llvm::VersionTuple))
6975+
(Type, Type, AvailabilityDomain, AvailabilityRange))
69766976

69776977
NOTE(conformance_availability_obsoleted, none,
69786978
"conformance of %0 to %1 was obsoleted in %2 %3",
6979-
(Type, Type, AvailabilityDomain, llvm::VersionTuple))
6979+
(Type, Type, AvailabilityDomain, AvailabilityRange))
69806980

69816981
GROUPED_WARNING(conformance_availability_deprecated,
69826982
DeprecatedDeclaration, Deprecation,
69836983
"conformance of %0 to %1 %select{is|%select{is|was}4}2 "
69846984
"deprecated%select{| in %3%select{| %5}4}2%select{|: %6}6",
6985-
(Type, Type, bool, AvailabilityDomain, bool, llvm::VersionTuple,
6985+
(Type, Type, bool, AvailabilityDomain, bool, AvailabilityRange,
69866986
StringRef))
69876987

69886988
ERROR(conformance_availability_only_version_newer, none,
69896989
"conformance of %0 to %1 is only available in %2 %3 or newer",
6990-
(Type, Type, AvailabilityDomain, llvm::VersionTuple))
6990+
(Type, Type, AvailabilityDomain, AvailabilityRange))
69916991

69926992
//------------------------------------------------------------------------------
69936993
// MARK: if #available(...)
@@ -8257,7 +8257,7 @@ ERROR(value_generics_missing_feature,none,
82578257
"value generics require '-enable-experimental-feature ValueGenerics'", ())
82588258
ERROR(availability_value_generic_type_only_version_newer, none,
82598259
"values in generic types are only available in %0 %1 or newer",
8260-
(AvailabilityDomain, llvm::VersionTuple))
8260+
(AvailabilityDomain, AvailabilityRange))
82618261
ERROR(invalid_value_for_type_same_type,none,
82628262
"cannot constrain type parameter %0 to be integer %1", (Type, Type))
82638263

lib/Sema/TypeCheckAttr.cpp

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,9 @@ class AttributeChecker : public AttributeVisitor<AttributeChecker> {
127127
TypeChecker::checkAvailability(
128128
attr->getRange(), C.getIsolatedDeinitAvailability(),
129129
D->getDeclContext(),
130-
[&](AvailabilityDomain domain, llvm::VersionTuple version) {
130+
[&](AvailabilityDomain domain, AvailabilityRange range) {
131131
return diagnoseAndRemoveAttr(
132-
attr, diag::isolated_deinit_unavailable, domain, version);
132+
attr, diag::isolated_deinit_unavailable, domain, range);
133133
});
134134
}
135135
}
@@ -1898,8 +1898,7 @@ visitObjCImplementationAttr(ObjCImplementationAttr *attr) {
18981898
auto diag = diagnose(
18991899
attr->getLocation(),
19001900
diag::attr_objc_implementation_raise_minimum_deployment_target,
1901-
Ctx.getTargetAvailabilityDomain(),
1902-
Ctx.getSwift50Availability().getRawMinimumVersion());
1901+
Ctx.getTargetAvailabilityDomain(), Ctx.getSwift50Availability());
19031902
if (attr->isEarlyAdopter()) {
19041903
diag.wrapIn(diag::wrap_objc_implementation_will_become_error);
19051904
}
@@ -2434,11 +2433,10 @@ void AttributeChecker::visitAvailableAttr(AvailableAttr *parsedAttr) {
24342433
diagnose(enclosingDecl->getLoc(),
24352434
diag::availability_implicit_decl_here,
24362435
D->getDescriptiveKind(), Ctx.getTargetAvailabilityDomain(),
2437-
AttrRange.getRawMinimumVersion());
2436+
AttrRange);
24382437
diagnose(enclosingDecl->getLoc(),
24392438
diag::availability_decl_more_than_enclosing_here,
2440-
Ctx.getTargetAvailabilityDomain(),
2441-
EnclosingAnnotatedRange->getRawMinimumVersion());
2439+
Ctx.getTargetAvailabilityDomain(), *EnclosingAnnotatedRange);
24422440
}
24432441
}
24442442
}
@@ -5290,10 +5288,10 @@ void AttributeChecker::checkBackDeployedAttrs(
52905288

52915289
if (Attr->Version <= introVersion) {
52925290
diagnose(AtLoc, diag::attr_has_no_effect_decl_not_available_before,
5293-
Attr, VD, beforeDomain, beforeVersion);
5291+
Attr, VD, beforeDomain, AvailabilityRange(beforeVersion));
52945292
diagnose(availableAttr.getParsedAttr()->AtLoc,
52955293
diag::availability_introduced_in_version, VD, introDomain,
5296-
introVersion)
5294+
AvailabilityRange(introVersion))
52975295
.highlight(availableAttr.getParsedAttr()->getRange());
52985296
continue;
52995297
}

0 commit comments

Comments
 (0)