@@ -105,27 +105,27 @@ MutableTerm RewriteStep::applyAdjustment(RewritePathEvaluator &evaluator,
105
105
auto &term = evaluator.getCurrentTerm ();
106
106
107
107
assert (Kind == AdjustConcreteType);
108
- assert (EndOffset == 0 );
109
- assert (RuleID == 0 );
110
108
111
109
auto &ctx = system.getRewriteContext ();
112
- MutableTerm prefix (term.begin (), term.begin () + StartOffset);
110
+ MutableTerm prefix (term.begin () + StartOffset,
111
+ term.begin () + StartOffset + RuleID);
113
112
114
113
// We're either adding or removing the prefix to each concrete substitution.
115
114
term.back () = term.back ().transformConcreteSubstitutions (
116
115
[&](Term t) -> Term {
117
116
if (Inverse) {
118
117
if (!std::equal (t.begin (),
119
- t.begin () + StartOffset ,
118
+ t.begin () + RuleID ,
120
119
prefix.begin ())) {
121
120
llvm::errs () << " Invalid rewrite path\n " ;
122
121
llvm::errs () << " - Term: " << term << " \n " ;
122
+ llvm::errs () << " - Substitution: " << t << " \n " ;
123
123
llvm::errs () << " - Start offset: " << StartOffset << " \n " ;
124
124
llvm::errs () << " - Expected subterm: " << prefix << " \n " ;
125
125
abort ();
126
126
}
127
127
128
- MutableTerm mutTerm (t.begin () + StartOffset , t.end ());
128
+ MutableTerm mutTerm (t.begin () + RuleID , t.end ());
129
129
return Term::get (mutTerm, ctx);
130
130
} else {
131
131
MutableTerm mutTerm (prefix);
@@ -160,7 +160,6 @@ void RewriteStep::applyShift(RewritePathEvaluator &evaluator,
160
160
void RewriteStep::applyDecompose (RewritePathEvaluator &evaluator,
161
161
const RewriteSystem &system) const {
162
162
assert (Kind == Decompose);
163
- assert (StartOffset == 0 );
164
163
assert (EndOffset == 0 );
165
164
166
165
auto &ctx = system.getRewriteContext ();
@@ -332,4 +331,3 @@ void RewriteLoop::dump(llvm::raw_ostream &out,
332
331
if (isDeleted ())
333
332
out << " [deleted]" ;
334
333
}
335
-
0 commit comments