let mut target = Vec::new();
// reset self.marker.arg_c to 1.
- self.marker.advance(term_loc, *term);
+ self.marker.advance(term_loc, term.arity());
self.marker.mark_var(name, Level::Shallow, vr, term_loc, &mut target);
code.push(Line::Query(target));
let mut target = Vec::new();
// reset self.marker.arg_c to 1.
- self.marker.advance(term_loc, *term);
+ self.marker.advance(term_loc, term.arity());
self.marker.mark_var(name, Level::Shallow, vr, term_loc, &mut target);
code.push(Line::Query(target));
let mut target = Vec::new();
// reset self.marker.arg_c to 1.
- self.marker.advance(term_loc, *term);
+ self.marker.advance(term_loc, term.arity());
self.marker.mark_var(name, Level::Shallow, vr, term_loc, &mut target);
code.push(Line::Query(target));
}
},
_ if chunk_num == 0 => {
- self.marker.advance(GenContext::Head, *term);
+ self.marker.advance(GenContext::Head, term.arity());
let iter = term.post_order_iter();
code.push(Line::Query(self.compile_target(iter, term_loc, is_exposed)));
let &Rule { head: (ref p0, ref p1), ref clauses } = rule;
let mut code = Vec::new();
- self.marker.advance(GenContext::Head, QueryTermRef::Term(p0));
+ self.marker.advance(GenContext::Head, p0.arity());
self.compile_seq_prelude(&conjunct_info, &mut code);
if p0.is_clause() {
let iter = ChunkedIterator::from_fact(term);
self.collect_var_data(iter);
- self.marker.advance(GenContext::Head, QueryTermRef::Term(term));
+ self.marker.advance(GenContext::Head, term.arity());
let mut code = Vec::new();
index: usize,
is_exposed: bool)
{
- self.marker.advance(term_loc, term);
+ self.marker.advance(term_loc, term.arity());
let iter = term.post_order_iter();
let compiled_query = Line::Query(self.compile_target(iter, term_loc, is_exposed));
self.bindings.clear();
}
- fn advance(&mut self, term_loc: GenContext, term: QueryTermRef<'a>) {
+ fn advance(&mut self, term_loc: GenContext, arity: usize) {
if let GenContext::Head = term_loc {
self.arg_c = 1;
- self.temp_c = max(term.arity() + 1, self.temp_c);
+ self.temp_c = max(arity + 1, self.temp_c);
} else {
self.arg_c = 1;
- self.temp_c = term.arity() + 1;
+ self.temp_c = arity + 1;
}
}