@@ -554,18 +554,9 @@ static void applyAvailableAttribute(Decl *decl, AvailabilityRange &info,
554554 if (info.isAlwaysAvailable ())
555555 return ;
556556
557- llvm::VersionTuple noVersion;
558- auto AvAttr = new (C) AvailableAttr (
559- SourceLoc (), SourceRange (), targetPlatform (C.LangOpts ),
560- /* Message=*/ StringRef (),
561- /* Rename=*/ StringRef (), info.getRawMinimumVersion (),
562- /* IntroducedRange=*/ SourceRange (),
563- /* Deprecated=*/ noVersion,
564- /* DeprecatedRange=*/ SourceRange (),
565- /* Obsoleted=*/ noVersion,
566- /* ObsoletedRange=*/ SourceRange (), PlatformAgnosticAvailabilityKind::None,
567- /* Implicit=*/ false ,
568- /* SPI=*/ false );
557+ auto AvAttr = AvailableAttr::createPlatformVersioned (
558+ C, targetPlatform (C.LangOpts ), /* Message=*/ " " , /* Rename=*/ " " ,
559+ info.getRawMinimumVersion (), /* Deprecated=*/ {}, /* Obsoleted=*/ {});
569560
570561 decl->getAttrs ().add (AvAttr);
571562}
@@ -1304,9 +1295,8 @@ namespace {
13041295 // "Raw" is the Objective-C name, which was never available in Swift.
13051296 // Variants within the active version are usually declarations that
13061297 // have been superseded, like the accessors of a property.
1307- attr = AvailableAttr::createPlatformAgnostic (
1308- ctx, /* Message*/ StringRef (), ctx.AllocateCopy (renamed.str ()),
1309- PlatformAgnosticAvailabilityKind::UnavailableInSwift);
1298+ attr = AvailableAttr::createUnavailableInSwift (
1299+ ctx, /* Message*/ StringRef (), ctx.AllocateCopy (renamed.str ()));
13101300 } else {
13111301 unsigned majorVersion = getVersion ().majorVersionNumber ();
13121302 unsigned minorVersion = getVersion ().minorVersionNumber ();
@@ -1319,26 +1309,19 @@ namespace {
13191309 (majorVersion == 4 && minorVersion < 2 )
13201310 ? llvm::VersionTuple (4 , 2 )
13211311 : llvm::VersionTuple (majorVersion + 1 );
1322- attr = AvailableAttr::createPlatformAgnostic (
1323- ctx, /* Message*/ StringRef (), ctx.AllocateCopy (renamed.str ()),
1324- PlatformAgnosticAvailabilityKind::SwiftVersionSpecific,
1325- obsoletedVersion);
1312+ attr = AvailableAttr::createSwiftLanguageModeVersioned (
1313+ ctx, /* Message=*/ " " , ctx.AllocateCopy (renamed.str ()),
1314+ /* Introduced=*/ {}, obsoletedVersion);
13261315 } else {
13271316 // Future names are introduced in their future version.
13281317 assert (getVersion () > getActiveSwiftVersion ());
13291318 llvm::VersionTuple introducedVersion =
13301319 (majorVersion == 4 && minorVersion == 2 )
13311320 ? llvm::VersionTuple (4 , 2 )
13321321 : llvm::VersionTuple (majorVersion);
1333- attr = new (ctx) AvailableAttr (
1334- SourceLoc (), SourceRange (), PlatformKind::none,
1335- /* Message=*/ StringRef (), ctx.AllocateCopy (renamed.str ()),
1336- /* Introduced=*/ introducedVersion, SourceRange (),
1337- /* Deprecated=*/ llvm::VersionTuple (), SourceRange (),
1338- /* Obsoleted=*/ llvm::VersionTuple (), SourceRange (),
1339- PlatformAgnosticAvailabilityKind::SwiftVersionSpecific,
1340- /* Implicit=*/ false ,
1341- /* SPI=*/ false );
1322+ attr = AvailableAttr::createSwiftLanguageModeVersioned (
1323+ ctx, /* Message=*/ " " , ctx.AllocateCopy (renamed.str ()),
1324+ introducedVersion, /* Obsoleted=*/ {});
13421325 }
13431326 }
13441327
@@ -1525,10 +1508,8 @@ namespace {
15251508
15261509 // Make Objective-C's 'id' unavailable.
15271510 if (Impl.SwiftContext .LangOpts .EnableObjCInterop && isObjCId (Decl)) {
1528- auto attr = AvailableAttr::createPlatformAgnostic (
1529- Impl.SwiftContext ,
1530- " 'id' is not available in Swift; use 'Any'" , " " ,
1531- PlatformAgnosticAvailabilityKind::UnavailableInSwift);
1511+ auto attr = AvailableAttr::createUnavailableInSwift (
1512+ Impl.SwiftContext , " 'id' is not available in Swift; use 'Any'" , " " );
15321513 Result->getAttrs ().add (attr);
15331514 }
15341515
@@ -2391,12 +2372,12 @@ namespace {
23912372 synthesizer.createDefaultConstructor (result);
23922373 ctors.push_back (defaultCtor);
23932374 if (cxxRecordDecl) {
2394- auto attr = AvailableAttr::createPlatformAgnostic (
2375+ auto attr = AvailableAttr::createUniversallyDeprecated (
23952376 defaultCtor->getASTContext (),
23962377 " This zero-initializes the backing memory of the struct, which "
23972378 " is unsafe for some C++ structs. Consider adding an explicit "
23982379 " default initializer for this C++ struct." ,
2399- " " , PlatformAgnosticAvailabilityKind::Deprecated );
2380+ " " );
24002381 defaultCtor->getAttrs ().add (attr);
24012382 }
24022383 }
@@ -2910,16 +2891,11 @@ namespace {
29102891 auto availability = Impl.SwiftContext .getSwift58Availability ();
29112892 if (!availability.isAlwaysAvailable ()) {
29122893 assert (availability.hasMinimumVersion ());
2913- auto AvAttr = new (Impl.SwiftContext )
2914- AvailableAttr (SourceLoc (), SourceRange (),
2915- targetPlatform (Impl.SwiftContext .LangOpts ),
2916- /* Message=*/ " " , /* Rename=*/ " " ,
2917- availability.getRawMinimumVersion (),
2918- /* IntroducedRange=*/ SourceRange (), {},
2919- /* DeprecatedRange=*/ SourceRange (), {},
2920- /* ObsoletedRange=*/ SourceRange (),
2921- PlatformAgnosticAvailabilityKind::None,
2922- /* Implicit=*/ false , false );
2894+ auto AvAttr = AvailableAttr::createPlatformVersioned (
2895+ Impl.SwiftContext , targetPlatform (Impl.SwiftContext .LangOpts ),
2896+ /* Message=*/ " " , /* Rename=*/ " " ,
2897+ availability.getRawMinimumVersion (), /* Deprecated=*/ {},
2898+ /* Obsoleted=*/ {});
29232899 classDecl->getAttrs ().add (AvAttr);
29242900 }
29252901 }
@@ -4419,7 +4395,7 @@ namespace {
44194395 decl, AccessLevel::Public, loc, name, loc, std::nullopt ,
44204396 genericParamList, dc);
44214397
4422- auto attr = AvailableAttr::createPlatformAgnostic (
4398+ auto attr = AvailableAttr::createUniversallyUnavailable (
44234399 Impl.SwiftContext , " Un-specialized class templates are not currently "
44244400 " supported. Please use a specialization of this "
44254401 " type." );
@@ -5389,8 +5365,8 @@ namespace {
53895365 message = " cannot find Swift declaration for this protocol" ;
53905366 else
53915367 llvm_unreachable (" unknown bridged decl kind" );
5392- auto attr = AvailableAttr::createPlatformAgnostic (Impl.SwiftContext ,
5393- message);
5368+ auto attr = AvailableAttr::createUniversallyUnavailable (Impl.SwiftContext ,
5369+ message);
53945370 VD->getAttrs ().add (attr);
53955371 }
53965372
@@ -5443,7 +5419,7 @@ namespace {
54435419 addObjCAttribute (result,
54445420 Impl.importIdentifier (decl->getIdentifier ()));
54455421 result->setImplicit ();
5446- auto attr = AvailableAttr::createPlatformAgnostic (
5422+ auto attr = AvailableAttr::createUniversallyUnavailable (
54475423 Impl.SwiftContext ,
54485424 " This Objective-C protocol has only been forward-declared; "
54495425 " import its owning module to use it" );
@@ -5598,7 +5574,8 @@ namespace {
55985574 auto result = createFakeClass (name, /* cacheResult */ true ,
55995575 /* inheritFromNSObject */ true );
56005576 result->setImplicit ();
5601- auto attr = AvailableAttr::createPlatformAgnostic (Impl.SwiftContext ,
5577+ auto attr = AvailableAttr::createUniversallyUnavailable (
5578+ Impl.SwiftContext ,
56025579 " This Objective-C class has only been forward-declared; "
56035580 " import its owning module to use it" );
56045581 result->getAttrs ().add (attr);
@@ -6490,7 +6467,7 @@ SwiftDeclConverter::importOptionConstant(const clang::EnumConstantDecl *decl,
64906467 !CD->isUnavailable ()) {
64916468 // / Create an AvailableAttr that indicates specific availability
64926469 // / for all platforms.
6493- auto attr = AvailableAttr::createPlatformAgnostic (
6470+ auto attr = AvailableAttr::createUniversallyUnavailable (
64946471 Impl.SwiftContext , " use [] to construct an empty option set" );
64956472 CD->getAttrs ().add (attr);
64966473 }
@@ -7127,7 +7104,7 @@ ConstructorDecl *SwiftDeclConverter::importConstructor(
71277104 errorStr += objcMethod->getSelector ().getAsString ();
71287105 errorStr += ' ]' ;
71297106
7130- auto attr = AvailableAttr::createPlatformAgnostic (
7107+ auto attr = AvailableAttr::createUniversallyUnavailable (
71317108 Impl.SwiftContext , Impl.SwiftContext .AllocateCopy (errorStr.str ()));
71327109 ctor->getAttrs ().add (attr);
71337110 continue ;
@@ -8808,7 +8785,7 @@ void ClangImporter::Implementation::importAttributes(
88088785 //
88098786 if (auto unavailable = dyn_cast<clang::UnavailableAttr>(*AI)) {
88108787 auto Message = unavailable->getMessage ();
8811- auto attr = AvailableAttr::createPlatformAgnostic (C, Message);
8788+ auto attr = AvailableAttr::createUniversallyUnavailable (C, Message);
88128789 MappedDecl->getAttrs ().add (attr);
88138790 AnyUnavailable = true ;
88148791 continue ;
@@ -8821,8 +8798,7 @@ void ClangImporter::Implementation::importAttributes(
88218798 //
88228799 if (auto unavailable_annot = dyn_cast<clang::AnnotateAttr>(*AI))
88238800 if (unavailable_annot->getAnnotation () == " swift1_unavailable" ) {
8824- auto attr = AvailableAttr::createPlatformAgnostic (
8825- C, " " , " " , PlatformAgnosticAvailabilityKind::UnavailableInSwift);
8801+ auto attr = AvailableAttr::createUnavailableInSwift (C, " " , " " );
88268802 MappedDecl->getAttrs ().add (attr);
88278803 AnyUnavailable = true ;
88288804 continue ;
@@ -8835,8 +8811,7 @@ void ClangImporter::Implementation::importAttributes(
88358811 //
88368812 if (auto deprecated = dyn_cast<clang::DeprecatedAttr>(*AI)) {
88378813 auto Message = deprecated->getMessage ();
8838- auto attr = AvailableAttr::createPlatformAgnostic (C, Message, " " ,
8839- PlatformAgnosticAvailabilityKind::Deprecated);
8814+ auto attr = AvailableAttr::createUniversallyDeprecated (C, Message, " " );
88408815 MappedDecl->getAttrs ().add (attr);
88418816 continue ;
88428817 }
@@ -8858,9 +8833,8 @@ void ClangImporter::Implementation::importAttributes(
88588833 if (!replacement.empty ())
88598834 swiftReplacement = getSwiftNameFromClangName (replacement);
88608835
8861- auto attr = AvailableAttr::createPlatformAgnostic (
8862- C, avail->getMessage (), swiftReplacement,
8863- PlatformAgnosticAvailabilityKind::UnavailableInSwift);
8836+ auto attr = AvailableAttr::createUnavailableInSwift (
8837+ C, avail->getMessage (), swiftReplacement);
88648838 MappedDecl->getAttrs ().add (attr);
88658839 AnyUnavailable = true ;
88668840 continue ;
@@ -8968,7 +8942,7 @@ void ClangImporter::Implementation::importAttributes(
89688942 if (auto ID = dyn_cast<clang::ObjCInterfaceDecl>(ClangDecl)) {
89698943 // Ban NSInvocation.
89708944 if (ID->getName () == " NSInvocation" ) {
8971- auto attr = AvailableAttr::createPlatformAgnostic (C, " " );
8945+ auto attr = AvailableAttr::createUniversallyUnavailable (C, " " );
89728946 MappedDecl->getAttrs ().add (attr);
89738947 return ;
89748948 }
@@ -9001,8 +8975,8 @@ void ClangImporter::Implementation::importAttributes(
90018975 !FD->getAttr <clang::SwiftNameAttr>()) {
90028976 if (auto t = FD->getParamDecl (0 )->getType ()->getAs <clang::TypedefType>()){
90038977 if (isCFTypeDecl (t->getDecl ())) {
9004- auto attr = AvailableAttr::createPlatformAgnostic (C,
9005- " Core Foundation objects are automatically memory managed" );
8978+ auto attr = AvailableAttr::createUniversallyUnavailable (
8979+ C, " Core Foundation objects are automatically memory managed" );
90068980 MappedDecl->getAttrs ().add (attr);
90078981 return ;
90088982 }
@@ -9690,8 +9664,8 @@ void ClangImporter::Implementation::
96909664markUnavailable (ValueDecl *decl, StringRef unavailabilityMsgRef) {
96919665
96929666 unavailabilityMsgRef = SwiftContext.AllocateCopy (unavailabilityMsgRef);
9693- auto ua = AvailableAttr::createPlatformAgnostic (SwiftContext,
9694- unavailabilityMsgRef);
9667+ auto ua = AvailableAttr::createUniversallyUnavailable (SwiftContext,
9668+ unavailabilityMsgRef);
96959669 decl->getAttrs ().add (ua);
96969670}
96979671
0 commit comments