Skip to content

Commit 0822460

Browse files
committed
AST: Pass SubstFlags::PreservePackExpansionLevel in a few more places
1 parent 3630ce7 commit 0822460

File tree

3 files changed

+12
-5
lines changed

3 files changed

+12
-5
lines changed

lib/APIDigester/ModuleAnalyzerNodes.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1633,7 +1633,9 @@ SwiftDeclCollector::constructTypeNode(Type T, TypeInitInfo Info) {
16331633
ReplaceOpaqueTypesWithUnderlyingTypes replacer(
16341634
/*inContext=*/nullptr, ResilienceExpansion::Maximal,
16351635
/*isWholeModuleContext=*/false);
1636-
T = T.subst(replacer, replacer, SubstFlags::SubstituteOpaqueArchetypes)
1636+
T = T.subst(replacer, replacer,
1637+
SubstFlags::SubstituteOpaqueArchetypes |
1638+
SubstFlags::PreservePackExpansionLevel)
16371639
->getCanonicalType();
16381640
}
16391641
}

lib/AST/TypeSubstitution.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1016,7 +1016,9 @@ static Type substOpaqueTypesWithUnderlyingTypesRec(
10161016
llvm::DenseSet<ReplaceOpaqueTypesWithUnderlyingTypes::SeenDecl> &decls) {
10171017
ReplaceOpaqueTypesWithUnderlyingTypes replacer(inContext, contextExpansion,
10181018
isWholeModuleContext, decls);
1019-
return ty.subst(replacer, replacer, SubstFlags::SubstituteOpaqueArchetypes);
1019+
return ty.subst(replacer, replacer,
1020+
SubstFlags::SubstituteOpaqueArchetypes |
1021+
SubstFlags::PreservePackExpansionLevel);
10201022
}
10211023

10221024
/// Checks that \p dc has access to \p ty for the purposes of an opaque
@@ -1169,7 +1171,8 @@ static ProtocolConformanceRef substOpaqueTypesWithUnderlyingTypesRec(
11691171
ReplaceOpaqueTypesWithUnderlyingTypes replacer(inContext, contextExpansion,
11701172
isWholeModuleContext, decls);
11711173
return ref.subst(origType, replacer, replacer,
1172-
SubstFlags::SubstituteOpaqueArchetypes);
1174+
SubstFlags::SubstituteOpaqueArchetypes |
1175+
SubstFlags::PreservePackExpansionLevel);
11731176
}
11741177

11751178
ProtocolConformanceRef swift::substOpaqueTypesWithUnderlyingTypes(

lib/SIL/IR/SILFunctionType.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4800,14 +4800,16 @@ static bool areABICompatibleParamsOrReturns(SILType a, SILType b,
48004800
if (aa.getASTType()->hasOpaqueArchetype())
48014801
opaqueTypesSubstituted = aa.subst(inFunction->getModule(), replacer,
48024802
replacer, CanGenericSignature(),
4803-
SubstFlags::SubstituteOpaqueArchetypes);
4803+
SubstFlags::SubstituteOpaqueArchetypes |
4804+
SubstFlags::PreservePackExpansionLevel);
48044805

48054806
auto opaqueTypesSubstituted2 = bb;
48064807
if (bb.getASTType()->hasOpaqueArchetype())
48074808
opaqueTypesSubstituted2 =
48084809
bb.subst(inFunction->getModule(), replacer, replacer,
48094810
CanGenericSignature(),
4810-
SubstFlags::SubstituteOpaqueArchetypes);
4811+
SubstFlags::SubstituteOpaqueArchetypes |
4812+
SubstFlags::PreservePackExpansionLevel);
48114813
if (opaqueTypesSubstituted == opaqueTypesSubstituted2)
48124814
continue;
48134815
}

0 commit comments

Comments
 (0)