Skip to content

Commit c08601b

Browse files
committed
RequirementMachine: Implement RewriteSystem::getLocalRules()
1 parent 327e7e5 commit c08601b

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

lib/AST/RequirementMachine/RequirementMachine.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,10 @@ std::string RequirementMachine::getRuleAsStringForDiagnostics(
335335
return out.str();
336336
}
337337

338+
ArrayRef<Rule> RequirementMachine::getLocalRules() const {
339+
return System.getLocalRules();
340+
}
341+
338342
bool RequirementMachine::isComplete() const {
339343
return Complete;
340344
}

lib/AST/RequirementMachine/RequirementMachine.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ class RequirementMachine final {
158158
std::vector<Requirement>
159159
computeMinimalGenericSignatureRequirements(bool reconstituteSugar);
160160

161+
ArrayRef<Rule> getLocalRules() const;
162+
161163
std::string getRuleAsStringForDiagnostics(unsigned ruleID) const;
162164

163165
GenericSignatureErrors getErrors() const;

lib/AST/RequirementMachine/RewriteSystem.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,19 @@ class RewriteSystem final {
144144
return (unsigned)(&rule - &*Rules.begin());
145145
}
146146

147+
/// Get an array of all rewrite rules.
147148
ArrayRef<Rule> getRules() const {
148149
return Rules;
149150
}
150151

152+
/// Get an array of rewrite rules, not including rewrite rules imported
153+
/// from referenced protocols.
154+
ArrayRef<Rule> getLocalRules() const {
155+
return getRules().slice(FirstLocalRule);
156+
}
157+
158+
/// Get the rewrite rule at the given index. Note that this is an index
159+
/// into getRules(), *NOT* getLocalRules().
151160
Rule &getRule(unsigned ruleID) {
152161
return Rules[ruleID];
153162
}

0 commit comments

Comments
 (0)