@@ -749,11 +749,12 @@ namespace {
749749 RetTy visitTupleType (CanTupleType type, AbstractionPattern origType,
750750 IsTypeExpansionSensitive_t isSensitive) {
751751 RecursiveProperties props;
752- for (unsigned i = 0 , e = type->getNumElements (); i < e; ++i) {
753- props.addSubobject (classifyType (origType.getTupleElementType (i),
754- type.getElementType (i),
755- TC, Expansion));
756- }
752+ origType.forEachExpandedTupleElement (type,
753+ [&](AbstractionPattern origEltType, CanType substEltType,
754+ const TupleTypeElt &elt) {
755+ props.addSubobject (
756+ classifyType (origEltType, substEltType, TC, Expansion));
757+ });
757758 props = mergeIsTypeExpansionSensitive (isSensitive, props);
758759 return asImpl ().handleAggregateByProperties (type, props);
759760 }
@@ -2250,12 +2251,12 @@ namespace {
22502251 AbstractionPattern origType,
22512252 IsTypeExpansionSensitive_t isSensitive) {
22522253 RecursiveProperties properties;
2253- for ( unsigned i = 0 , e = tupleType-> getNumElements (); i < e; ++i) {
2254- auto eltType = tupleType. getElementType (i);
2255- auto origEltType = origType. getTupleElementType (i);
2256- auto &lowering = TC. getTypeLowering (origEltType, eltType, Expansion);
2257- properties. addSubobject (lowering. getRecursiveProperties ( ));
2258- }
2254+ origType. forEachExpandedTupleElement ( tupleType,
2255+ [&](AbstractionPattern origEltType, CanType substEltType,
2256+ const TupleTypeElt &elt) {
2257+ properties. addSubobject (
2258+ classifyType (origEltType, substEltType, TC, Expansion ));
2259+ });
22592260 properties = mergeIsTypeExpansionSensitive (isSensitive, properties);
22602261
22612262 return handleAggregateByProperties<LoadableTupleTypeLowering>(tupleType,
@@ -2343,7 +2344,8 @@ namespace {
23432344 auto sig = field->getDeclContext ()->getGenericSignatureOfContext ();
23442345 auto interfaceTy = field->getInterfaceType ()->getReducedType (sig);
23452346 auto origFieldType = origType.unsafeGetSubstFieldType (field,
2346- interfaceTy);
2347+ interfaceTy,
2348+ subMap);
23472349
23482350 properties.addSubobject (classifyType (origFieldType, substFieldType,
23492351 TC, Expansion));
@@ -2422,7 +2424,8 @@ namespace {
24222424
24232425 auto origEltType = origType.unsafeGetSubstFieldType (elt,
24242426 elt->getArgumentInterfaceType ()
2425- ->getReducedType (D->getGenericSignature ()));
2427+ ->getReducedType (D->getGenericSignature ()),
2428+ subMap);
24262429 properties.addSubobject (classifyType (origEltType, substEltType,
24272430 TC, Expansion));
24282431 properties =
@@ -2765,7 +2768,8 @@ bool TypeConverter::visitAggregateLeaves(
27652768 auto interfaceTy =
27662769 structField->getInterfaceType ()->getReducedType (sig);
27672770 auto origFieldType =
2768- origTy.unsafeGetSubstFieldType (structField, interfaceTy);
2771+ origTy.unsafeGetSubstFieldType (structField, interfaceTy,
2772+ subMap);
27692773 insertIntoWorklist (substFieldTy, origFieldType, structField,
27702774 llvm::None);
27712775 }
@@ -2782,7 +2786,7 @@ bool TypeConverter::visitAggregateLeaves(
27822786 ->getCanonicalType ();
27832787 auto origElementTy = origTy.unsafeGetSubstFieldType (
27842788 element, element->getArgumentInterfaceType ()->getReducedType (
2785- decl->getGenericSignature ()));
2789+ decl->getGenericSignature ()), subMap );
27862790
27872791 insertIntoWorklist (substElementType, origElementTy, element,
27882792 llvm::None);
0 commit comments