Skip to content

Commit 1bf5e1b

Browse files
committed
Sema: Refactor ResolveImplicitMemberRequest to not call TypeChecker::checkConformance()
1 parent 821c3a3 commit 1bf5e1b

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

lib/Sema/CodeSynthesis.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,8 +1391,17 @@ ResolveImplicitMemberRequest::evaluate(Evaluator &evaluator,
13911391

13921392
if (auto *conformance = dyn_cast<NormalProtocolConformance>(
13931393
ref.getConcrete()->getRootConformance())) {
1394-
if (conformance->getState() == ProtocolConformanceState::Incomplete) {
1395-
TypeChecker::checkConformance(conformance);
1394+
// Complete evaluate the conformance.
1395+
evaluateOrDefault(evaluator,
1396+
ResolveTypeWitnessesRequest{conformance},
1397+
evaluator::SideEffect());
1398+
1399+
// FIXME: This should be more fine-grained to avoid having to check
1400+
// for a cycle here.
1401+
if (!evaluator.hasActiveRequest(ResolveValueWitnessesRequest{conformance})) {
1402+
evaluateOrDefault(evaluator,
1403+
ResolveValueWitnessesRequest{conformance},
1404+
evaluator::SideEffect());
13961405
}
13971406
}
13981407

0 commit comments

Comments
 (0)