diff --git a/include/swift/Basic/Features.def b/include/swift/Basic/Features.def index 41270d36114..8cd47e24273 100644 --- a/include/swift/Basic/Features.def +++ b/include/swift/Basic/Features.def @@ -176,8 +176,8 @@ BASELINE_LANGUAGE_FEATURE(Macros, 0, "Macros") BASELINE_LANGUAGE_FEATURE(FreestandingExpressionMacros, 382, "Expression macros") BASELINE_LANGUAGE_FEATURE(AttachedMacros, 389, "Attached macros") BASELINE_LANGUAGE_FEATURE(ExtensionMacros, 402, "Extension macros") -LANGUAGE_FEATURE(MoveOnly, 390, "noncopyable types") -LANGUAGE_FEATURE(MoveOnlyResilientTypes, 390, "non-@frozen noncopyable types with library evolution") +BASELINE_LANGUAGE_FEATURE(MoveOnly, 390, "noncopyable types") +BASELINE_LANGUAGE_FEATURE(MoveOnlyResilientTypes, 390, "non-@frozen noncopyable types with library evolution") BASELINE_LANGUAGE_FEATURE(ParameterPacks, 393, "Value and type parameter packs") SUPPRESSIBLE_LANGUAGE_FEATURE(LexicalLifetimes, 0, "@_eagerMove/@_noEagerMove/@_lexicalLifetimes annotations") BASELINE_LANGUAGE_FEATURE(FreestandingMacros, 397, "freestanding declaration macros") @@ -191,7 +191,7 @@ LANGUAGE_FEATURE(BuiltinStoreRaw, 0, "Builtin.storeRaw") BASELINE_LANGUAGE_FEATURE(BuiltinCreateTask, 0, "Builtin.createTask and Builtin.createDiscardingTask") SUPPRESSIBLE_LANGUAGE_FEATURE(AssociatedTypeImplements, 0, "@_implements on associated types") LANGUAGE_FEATURE(BuiltinAddressOfRawLayout, 0, "Builtin.addressOfRawLayout") -LANGUAGE_FEATURE(MoveOnlyPartialConsumption, 429, "Partial consumption of noncopyable values") +BASELINE_LANGUAGE_FEATURE(MoveOnlyPartialConsumption, 429, "Partial consumption of noncopyable values") LANGUAGE_FEATURE(BitwiseCopyable, 426, "BitwiseCopyable protocol") BASELINE_LANGUAGE_FEATURE(NoncopyableGenerics, 427, "Noncopyable generics") BASELINE_LANGUAGE_FEATURE(NoncopyableGenerics2, 427, "Noncopyable generics alias") diff --git a/lib/AST/FeatureSet.cpp b/lib/AST/FeatureSet.cpp index 6215c230a83..f572346ee4e 100644 --- a/lib/AST/FeatureSet.cpp +++ b/lib/AST/FeatureSet.cpp @@ -141,48 +141,6 @@ static bool usesFeatureSpecializeAttributeWithAvailability(Decl *decl) { return false; } -static bool usesFeatureMoveOnly(Decl *decl) { - if (auto *extension = dyn_cast(decl)) { - if (auto *nominal = extension->getExtendedNominal()) - return usesFeatureMoveOnly(nominal); - return false; - } - - auto hasInverseInType = [&](Type type) { - return type.findIf([&](Type type) -> bool { - if (auto *NTD = type->getAnyNominal()) { - if (NTD->getAttrs().hasAttribute()) - return true; - } - return false; - }); - }; - - if (auto *TD = dyn_cast(decl)) { - if (auto *alias = dyn_cast(TD)) - return hasInverseInType(alias->getUnderlyingType()); - - if (auto *NTD = dyn_cast(TD)) { - if (NTD->getAttrs().hasAttribute()) - return true; - } - - return false; - } - - if (auto *VD = dyn_cast(decl)) { - return hasInverseInType(VD->getInterfaceType()); - } - - return false; -} - -static bool usesFeatureMoveOnlyResilientTypes(Decl *decl) { - if (auto *nomDecl = dyn_cast(decl)) - return nomDecl->isResilient() && usesFeatureMoveOnly(decl); - return false; -} - static bool hasParameterPacks(Decl *decl) { if (auto genericContext = decl->getAsGenericContext()) { auto sig = genericContext->getGenericSignature(); @@ -341,29 +299,15 @@ static bool usesFeatureSymbolLinkageMarkers(Decl *decl) { } UNINTERESTING_FEATURE(LazyImmediate) - -static bool usesFeatureMoveOnlyClasses(Decl *decl) { - return isa(decl) && usesFeatureMoveOnly(decl); -} +UNINTERESTING_FEATURE(MoveOnlyClasses) static bool usesFeatureNoImplicitCopy(Decl *decl) { return decl->isNoImplicitCopy(); } UNINTERESTING_FEATURE(OldOwnershipOperatorSpellings) - -static bool usesFeatureMoveOnlyEnumDeinits(Decl *decl) { - if (auto *ei = dyn_cast(decl)) { - return usesFeatureMoveOnly(ei) && ei->getValueTypeDestructor(); - } - return false; -} - +UNINTERESTING_FEATURE(MoveOnlyEnumDeinits) UNINTERESTING_FEATURE(MoveOnlyTuples) - -// Partial consumption does not affect declarations directly. -UNINTERESTING_FEATURE(MoveOnlyPartialConsumption) - UNINTERESTING_FEATURE(MoveOnlyPartialReinitialization) UNINTERESTING_FEATURE(OneWayClosureParameters)