Skip to content

Commit 5c7de10

Browse files
committed
AST: Fix infinite recursion if TypeBase::getReducedShape() called with a type parameter
1 parent 3ac6c58 commit 5c7de10

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

lib/AST/ParameterPack.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,15 @@ CanPackType PackType::getReducedShape() {
318318
}
319319

320320
CanType TypeBase::getReducedShape() {
321+
if (isTypeParameter()) {
322+
auto *genericParam = getRootGenericParam();
323+
if (genericParam->isParameterPack())
324+
return genericParam->getCanonicalType();
325+
326+
// Use () as a placeholder for scalar shape.
327+
return getASTContext().TheEmptyTupleType;
328+
}
329+
321330
if (auto *packArchetype = getAs<PackArchetypeType>())
322331
return packArchetype->getReducedShape();
323332

0 commit comments

Comments
 (0)