@@ -1527,17 +1527,23 @@ void IRGenerator::emitDynamicReplacements() {
1527
1527
llvm::SmallSet<OpaqueTypeArchetypeType *, 8 > newUniqueOpaqueTypes;
1528
1528
llvm::SmallSet<OpaqueTypeArchetypeType *, 8 > origUniqueOpaqueTypes;
1529
1529
for (auto *newFunc : DynamicReplacements) {
1530
- if (!newFunc->getLoweredFunctionType ()->hasOpaqueArchetype ())
1530
+ auto newResultTy = newFunc->getLoweredFunctionType ()
1531
+ ->getAllResultsInterfaceType ()
1532
+ .getASTType ();
1533
+ if (!newResultTy->hasOpaqueArchetype ())
1531
1534
continue ;
1532
- CanType (newFunc-> getLoweredFunctionType ()) .visit ([&](CanType ty) {
1535
+ newResultTy .visit ([&](CanType ty) {
1533
1536
if (auto opaque = ty->getAs <OpaqueTypeArchetypeType>())
1534
1537
if (newUniqueOpaqueTypes.insert (opaque).second )
1535
1538
newFuncTypes.push_back (opaque);
1536
1539
});
1537
1540
auto *origFunc = newFunc->getDynamicallyReplacedFunction ();
1538
1541
assert (origFunc);
1539
- assert (origFunc->getLoweredFunctionType ()->hasOpaqueArchetype ());
1540
- CanType (origFunc->getLoweredFunctionType ()).visit ([&](CanType ty) {
1542
+ auto origResultTy = origFunc->getLoweredFunctionType ()
1543
+ ->getAllResultsInterfaceType ()
1544
+ .getASTType ();
1545
+ assert (origResultTy->hasOpaqueArchetype ());
1546
+ origResultTy.visit ([&](CanType ty) {
1541
1547
if (auto opaque = ty->getAs <OpaqueTypeArchetypeType>())
1542
1548
if (origUniqueOpaqueTypes.insert (opaque).second )
1543
1549
origFuncTypes.push_back (opaque);
0 commit comments