Skip to content

Commit cf2c6ff

Browse files
authored
Merge pull request #75094 from tshortli/baseline-more-features
2 parents 0d0994b + 363b875 commit cf2c6ff

34 files changed

+79
-840
lines changed

include/swift/AST/PrintOptions.h

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -372,10 +372,6 @@ struct PrintOptions {
372372
/// Whether to suppress printing of custom attributes that are expanded macros.
373373
bool SuppressExpandedMacros = true;
374374

375-
/// Whether we're supposed to slap a @rethrows on `AsyncSequence` /
376-
/// `AsyncIteratorProtocol` for backward-compatibility reasons.
377-
bool AsyncSequenceRethrows = false;
378-
379375
/// Suppress the @isolated(any) attribute.
380376
bool SuppressIsolatedAny = false;
381377

@@ -612,17 +608,6 @@ struct PrintOptions {
612608
QualifyNestedDeclarations ShouldQualifyNestedDeclarations =
613609
QualifyNestedDeclarations::Never;
614610

615-
/// If true, we print a protocol's primary associated types using the
616-
/// primary associated type syntax: `protocol Foo<Type1, ...>`.
617-
///
618-
/// If false, we print them as ordinary associated types.
619-
bool PrintPrimaryAssociatedTypes = true;
620-
621-
/// Whether or not to print `@attached(extension)` attributes on
622-
/// macro declarations. This is used for feature suppression in
623-
/// Swift interface printing.
624-
bool PrintExtensionMacroAttributes = true;
625-
626611
/// If this is not \c nullptr then function bodies (including accessors
627612
/// and constructors) will be printed by this function.
628613
std::function<void(const ValueDecl *, ASTPrinter &)> FunctionBody;

include/swift/Basic/Features.def

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ BASELINE_LANGUAGE_FEATURE(EffectfulProp, 310, "Effectful properties")
136136
BASELINE_LANGUAGE_FEATURE(MarkerProtocol, 0, "@_marker protocol")
137137
BASELINE_LANGUAGE_FEATURE(Actors, 0, "actors")
138138
BASELINE_LANGUAGE_FEATURE(ConcurrentFunctions, 0, "@concurrent functions")
139-
LANGUAGE_FEATURE(RethrowsProtocol, 0, "@rethrows protocol")
139+
BASELINE_LANGUAGE_FEATURE(RethrowsProtocol, 0, "@rethrows protocol")
140140
BASELINE_LANGUAGE_FEATURE(GlobalActors, 316, "Global actors")
141141
BASELINE_LANGUAGE_FEATURE(BuiltinJob, 0, "Builtin.Job type")
142142
BASELINE_LANGUAGE_FEATURE(Sendable, 0, "Sendable and @Sendable")
@@ -157,49 +157,49 @@ BASELINE_LANGUAGE_FEATURE(BuiltinCreateAsyncDiscardingTaskInGroup, 0, "Task crea
157157
BASELINE_LANGUAGE_FEATURE(BuiltinCreateAsyncTaskWithExecutor, 0, "Task create builtin with extra executor preference")
158158
BASELINE_LANGUAGE_FEATURE(BuiltinCreateAsyncDiscardingTaskInGroupWithExecutor, 0, "Task create in discarding task group with extra executor preference")
159159
BASELINE_LANGUAGE_FEATURE(BuiltinStackAlloc, 0, "Builtin.stackAlloc")
160-
LANGUAGE_FEATURE(BuiltinUnprotectedStackAlloc, 0, "Builtin.unprotectedStackAlloc")
161-
LANGUAGE_FEATURE(BuiltinAllocVector, 0, "Builtin.allocVector")
160+
BASELINE_LANGUAGE_FEATURE(BuiltinUnprotectedStackAlloc, 0, "Builtin.unprotectedStackAlloc")
161+
BASELINE_LANGUAGE_FEATURE(BuiltinAllocVector, 0, "Builtin.allocVector")
162162
BASELINE_LANGUAGE_FEATURE(BuiltinTaskRunInline, 0, "Builtin.taskRunInline")
163163
BASELINE_LANGUAGE_FEATURE(BuiltinUnprotectedAddressOf, 0, "Builtin.unprotectedAddressOf")
164-
LANGUAGE_FEATURE(NewCxxMethodSafetyHeuristics, 0, "Only import C++ methods that return pointers (projections) on owned types as unsafe")
164+
BASELINE_LANGUAGE_FEATURE(NewCxxMethodSafetyHeuristics, 0, "Only import C++ methods that return pointers (projections) on owned types as unsafe")
165165
SUPPRESSIBLE_LANGUAGE_FEATURE(SpecializeAttributeWithAvailability, 0, "@_specialize attribute with availability")
166166
BASELINE_LANGUAGE_FEATURE(BuiltinAssumeAlignment, 0, "Builtin.assumeAlignment")
167167
BASELINE_LANGUAGE_FEATURE(BuiltinCreateTaskGroupWithFlags, 0, "Builtin.createTaskGroupWithFlags")
168168
BASELINE_LANGUAGE_FEATURE(UnsafeInheritExecutor, 0, "@_unsafeInheritExecutor")
169-
SUPPRESSIBLE_LANGUAGE_FEATURE(PrimaryAssociatedTypes2, 346, "Primary associated types")
169+
BASELINE_LANGUAGE_FEATURE(PrimaryAssociatedTypes2, 346, "Primary associated types")
170170
BASELINE_LANGUAGE_FEATURE(UnavailableFromAsync, 0, "@_unavailableFromAsync")
171171
BASELINE_LANGUAGE_FEATURE(NoAsyncAvailability, 340, "@available(*, noasync)")
172-
SUPPRESSIBLE_LANGUAGE_FEATURE(AssociatedTypeAvailability, 0, "Availability on associated types")
173-
SUPPRESSIBLE_LANGUAGE_FEATURE(AsyncSequenceFailure, 0, "Failure associated type on AsyncSequence and AsyncIteratorProtocol")
172+
BASELINE_LANGUAGE_FEATURE(AssociatedTypeAvailability, 0, "Availability on associated types")
173+
BASELINE_LANGUAGE_FEATURE(AsyncSequenceFailure, 0, "Failure associated type on AsyncSequence and AsyncIteratorProtocol")
174174
BASELINE_LANGUAGE_FEATURE(BuiltinIntLiteralAccessors, 368, "Builtin.IntLiteral accessors")
175-
LANGUAGE_FEATURE(Macros, 0, "Macros")
176-
LANGUAGE_FEATURE(FreestandingExpressionMacros, 382, "Expression macros")
177-
LANGUAGE_FEATURE(AttachedMacros, 389, "Attached macros")
178-
LANGUAGE_FEATURE(ExtensionMacros, 402, "Extension macros")
179-
LANGUAGE_FEATURE(MoveOnly, 390, "noncopyable types")
180-
LANGUAGE_FEATURE(MoveOnlyResilientTypes, 390, "non-@frozen noncopyable types with library evolution")
181-
LANGUAGE_FEATURE(ParameterPacks, 393, "Value and type parameter packs")
182-
SUPPRESSIBLE_LANGUAGE_FEATURE(LexicalLifetimes, 0, "@_eagerMove/@_noEagerMove/@_lexicalLifetimes annotations")
183-
LANGUAGE_FEATURE(FreestandingMacros, 397, "freestanding declaration macros")
184-
SUPPRESSIBLE_LANGUAGE_FEATURE(RetroactiveAttribute, 364, "@retroactive")
185-
SUPPRESSIBLE_LANGUAGE_FEATURE(ExtensionMacroAttr, 0, "@attached(extension)")
186-
LANGUAGE_FEATURE(TypedThrows, 413, "Typed throws")
187-
CONDITIONALLY_SUPPRESSIBLE_LANGUAGE_FEATURE(OptionalIsolatedParameters, 420, "Optional isolated parameters")
188-
SUPPRESSIBLE_LANGUAGE_FEATURE(Extern, 0, "@_extern")
189-
LANGUAGE_FEATURE(ExpressionMacroDefaultArguments, 422, "Expression macro as caller-side default argument")
190-
LANGUAGE_FEATURE(BuiltinStoreRaw, 0, "Builtin.storeRaw")
175+
BASELINE_LANGUAGE_FEATURE(Macros, 0, "Macros")
176+
BASELINE_LANGUAGE_FEATURE(FreestandingExpressionMacros, 382, "Expression macros")
177+
BASELINE_LANGUAGE_FEATURE(AttachedMacros, 389, "Attached macros")
178+
BASELINE_LANGUAGE_FEATURE(ExtensionMacros, 402, "Extension macros")
179+
BASELINE_LANGUAGE_FEATURE(MoveOnly, 390, "noncopyable types")
180+
BASELINE_LANGUAGE_FEATURE(MoveOnlyResilientTypes, 390, "non-@frozen noncopyable types with library evolution")
181+
BASELINE_LANGUAGE_FEATURE(ParameterPacks, 393, "Value and type parameter packs")
182+
BASELINE_LANGUAGE_FEATURE(LexicalLifetimes, 0, "@_eagerMove/@_noEagerMove/@_lexicalLifetimes annotations")
183+
BASELINE_LANGUAGE_FEATURE(FreestandingMacros, 397, "freestanding declaration macros")
184+
BASELINE_LANGUAGE_FEATURE(RetroactiveAttribute, 364, "@retroactive")
185+
BASELINE_LANGUAGE_FEATURE(ExtensionMacroAttr, 0, "@attached(extension)")
186+
BASELINE_LANGUAGE_FEATURE(TypedThrows, 413, "Typed throws")
187+
BASELINE_LANGUAGE_FEATURE(OptionalIsolatedParameters, 420, "Optional isolated parameters")
188+
BASELINE_LANGUAGE_FEATURE(Extern, 0, "@_extern")
189+
BASELINE_LANGUAGE_FEATURE(ExpressionMacroDefaultArguments, 422, "Expression macro as caller-side default argument")
190+
BASELINE_LANGUAGE_FEATURE(BuiltinStoreRaw, 0, "Builtin.storeRaw")
191191
BASELINE_LANGUAGE_FEATURE(BuiltinCreateTask, 0, "Builtin.createTask and Builtin.createDiscardingTask")
192-
SUPPRESSIBLE_LANGUAGE_FEATURE(AssociatedTypeImplements, 0, "@_implements on associated types")
193-
LANGUAGE_FEATURE(BuiltinAddressOfRawLayout, 0, "Builtin.addressOfRawLayout")
194-
LANGUAGE_FEATURE(MoveOnlyPartialConsumption, 429, "Partial consumption of noncopyable values")
195-
LANGUAGE_FEATURE(BitwiseCopyable, 426, "BitwiseCopyable protocol")
192+
BASELINE_LANGUAGE_FEATURE(AssociatedTypeImplements, 0, "@_implements on associated types")
193+
BASELINE_LANGUAGE_FEATURE(BuiltinAddressOfRawLayout, 0, "Builtin.addressOfRawLayout")
194+
BASELINE_LANGUAGE_FEATURE(MoveOnlyPartialConsumption, 429, "Partial consumption of noncopyable values")
195+
BASELINE_LANGUAGE_FEATURE(BitwiseCopyable, 426, "BitwiseCopyable protocol")
196196
BASELINE_LANGUAGE_FEATURE(NoncopyableGenerics, 427, "Noncopyable generics")
197197
BASELINE_LANGUAGE_FEATURE(NoncopyableGenerics2, 427, "Noncopyable generics alias")
198-
SUPPRESSIBLE_LANGUAGE_FEATURE(ConformanceSuppression, 426, "Suppressible inferred conformances")
198+
BASELINE_LANGUAGE_FEATURE(ConformanceSuppression, 426, "Suppressible inferred conformances")
199199
SUPPRESSIBLE_LANGUAGE_FEATURE(BitwiseCopyable2, 426, "BitwiseCopyable feature")
200-
LANGUAGE_FEATURE(BodyMacros, 415, "Function body macros")
200+
BASELINE_LANGUAGE_FEATURE(BodyMacros, 415, "Function body macros")
201201
SUPPRESSIBLE_LANGUAGE_FEATURE(SendingArgsAndResults, 430, "Sending arg and results")
202-
LANGUAGE_FEATURE(BorrowingSwitch, 432, "Noncopyable type pattern matching")
202+
BASELINE_LANGUAGE_FEATURE(BorrowingSwitch, 432, "Noncopyable type pattern matching")
203203
CONDITIONALLY_SUPPRESSIBLE_LANGUAGE_FEATURE(IsolatedAny, 431, "@isolated(any) function types")
204204
LANGUAGE_FEATURE(IsolatedAny2, 431, "@isolated(any) function types")
205205
LANGUAGE_FEATURE(ObjCImplementation, 436, "@objc @implementation extensions")

lib/AST/ASTPrinter.cpp

Lines changed: 1 addition & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1208,11 +1208,6 @@ static bool hasLessAccessibleSetter(const AbstractStorageDecl *ASD) {
12081208
return ASD->getSetterFormalAccess() < ASD->getFormalAccess();
12091209
}
12101210

1211-
static bool isImplicitRethrowsProtocol(const ProtocolDecl *proto) {
1212-
return proto->isSpecificProtocol(KnownProtocolKind::AsyncSequence) ||
1213-
proto->isSpecificProtocol(KnownProtocolKind::AsyncIteratorProtocol);
1214-
}
1215-
12161211
void PrintAST::printAttributes(const Decl *D) {
12171212
if (Options.SkipAttributes)
12181213
return;
@@ -1223,17 +1218,6 @@ void PrintAST::printAttributes(const Decl *D) {
12231218

12241219
auto attrs = D->getAttrs();
12251220

1226-
// When printing a Swift interface, make sure that older compilers see
1227-
// @rethrows on the AsyncSequence and AsyncIteratorProtocol.
1228-
if (Options.AsyncSequenceRethrows && Options.IsForSwiftInterface) {
1229-
if (auto proto = dyn_cast<ProtocolDecl>(D)) {
1230-
if (isImplicitRethrowsProtocol(proto)) {
1231-
Printer << "@rethrows";
1232-
Printer.printNewline();
1233-
}
1234-
}
1235-
}
1236-
12371221
// Save the current number of exclude attrs to restore once we're done.
12381222
unsigned originalExcludeAttrCount = Options.ExcludeAttrList.size();
12391223

@@ -3043,14 +3027,6 @@ void PrintAST::printExtension(ExtensionDecl *decl) {
30433027
}
30443028
}
30453029

3046-
static void suppressingFeatureExtensionMacroAttr(PrintOptions &options,
3047-
llvm::function_ref<void()> action) {
3048-
bool originalPrintExtensionMacroAttrs = options.PrintExtensionMacroAttributes;
3049-
options.PrintExtensionMacroAttributes = false;
3050-
action();
3051-
options.PrintExtensionMacroAttributes = originalPrintExtensionMacroAttrs;
3052-
}
3053-
30543030
static void suppressingFeatureSpecializeAttributeWithAvailability(
30553031
PrintOptions &options,
30563032
llvm::function_ref<void()> action) {
@@ -3059,96 +3035,19 @@ static void suppressingFeatureSpecializeAttributeWithAvailability(
30593035
action();
30603036
}
30613037

3062-
static void suppressingFeaturePrimaryAssociatedTypes2(PrintOptions &options,
3063-
llvm::function_ref<void()> action) {
3064-
bool originalPrintPrimaryAssociatedTypes = options.PrintPrimaryAssociatedTypes;
3065-
options.PrintPrimaryAssociatedTypes = false;
3066-
action();
3067-
options.PrintPrimaryAssociatedTypes = originalPrintPrimaryAssociatedTypes;
3068-
}
3069-
3070-
static void
3071-
suppressingFeatureAssociatedTypeAvailability(
3072-
PrintOptions &options, llvm::function_ref<void()> action) {
3073-
unsigned originalExcludeAttrCount = options.ExcludeAttrList.size();
3074-
options.ExcludeAttrList.push_back(DeclAttrKind::Available);
3075-
action();
3076-
options.ExcludeAttrList.resize(originalExcludeAttrCount);
3077-
}
3078-
3079-
static void
3080-
suppressingFeatureAsyncSequenceFailure(
3081-
PrintOptions &options, llvm::function_ref<void()> action) {
3082-
llvm::SaveAndRestore<bool> saved(options.AsyncSequenceRethrows, true);
3083-
action();
3084-
}
3085-
static void
3086-
suppressingFeatureLexicalLifetimes(PrintOptions &options,
3087-
llvm::function_ref<void()> action) {
3088-
unsigned originalExcludeAttrCount = options.ExcludeAttrList.size();
3089-
options.ExcludeAttrList.push_back(DeclAttrKind::EagerMove);
3090-
options.ExcludeAttrList.push_back(DeclAttrKind::NoEagerMove);
3091-
options.ExcludeAttrList.push_back(DeclAttrKind::LexicalLifetimes);
3092-
action();
3093-
options.ExcludeAttrList.resize(originalExcludeAttrCount);
3094-
}
3095-
3096-
static void suppressingFeatureRetroactiveAttribute(
3097-
PrintOptions &options,
3098-
llvm::function_ref<void()> action) {
3099-
llvm::SaveAndRestore<PrintOptions> originalOptions(options);
3100-
options.ExcludeAttrList.push_back(TypeAttrKind::Retroactive);
3101-
action();
3102-
}
3103-
3104-
static void suppressingFeatureExtern(PrintOptions &options,
3105-
llvm::function_ref<void()> action) {
3106-
unsigned originalExcludeAttrCount = options.ExcludeAttrList.size();
3107-
options.ExcludeAttrList.push_back(DeclAttrKind::Extern);
3108-
action();
3109-
options.ExcludeAttrList.resize(originalExcludeAttrCount);
3110-
}
3111-
31123038
static void suppressingFeatureIsolatedAny(PrintOptions &options,
31133039
llvm::function_ref<void()> action) {
31143040
llvm::SaveAndRestore<bool> scope(options.SuppressIsolatedAny, true);
31153041
action();
31163042
}
31173043

3118-
static void suppressingFeatureOptionalIsolatedParameters(
3119-
PrintOptions &options,
3120-
llvm::function_ref<void()> action) {
3121-
llvm::SaveAndRestore<bool> scope(
3122-
options.SuppressOptionalIsolatedParams, true);
3123-
action();
3124-
}
3125-
31263044
static void
31273045
suppressingFeatureSendingArgsAndResults(PrintOptions &options,
31283046
llvm::function_ref<void()> action) {
31293047
llvm::SaveAndRestore<bool> scope(options.SuppressSendingArgsAndResults, true);
31303048
action();
31313049
}
31323050

3133-
static void suppressingFeatureAssociatedTypeImplements(PrintOptions &options,
3134-
llvm::function_ref<void()> action) {
3135-
unsigned originalExcludeAttrCount = options.ExcludeAttrList.size();
3136-
options.ExcludeAttrList.push_back(DeclAttrKind::Implements);
3137-
action();
3138-
options.ExcludeAttrList.resize(originalExcludeAttrCount);
3139-
}
3140-
3141-
static void
3142-
suppressingFeatureConformanceSuppression(PrintOptions &options,
3143-
llvm::function_ref<void()> action) {
3144-
unsigned originalExcludeAttrCount = options.ExcludeAttrList.size();
3145-
options.ExcludeAttrList.push_back(DeclAttrKind::PreInverseGenerics);
3146-
llvm::SaveAndRestore<bool> scope(options.SuppressConformanceSuppression,
3147-
true);
3148-
action();
3149-
options.ExcludeAttrList.resize(originalExcludeAttrCount);
3150-
}
3151-
31523051
static void
31533052
suppressingFeatureBitwiseCopyable2(PrintOptions &options,
31543053
llvm::function_ref<void()> action) {
@@ -3677,10 +3576,7 @@ void PrintAST::visitProtocolDecl(ProtocolDecl *decl) {
36773576
Printer.printName(name);
36783577
});
36793578

3680-
if (Options.PrintPrimaryAssociatedTypes) {
3681-
printPrimaryAssociatedTypes(decl);
3682-
}
3683-
3579+
printPrimaryAssociatedTypes(decl);
36843580
printInheritedFromRequirementSignature(decl, decl);
36853581

36863582
// The trailing where clause is a syntactic thing, which isn't serialized

lib/AST/Attr.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1646,12 +1646,6 @@ bool DeclAttribute::printImpl(ASTPrinter &Printer, const PrintOptions &Options,
16461646
case DeclAttrKind::MacroRole: {
16471647
auto Attr = cast<MacroRoleAttr>(this);
16481648

1649-
// Suppress @attached(extension) if needed.
1650-
if (!Options.PrintExtensionMacroAttributes &&
1651-
Attr->getMacroRole() == MacroRole::Extension) {
1652-
break;
1653-
}
1654-
16551649
switch (Attr->getMacroSyntax()) {
16561650
case MacroSyntax::Freestanding:
16571651
Printer.printAttrName("@freestanding");

0 commit comments

Comments
 (0)