@@ -223,7 +223,8 @@ Optional<Type> ConcreteContraction::substTypeParameter(
223
223
224
224
auto conformance = ((*substBaseType)->isTypeParameter ()
225
225
? ProtocolConformanceRef (proto)
226
- : module ->lookupConformance (*substBaseType, proto));
226
+ : module ->lookupConformance (*substBaseType, proto,
227
+ /* allowMissing=*/ true ));
227
228
228
229
// The base type doesn't conform, in which case the requirement remains
229
230
// unsubstituted.
@@ -363,7 +364,8 @@ ConcreteContraction::substRequirement(const Requirement &req) const {
363
364
auto *proto = req.getProtocolDecl ();
364
365
auto *module = proto->getParentModule ();
365
366
if (!substFirstType->isTypeParameter () &&
366
- !module ->lookupConformance (substFirstType, proto)) {
367
+ !module ->lookupConformance (substFirstType, proto,
368
+ /* allowMissing=*/ true )) {
367
369
// Handle the case of <T where T : P, T : C> where C is a class and
368
370
// C does not conform to P by leaving the conformance requirement
369
371
// unsubstituted.
@@ -664,4 +666,4 @@ bool swift::rewriting::performConcreteContraction(
664
666
ConcreteContraction concreteContraction (debug);
665
667
return concreteContraction.performConcreteContraction (
666
668
requirements, result, errors);
667
- }
669
+ }
0 commit comments