Skip to content

Commit deb62f7

Browse files
committed
[RequirementMachine] Add a helper method to RequirementMachine to compute
all requirement diagnostics from the minimal rewrite system.
1 parent 99f5e36 commit deb62f7

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

lib/AST/RequirementMachine/RequirementMachine.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,12 @@ void RequirementMachine::freeze() {
530530
System.freeze();
531531
}
532532

533+
void RequirementMachine::computeRequirementDiagnostics(
534+
SmallVectorImpl<RequirementError> &errors, SourceLoc signatureLoc) {
535+
System.computeRedundantRequirementDiagnostics(errors);
536+
System.computeConflictDiagnostics(errors, signatureLoc);
537+
}
538+
533539
std::string RequirementMachine::getRuleAsStringForDiagnostics(
534540
unsigned ruleID) const {
535541
const auto &rule = System.getRule(ruleID);

lib/AST/RequirementMachine/RequirementMachine.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "llvm/ADT/DenseMap.h"
1919
#include <vector>
2020

21+
#include "Diagnostics.h"
2122
#include "PropertyMap.h"
2223
#include "RewriteContext.h"
2324
#include "RewriteSystem.h"
@@ -115,6 +116,9 @@ class RequirementMachine final {
115116

116117
void freeze();
117118

119+
void computeRequirementDiagnostics(SmallVectorImpl<RequirementError> &errors,
120+
SourceLoc signatureLoc);
121+
118122
MutableTerm getLongestValidPrefix(const MutableTerm &term) const;
119123

120124
void buildRequirementsFromRules(

lib/AST/RequirementMachine/RequirementMachineRequests.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -410,8 +410,7 @@ RequirementSignatureRequestRQM::evaluate(Evaluator &evaluator,
410410
if (ctx.LangOpts.RequirementMachineProtocolSignatures ==
411411
RequirementMachineMode::Enabled) {
412412
SmallVector<RequirementError, 4> errors;
413-
machine->System.computeRedundantRequirementDiagnostics(errors);
414-
machine->System.computeConflictDiagnostics(errors, proto->getLoc());
413+
machine->computeRequirementDiagnostics(errors, proto->getLoc());
415414
diagnoseRequirementErrors(ctx, errors,
416415
/*allowConcreteGenericParams=*/false);
417416
}
@@ -844,8 +843,7 @@ InferredGenericSignatureRequestRQM::evaluate(
844843
if (attempt == 0 &&
845844
ctx.LangOpts.RequirementMachineInferredSignatures ==
846845
RequirementMachineMode::Enabled) {
847-
machine->System.computeRedundantRequirementDiagnostics(errors);
848-
machine->System.computeConflictDiagnostics(errors, loc);
846+
machine->computeRequirementDiagnostics(errors, loc);
849847
diagnoseRequirementErrors(ctx, errors, allowConcreteGenericParams);
850848
}
851849

0 commit comments

Comments
 (0)