mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
IRGen: Fix enable-testing of internal with resilient super class
Enable testing makes `internal` types visible from outside the module. We can no longer treat super classes as resilient. Follow-up to #41044. rdar://90489618
This commit is contained in:
@@ -229,11 +229,14 @@ namespace {
|
||||
auto superclassDecl = superclassType.getClassOrBoundGenericClass();
|
||||
assert(superclassType && superclassDecl);
|
||||
|
||||
if (IGM.hasResilientMetadata(superclassDecl, ResilienceExpansion::Maximal))
|
||||
if (IGM.hasResilientMetadata(superclassDecl,
|
||||
ResilienceExpansion::Maximal,
|
||||
rootClass))
|
||||
Options |= ClassMetadataFlags::ClassHasResilientAncestry;
|
||||
|
||||
// If the superclass has resilient storage, don't walk its fields.
|
||||
if (IGM.isResilient(superclassDecl, ResilienceExpansion::Maximal)) {
|
||||
if (IGM.isResilient(superclassDecl, ResilienceExpansion::Maximal,
|
||||
rootClass)) {
|
||||
Options |= ClassMetadataFlags::ClassHasResilientMembers;
|
||||
|
||||
// If the superclass is generic, we have to assume that its layout
|
||||
@@ -263,10 +266,11 @@ namespace {
|
||||
if (classHasIncompleteLayout(IGM, theClass))
|
||||
Options |= ClassMetadataFlags::ClassHasMissingMembers;
|
||||
|
||||
if (IGM.hasResilientMetadata(theClass, ResilienceExpansion::Maximal))
|
||||
if (IGM.hasResilientMetadata(theClass, ResilienceExpansion::Maximal,
|
||||
rootClass))
|
||||
Options |= ClassMetadataFlags::ClassHasResilientAncestry;
|
||||
|
||||
if (IGM.isResilient(theClass, ResilienceExpansion::Maximal)) {
|
||||
if (IGM.isResilient(theClass, ResilienceExpansion::Maximal, rootClass)) {
|
||||
Options |= ClassMetadataFlags::ClassHasResilientMembers;
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user