Skip to content

Commit 74d1478

Browse files
committed
Address review comment TypeBase::hasOpaqueArchetypePropertiesOrCases
1 parent 4f300bb commit 74d1478

File tree

3 files changed

+10
-13
lines changed

3 files changed

+10
-13
lines changed

include/swift/SIL/TypeLowering.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -862,7 +862,7 @@ class TypeConverter {
862862

863863
CanType getLoweredTypeOfGlobal(VarDecl *var);
864864

865-
bool hasOpaqueArchetypePropertiesOrCases(CanType ty);
865+
bool hasOpaqueArchetypeOrPropertiesOrCases(CanType ty);
866866

867867
/// Return the SILFunctionType for a native function value of the
868868
/// given type.

lib/AST/Type.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4641,21 +4641,20 @@ Type TypeBase::openAnyExistentialType(OpenedArchetypeType *&opened) {
46414641
}
46424642

46434643
bool TypeBase::hasOpaqueArchetypePropertiesOrCases() {
4644-
if (hasOpaqueArchetype())
4645-
return true;
4646-
46474644
if (auto *structDecl = getStructOrBoundGenericStruct()) {
46484645
for (auto *field : structDecl->getStoredProperties()) {
4649-
auto fieldTy = field->getInterfaceType();
4650-
if (fieldTy->getCanonicalType()->hasOpaqueArchetypePropertiesOrCases())
4646+
auto fieldTy = field->getInterfaceType()->getCanonicalType();
4647+
if (fieldTy->hasOpaqueArchetype() ||
4648+
fieldTy->hasOpaqueArchetypePropertiesOrCases())
46514649
return true;
46524650
}
46534651
}
46544652

46554653
if (auto *enumDecl = getEnumOrBoundGenericEnum()) {
46564654
for (auto *elt : enumDecl->getAllElements()) {
46574655
auto eltType = elt->getInterfaceType();
4658-
if (eltType->getCanonicalType()->hasOpaqueArchetypePropertiesOrCases())
4656+
if (eltType->hasOpaqueArchetype() ||
4657+
eltType->getCanonicalType()->hasOpaqueArchetypePropertiesOrCases())
46594658
return true;
46604659
}
46614660
}

lib/SIL/TypeLowering.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1522,7 +1522,7 @@ TypeConverter::getSILFunctionType(TypeExpansionContext context,
15221522
getLoweredRValueType(context, origType, substType));
15231523
}
15241524

1525-
bool TypeConverter::hasOpaqueArchetypePropertiesOrCases(CanType ty) {
1525+
bool TypeConverter::hasOpaqueArchetypeOrPropertiesOrCases(CanType ty) {
15261526
if (ty->hasOpaqueArchetype())
15271527
return true;
15281528

@@ -1541,14 +1541,13 @@ TypeConverter::getTypeLowering(AbstractionPattern origType,
15411541
TypeExpansionContext forExpansion) {
15421542
CanType substType = origSubstType->getCanonicalType();
15431543
auto origHadOpaqueTypeArchetype =
1544-
origSubstType->hasOpaqueArchetype() ||
1545-
hasOpaqueArchetypePropertiesOrCases(origSubstType->getCanonicalType());
1544+
hasOpaqueArchetypeOrPropertiesOrCases(origSubstType->getCanonicalType());
15461545
auto key = getTypeKey(origType, substType, forExpansion);
15471546
assert((!key.isDependent() || getCurGenericContext())
15481547
&& "dependent type outside of generic context?!");
15491548
assert(!substType->is<InOutType>());
15501549

1551-
auto *candidateLowering = find(key);
1550+
auto *candidateLowering = find(key.getKeyForMinimalExpansion());
15521551
auto *lowering = getTypeLoweringForExpansion(
15531552
key, forExpansion, candidateLowering, origHadOpaqueTypeArchetype);
15541553
if (lowering != nullptr)
@@ -1741,8 +1740,7 @@ TypeConverter::getTypeLowering(SILType type,
17411740
loweredType, forExpansion);
17421741

17431742
auto origHadOpaqueTypeArchetype =
1744-
loweredType->hasOpaqueArchetype() ||
1745-
hasOpaqueArchetypePropertiesOrCases(loweredType);
1743+
hasOpaqueArchetypeOrPropertiesOrCases(loweredType);
17461744

17471745
return getTypeLoweringForLoweredType(key, forExpansion,
17481746
origHadOpaqueTypeArchetype);

0 commit comments

Comments
 (0)