@@ -192,12 +192,6 @@ class MinimalConformances {
192192 // minimization domain.
193193 llvm::DenseSet<unsigned > &RedundantConformances;
194194
195- void decomposeTermIntoConformanceRuleLeftHandSides (
196- MutableTerm term,
197- SmallVectorImpl<unsigned > &result) const ;
198- void decomposeTermIntoConformanceRuleLeftHandSides (
199- MutableTerm term, unsigned ruleID,
200- SmallVectorImpl<unsigned > &result) const ;
201195
202196 bool isConformanceRuleRecoverable (
203197 llvm::SmallDenseSet<unsigned , 4 > &visited,
@@ -252,18 +246,18 @@ class MinimalConformances {
252246// /
253247// / The term should be irreducible, except for a protocol symbol at the end.
254248void
255- MinimalConformances ::decomposeTermIntoConformanceRuleLeftHandSides (
249+ RewriteSystem ::decomposeTermIntoConformanceRuleLeftHandSides (
256250 MutableTerm term, SmallVectorImpl<unsigned > &result) const {
257251 assert (term.back ().getKind () == Symbol::Kind::Protocol);
258252
259253 // If T is canonical and T.[P] => T, then by confluence, T.[P]
260254 // reduces to T in a single step, via a rule V.[P] => V, where
261255 // T == U.V.
262256 RewritePath steps;
263- bool simplified = System. simplify (term, &steps);
257+ bool simplified = simplify (term, &steps);
264258 if (!simplified) {
265259 llvm::errs () << " Term does not conform to protocol: " << term << " \n " ;
266- System. dump (llvm::errs ());
260+ dump (llvm::errs ());
267261 abort ();
268262 }
269263
@@ -273,7 +267,7 @@ MinimalConformances::decomposeTermIntoConformanceRuleLeftHandSides(
273267 const auto &step = *steps.begin ();
274268
275269#ifndef NDEBUG
276- const auto &rule = System. getRule (step.getRuleID ());
270+ const auto &rule = getRule (step.getRuleID ());
277271 assert (rule.isAnyConformanceRule ());
278272 assert (!rule.isIdentityConformanceRule ());
279273#endif
@@ -296,13 +290,13 @@ MinimalConformances::decomposeTermIntoConformanceRuleLeftHandSides(
296290}
297291
298292// / Given a term U and a rule (V.[P] => V), write U.[domain(V)] as a
299- // / product of left hand sdies of conformance rules. The term U should
293+ // / product of left hand sides of conformance rules. The term U should
300294// / be irreducible.
301295void
302- MinimalConformances ::decomposeTermIntoConformanceRuleLeftHandSides (
296+ RewriteSystem ::decomposeTermIntoConformanceRuleLeftHandSides (
303297 MutableTerm term, unsigned ruleID,
304298 SmallVectorImpl<unsigned > &result) const {
305- const auto &rule = System. getRule (ruleID);
299+ const auto &rule = getRule (ruleID);
306300 assert (rule.isAnyConformanceRule ());
307301 assert (!rule.isIdentityConformanceRule ());
308302
@@ -416,7 +410,8 @@ void MinimalConformances::collectConformanceRules() {
416410 mutTerm.add (Symbol::forProtocol (parentProto, Context));
417411
418412 // Get a conformance path for X.[P] and record it.
419- decomposeTermIntoConformanceRuleLeftHandSides (mutTerm, ParentPaths[ruleID]);
413+ System.decomposeTermIntoConformanceRuleLeftHandSides (
414+ mutTerm, ParentPaths[ruleID]);
420415 }
421416 }
422417
@@ -604,8 +599,8 @@ void MinimalConformances::computeCandidateConformancePaths() {
604599
605600 // Write U'.[domain(V)] as a product of left hand sides of protocol
606601 // conformance rules.
607- decomposeTermIntoConformanceRuleLeftHandSides (term, pair. second ,
608- conformancePath);
602+ System. decomposeTermIntoConformanceRuleLeftHandSides (
603+ term, pair. second , conformancePath);
609604
610605 // This decomposition defines a conformance access path for each
611606 // conformance rule we saw in empty context.
@@ -947,7 +942,7 @@ void MinimalConformances::dumpMinimalConformances(
947942// / already eliminated all redundant rewrite rules that are not
948943// / conformance rules.
949944void RewriteSystem::computeMinimalConformances (
950- llvm::DenseSet<unsigned > &redundantConformances) {
945+ llvm::DenseSet<unsigned > &redundantConformances) const {
951946 MinimalConformances builder (*this , redundantConformances);
952947
953948 builder.collectConformanceRules ();
0 commit comments