Skip to content

Commit 8292cbe

Browse files
committed
AST: Remove 'default argument resilience expansion'
This was a Swift 3 mode holdover.
1 parent 7626ea5 commit 8292cbe

File tree

7 files changed

+25
-156
lines changed

7 files changed

+25
-156
lines changed

include/swift/AST/Decl.h

Lines changed: 2 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -393,16 +393,11 @@ class alignas(1 << DeclAlignInBits) Decl {
393393
/// Information about a symbolic default argument, like #file.
394394
defaultArgumentKind : NumDefaultArgumentKindBits
395395
);
396-
396+
397397
SWIFT_INLINE_BITFIELD(SubscriptDecl, VarDecl, 2,
398398
StaticSpelling : 2
399399
);
400400

401-
SWIFT_INLINE_BITFIELD(EnumElementDecl, ValueDecl, 1,
402-
/// The ResilienceExpansion to use for default arguments.
403-
DefaultArgumentResilienceExpansion : 1
404-
);
405-
406401
SWIFT_INLINE_BITFIELD(AbstractFunctionDecl, ValueDecl, 3+8+1+1+1+1+1+1+1,
407402
/// \see AbstractFunctionDecl::BodyKind
408403
BodyKind : 3,
@@ -425,9 +420,6 @@ class alignas(1 << DeclAlignInBits) Decl {
425420
/// Whether NeedsNewVTableEntry is valid.
426421
HasComputedNeedsNewVTableEntry : 1,
427422

428-
/// The ResilienceExpansion to use for default arguments.
429-
DefaultArgumentResilienceExpansion : 1,
430-
431423
/// Whether this member was synthesized as part of a derived
432424
/// protocol conformance.
433425
Synthesized : 1
@@ -5307,8 +5299,6 @@ class AbstractFunctionDecl : public GenericContext, public ValueDecl {
53075299
Bits.AbstractFunctionDecl.Throws = Throws;
53085300
Bits.AbstractFunctionDecl.NeedsNewVTableEntry = false;
53095301
Bits.AbstractFunctionDecl.HasComputedNeedsNewVTableEntry = false;
5310-
Bits.AbstractFunctionDecl.DefaultArgumentResilienceExpansion =
5311-
unsigned(ResilienceExpansion::Maximal);
53125302
Bits.AbstractFunctionDecl.Synthesized = false;
53135303
}
53145304

@@ -5556,21 +5546,6 @@ class AbstractFunctionDecl : public GenericContext, public ValueDecl {
55565546
/// Resolved during type checking
55575547
void setIsOverridden() { Bits.AbstractFunctionDecl.Overridden = true; }
55585548

5559-
/// The ResilienceExpansion for default arguments.
5560-
///
5561-
/// In Swift 4 mode, default argument expressions are serialized, and must
5562-
/// obey the restrictions imposed upon inlinable function bodies.
5563-
ResilienceExpansion getDefaultArgumentResilienceExpansion() const {
5564-
return ResilienceExpansion(
5565-
Bits.AbstractFunctionDecl.DefaultArgumentResilienceExpansion);
5566-
}
5567-
5568-
/// Set the ResilienceExpansion for default arguments.
5569-
void setDefaultArgumentResilienceExpansion(ResilienceExpansion expansion) {
5570-
Bits.AbstractFunctionDecl.DefaultArgumentResilienceExpansion =
5571-
unsigned(expansion);
5572-
}
5573-
55745549
/// Set information about the foreign error convention used by this
55755550
/// declaration.
55765551
void setForeignErrorConvention(const ForeignErrorConvention &convention);
@@ -6025,10 +6000,7 @@ class EnumElementDecl : public DeclContext, public ValueDecl {
60256000
Params(Params),
60266001
EqualsLoc(EqualsLoc),
60276002
RawValueExpr(RawValueExpr)
6028-
{
6029-
Bits.EnumElementDecl.DefaultArgumentResilienceExpansion =
6030-
static_cast<unsigned>(ResilienceExpansion::Maximal);
6031-
}
6003+
{}
60326004

60336005
Identifier getName() const { return getFullName().getBaseIdentifier(); }
60346006

@@ -6057,21 +6029,6 @@ class EnumElementDecl : public DeclContext, public ValueDecl {
60576029
TypeCheckedRawValueExpr = e;
60586030
}
60596031

6060-
/// The ResilienceExpansion for default arguments.
6061-
///
6062-
/// In Swift 4 mode, default argument expressions are serialized, and must
6063-
/// obey the restrictions imposed upon inlinable function bodies.
6064-
ResilienceExpansion getDefaultArgumentResilienceExpansion() const {
6065-
return ResilienceExpansion(
6066-
Bits.EnumElementDecl.DefaultArgumentResilienceExpansion);
6067-
}
6068-
6069-
/// Set the ResilienceExpansion for default arguments.
6070-
void setDefaultArgumentResilienceExpansion(ResilienceExpansion expansion) {
6071-
Bits.EnumElementDecl.DefaultArgumentResilienceExpansion =
6072-
unsigned(expansion);
6073-
}
6074-
60756032
/// Return the containing EnumDecl.
60766033
EnumDecl *getParentEnum() const {
60776034
return cast<EnumDecl>(getDeclContext());

include/swift/Serialization/ModuleFormat.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ const uint16_t SWIFTMODULE_VERSION_MAJOR = 0;
5252
/// describe what change you made. The content of this comment isn't important;
5353
/// it just ensures a conflict if two people change the module format.
5454
/// Don't worry about adhering to the 80-column limit for this line.
55-
const uint16_t SWIFTMODULE_VERSION_MINOR = 482; // static subscripts
55+
const uint16_t SWIFTMODULE_VERSION_MINOR = 483; // Remove default arg expansion
5656

5757
using DeclIDField = BCFixed<31>;
5858

@@ -1002,7 +1002,6 @@ namespace decls_block {
10021002
DeclIDField, // overridden decl
10031003
AccessLevelField, // access level
10041004
BCFixed<1>, // requires a new vtable slot
1005-
BCFixed<1>, // default argument resilience expansion
10061005
BCFixed<1>, // 'required' but overridden is not (used for recovery)
10071006
BCVBR<5>, // number of parameter name components
10081007
BCArray<IdentifierIDField> // name components,
@@ -1069,7 +1068,6 @@ namespace decls_block {
10691068
// components plus one
10701069
AccessLevelField, // access level
10711070
BCFixed<1>, // requires a new vtable slot
1072-
BCFixed<1>, // default argument resilience expansion
10731071
BCArray<IdentifierIDField> // name components,
10741072
// followed by TypeID dependencies
10751073
// The record is trailed by:
@@ -1099,7 +1097,6 @@ namespace decls_block {
10991097
AccessorKindField, // accessor kind
11001098
AccessLevelField, // access level
11011099
BCFixed<1>, // requires a new vtable slot
1102-
BCFixed<1>, // default argument resilience expansion
11031100
BCArray<IdentifierIDField> // name components,
11041101
// followed by TypeID dependencies
11051102
// The record is trailed by:
@@ -1158,7 +1155,6 @@ namespace decls_block {
11581155
EnumElementRawValueKindField, // raw value kind
11591156
BCFixed<1>, // negative raw value?
11601157
IdentifierIDField, // raw value
1161-
BCFixed<1>, // default argument resilience expansion
11621158
BCVBR<5>, // number of parameter name components
11631159
BCArray<IdentifierIDField> // name components,
11641160

lib/AST/DeclContext.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -313,11 +313,23 @@ ResilienceExpansion DeclContext::getResilienceExpansion() const {
313313
// Default argument initializer contexts have their resilience expansion
314314
// set when they're type checked.
315315
if (isa<DefaultArgumentInitializer>(dc)) {
316-
if (auto *EED = dyn_cast<EnumElementDecl>(dc->getParent())) {
317-
return EED->getDefaultArgumentResilienceExpansion();
316+
dc = dc->getParent();
317+
318+
const ValueDecl *VD;
319+
if (auto *FD = dyn_cast<AbstractFunctionDecl>(dc)) {
320+
VD = FD;
321+
} else {
322+
VD = cast<EnumElementDecl>(dc);
318323
}
319-
return cast<AbstractFunctionDecl>(dc->getParent())
320-
->getDefaultArgumentResilienceExpansion();
324+
325+
auto access =
326+
VD->getFormalAccessScope(/*useDC=*/nullptr,
327+
/*treatUsableFromInlineAsPublic=*/true);
328+
329+
if (access.isPublic())
330+
return ResilienceExpansion::Minimal;
331+
332+
return ResilienceExpansion::Maximal;
321333
}
322334

323335
// Stored property initializer contexts use minimal resilience expansion

lib/SIL/SILDeclRef.cpp

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -476,19 +476,13 @@ IsSerialized_t SILDeclRef::isSerialized() const {
476476
// Default argument generators are serialized if the containing
477477
// declaration is public.
478478
if (isDefaultArgGenerator()) {
479-
ResilienceExpansion expansion;
480-
if (auto *EED = dyn_cast<EnumElementDecl>(d)) {
481-
expansion = EED->getDefaultArgumentResilienceExpansion();
482-
} else {
483-
expansion = cast<AbstractFunctionDecl>(d)
484-
->getDefaultArgumentResilienceExpansion();
485-
}
486-
switch (expansion) {
487-
case ResilienceExpansion::Minimal:
479+
auto scope =
480+
d->getFormalAccessScope(/*useDC=*/nullptr,
481+
/*treatUsableFromInlineAsPublic=*/true);
482+
483+
if (scope.isPublic())
488484
return IsSerialized;
489-
case ResilienceExpansion::Maximal:
490-
return IsNotSerialized;
491-
}
485+
return IsNotSerialized;
492486
}
493487

494488
// Stored property initializers are inlinable if the type is explicitly

lib/Sema/TypeCheckStmt.cpp

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1744,27 +1744,6 @@ Stmt *StmtChecker::visitBraceStmt(BraceStmt *BS) {
17441744
/// Check the default arguments that occur within this pattern.
17451745
void TypeChecker::checkDefaultArguments(ParameterList *params,
17461746
ValueDecl *VD) {
1747-
auto access =
1748-
VD->getFormalAccessScope(/*useDC=*/nullptr,
1749-
/*treatUsableFromInlineAsPublic=*/true);
1750-
1751-
// In Swift 4 mode, default argument bodies are inlined into the
1752-
// caller.
1753-
if (auto *func = dyn_cast<AbstractFunctionDecl>(VD)) {
1754-
auto expansion = func->getResilienceExpansion();
1755-
if (access.isPublic())
1756-
expansion = ResilienceExpansion::Minimal;
1757-
1758-
func->setDefaultArgumentResilienceExpansion(expansion);
1759-
} else {
1760-
auto *EED = cast<EnumElementDecl>(VD);
1761-
auto expansion = ResilienceExpansion::Maximal;
1762-
if (access.isPublic())
1763-
expansion = ResilienceExpansion::Minimal;
1764-
1765-
EED->setDefaultArgumentResilienceExpansion(expansion);
1766-
}
1767-
17681747
for (auto *param : *params) {
17691748
if (!param->getDefaultValue() ||
17701749
!param->hasInterfaceType() ||

lib/Serialization/Deserialization.cpp

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2064,17 +2064,6 @@ getActualSelfAccessKind(uint8_t raw) {
20642064
return None;
20652065
}
20662066

2067-
static
2068-
Optional<swift::ResilienceExpansion> getActualResilienceExpansion(uint8_t raw) {
2069-
switch (serialization::ResilienceExpansion(raw)) {
2070-
case serialization::ResilienceExpansion::Minimal:
2071-
return swift::ResilienceExpansion::Minimal;
2072-
case serialization::ResilienceExpansion::Maximal:
2073-
return swift::ResilienceExpansion::Maximal;
2074-
}
2075-
return None;
2076-
}
2077-
20782067
/// Translate from the serialization VarDeclSpecifier enumerators, which are
20792068
/// guaranteed to be stable, to the AST ones.
20802069
static Optional<swift::VarDecl::Specifier>
@@ -2512,7 +2501,6 @@ class swift::DeclDeserializer {
25122501
uint8_t storedInitKind, rawAccessLevel;
25132502
DeclID overriddenID;
25142503
bool needsNewVTableEntry, firstTimeRequired;
2515-
uint8_t rawDefaultArgumentResilienceExpansion;
25162504
unsigned numArgNames;
25172505
ArrayRef<uint64_t> argNameAndDependencyIDs;
25182506

@@ -2524,7 +2512,6 @@ class swift::DeclDeserializer {
25242512
overriddenID,
25252513
rawAccessLevel,
25262514
needsNewVTableEntry,
2527-
rawDefaultArgumentResilienceExpansion,
25282515
firstTimeRequired,
25292516
numArgNames,
25302517
argNameAndDependencyIDs);
@@ -2617,15 +2604,6 @@ class swift::DeclDeserializer {
26172604
}
26182605
}
26192606

2620-
if (auto defaultArgumentResilienceExpansion = getActualResilienceExpansion(
2621-
rawDefaultArgumentResilienceExpansion)) {
2622-
ctor->setDefaultArgumentResilienceExpansion(
2623-
*defaultArgumentResilienceExpansion);
2624-
} else {
2625-
MF.error();
2626-
return nullptr;
2627-
}
2628-
26292607
ctor->computeType();
26302608

26312609
return ctor;
@@ -2831,7 +2809,6 @@ class swift::DeclDeserializer {
28312809
DeclID overriddenID;
28322810
DeclID accessorStorageDeclID;
28332811
bool needsNewVTableEntry;
2834-
uint8_t rawDefaultArgumentResilienceExpansion;
28352812
ArrayRef<uint64_t> nameAndDependencyIDs;
28362813

28372814
if (!isAccessor) {
@@ -2845,7 +2822,6 @@ class swift::DeclDeserializer {
28452822
numNameComponentsBiased,
28462823
rawAccessLevel,
28472824
needsNewVTableEntry,
2848-
rawDefaultArgumentResilienceExpansion,
28492825
nameAndDependencyIDs);
28502826
} else {
28512827
decls_block::AccessorLayout::readRecord(scratch, contextID, isImplicit,
@@ -2859,7 +2835,6 @@ class swift::DeclDeserializer {
28592835
rawAccessorKind,
28602836
rawAccessLevel,
28612837
needsNewVTableEntry,
2862-
rawDefaultArgumentResilienceExpansion,
28632838
nameAndDependencyIDs);
28642839
}
28652840

@@ -3021,15 +2996,6 @@ class swift::DeclDeserializer {
30212996
fn->setForcedStaticDispatch(hasForcedStaticDispatch);
30222997
fn->setNeedsNewVTableEntry(needsNewVTableEntry);
30232998

3024-
if (auto defaultArgumentResilienceExpansion = getActualResilienceExpansion(
3025-
rawDefaultArgumentResilienceExpansion)) {
3026-
fn->setDefaultArgumentResilienceExpansion(
3027-
*defaultArgumentResilienceExpansion);
3028-
} else {
3029-
MF.error();
3030-
return nullptr;
3031-
}
3032-
30332999
// Set the interface type.
30343000
fn->computeType();
30353001

@@ -3451,15 +3417,13 @@ class swift::DeclDeserializer {
34513417
bool isImplicit; bool hasPayload; bool isNegative;
34523418
unsigned rawValueKindID;
34533419
IdentifierID rawValueData;
3454-
uint8_t rawResilienceExpansion;
34553420
unsigned numArgNames;
34563421
ArrayRef<uint64_t> argNameAndDependencyIDs;
34573422

34583423
decls_block::EnumElementLayout::readRecord(scratch, contextID,
34593424
isImplicit, hasPayload,
34603425
rawValueKindID, isNegative,
34613426
rawValueData,
3462-
rawResilienceExpansion,
34633427
numArgNames,
34643428
argNameAndDependencyIDs);
34653429

@@ -3518,13 +3482,6 @@ class swift::DeclDeserializer {
35183482
elem->setAccess(std::max(cast<EnumDecl>(DC)->getFormalAccess(),
35193483
AccessLevel::Internal));
35203484

3521-
if (auto resilienceExpansion = getActualResilienceExpansion(
3522-
rawResilienceExpansion)) {
3523-
elem->setDefaultArgumentResilienceExpansion(*resilienceExpansion);
3524-
} else {
3525-
MF.error();
3526-
return nullptr;
3527-
}
35283485
return elem;
35293486
}
35303487

0 commit comments

Comments
 (0)