@@ -105,27 +105,27 @@ MutableTerm RewriteStep::applyAdjustment(RewritePathEvaluator &evaluator,
105105 auto &term = evaluator.getCurrentTerm ();
106106
107107 assert (Kind == AdjustConcreteType);
108- assert (EndOffset == 0 );
109- assert (RuleID == 0 );
110108
111109 auto &ctx = system.getRewriteContext ();
112- MutableTerm prefix (term.begin (), term.begin () + StartOffset);
110+ MutableTerm prefix (term.begin () + StartOffset,
111+ term.begin () + StartOffset + RuleID);
113112
114113 // We're either adding or removing the prefix to each concrete substitution.
115114 term.back () = term.back ().transformConcreteSubstitutions (
116115 [&](Term t) -> Term {
117116 if (Inverse) {
118117 if (!std::equal (t.begin (),
119- t.begin () + StartOffset ,
118+ t.begin () + RuleID ,
120119 prefix.begin ())) {
121120 llvm::errs () << " Invalid rewrite path\n " ;
122121 llvm::errs () << " - Term: " << term << " \n " ;
122+ llvm::errs () << " - Substitution: " << t << " \n " ;
123123 llvm::errs () << " - Start offset: " << StartOffset << " \n " ;
124124 llvm::errs () << " - Expected subterm: " << prefix << " \n " ;
125125 abort ();
126126 }
127127
128- MutableTerm mutTerm (t.begin () + StartOffset , t.end ());
128+ MutableTerm mutTerm (t.begin () + RuleID , t.end ());
129129 return Term::get (mutTerm, ctx);
130130 } else {
131131 MutableTerm mutTerm (prefix);
@@ -160,7 +160,6 @@ void RewriteStep::applyShift(RewritePathEvaluator &evaluator,
160160void RewriteStep::applyDecompose (RewritePathEvaluator &evaluator,
161161 const RewriteSystem &system) const {
162162 assert (Kind == Decompose);
163- assert (StartOffset == 0 );
164163 assert (EndOffset == 0 );
165164
166165 auto &ctx = system.getRewriteContext ();
@@ -332,4 +331,3 @@ void RewriteLoop::dump(llvm::raw_ostream &out,
332331 if (isDeleted ())
333332 out << " [deleted]" ;
334333}
335-
0 commit comments