@@ -76,7 +76,8 @@ RequirementMachine::computeMinimalProtocolRequirements() {
7676 reqs, aliases);
7777
7878 result[proto] = RequirementSignature (ctx.AllocateCopy (reqs),
79- ctx.AllocateCopy (aliases));
79+ ctx.AllocateCopy (aliases),
80+ getErrors ());
8081 }
8182
8283 return result;
@@ -133,11 +134,11 @@ RequirementSignatureRequestRQM::evaluate(Evaluator &evaluator,
133134 if (otherProto != proto) {
134135 ctx.evaluator .cacheOutput (
135136 RequirementSignatureRequestRQM{const_cast <ProtocolDecl *>(otherProto)},
136- RequirementSignature ());
137+ RequirementSignature (GenericSignatureErrorFlags::CompletionFailed ));
137138 }
138139 }
139140
140- return RequirementSignature ();
141+ return RequirementSignature (GenericSignatureErrorFlags::CompletionFailed );
141142 }
142143
143144 auto minimalRequirements = machine->computeMinimalProtocolRequirements ();
@@ -252,7 +253,7 @@ AbstractGenericSignatureRequestRQM::evaluate(
252253 // If nothing is added to the base signature, just return the base
253254 // signature.
254255 if (addedParameters.empty () && addedRequirements.empty ())
255- return GenericSignatureWithError (baseSignature, /* hadError= */ false );
256+ return GenericSignatureWithError (baseSignature, GenericSignatureErrors () );
256257
257258 ASTContext &ctx = addedParameters.empty ()
258259 ? addedRequirements.front ().getFirstType ()->getASTContext ()
@@ -270,7 +271,7 @@ AbstractGenericSignatureRequestRQM::evaluate(
270271 if (addedRequirements.empty ()) {
271272 auto result = GenericSignature::get (genericParams,
272273 baseSignature.getRequirements ());
273- return GenericSignatureWithError (result, /* hadError= */ false );
274+ return GenericSignatureWithError (result, GenericSignatureErrors () );
274275 }
275276
276277 // If the request is non-canonical, we won't need to build our own
@@ -388,12 +389,12 @@ AbstractGenericSignatureRequestRQM::evaluate(
388389 /* reconstituteSugar=*/ false );
389390
390391 auto result = GenericSignature::get (genericParams, minimalRequirements);
391- bool hadError = machine->hadError ();
392+ auto errorFlags = machine->getErrors ();
392393
393- if (!hadError )
394+ if (!errorFlags )
394395 result.verify ();
395396
396- return GenericSignatureWithError (result, hadError );
397+ return GenericSignatureWithError (result, errorFlags );
397398}
398399
399400GenericSignatureWithError
@@ -522,28 +523,28 @@ InferredGenericSignatureRequestRQM::evaluate(
522523 rule);
523524
524525 auto result = GenericSignature::get (genericParams, {});
525- return GenericSignatureWithError (result, /* hadError=*/ true );
526+ return GenericSignatureWithError (
527+ result, GenericSignatureErrorFlags::CompletionFailed);
526528 }
527529
528530 auto minimalRequirements =
529531 machine->computeMinimalGenericSignatureRequirements (
530532 /* reconstituteSugar=*/ true );
531533
532534 auto result = GenericSignature::get (genericParams, minimalRequirements);
533- bool hadError = machine->hadError ();
535+ auto errorFlags = machine->getErrors ();
534536
535537 if (ctx.LangOpts .RequirementMachineInferredSignatures ==
536538 RequirementMachineMode::Enabled) {
537539 machine->System .computeRedundantRequirementDiagnostics (errors);
538- hadError |= diagnoseRequirementErrors (ctx, errors,
539- allowConcreteGenericParams);
540+ diagnoseRequirementErrors (ctx, errors, allowConcreteGenericParams);
540541 }
541542
542543 // FIXME: Handle allowConcreteGenericParams
543544
544545 // Check invariants.
545- if (!hadError )
546+ if (!errorFlags )
546547 result.verify ();
547548
548- return GenericSignatureWithError (result, hadError );
549+ return GenericSignatureWithError (result, errorFlags );
549550}
0 commit comments