fix user:goal_expansion
This commit is contained in:
@@ -882,25 +882,44 @@ impl ListingCompiler {
|
|||||||
|
|
||||||
let (mut len, mut queue_len) = ((preds.0).0.len(), preds.1.len());
|
let (mut len, mut queue_len) = ((preds.0).0.len(), preds.1.len());
|
||||||
|
|
||||||
let module_preds = self
|
if self.module.is_some() && hook.has_module_scope() {
|
||||||
.user_term_dir
|
let module_preds = self
|
||||||
.entry(key.clone())
|
.user_term_dir
|
||||||
.or_insert((Predicate::new(), VecDeque::from(vec![])));
|
.entry(key.clone())
|
||||||
|
.or_insert((Predicate::new(), VecDeque::from(vec![])));
|
||||||
|
|
||||||
if let Some(ref mut module) = &mut self.module {
|
if let Some(ref mut module) = &mut self.module {
|
||||||
module.add_expansion_record(hook, clause.clone(), queue.clone());
|
module.add_expansion_record(hook, clause.clone(), queue.clone());
|
||||||
module.add_local_expansion(hook, clause.clone(), queue.clone());
|
module.add_local_expansion(hook, clause.clone(), queue.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
(module_preds.0).0.push(clause);
|
(module_preds.0).0.push(clause);
|
||||||
module_preds.1.extend(queue.into_iter());
|
module_preds.1.extend(queue.into_iter());
|
||||||
|
|
||||||
(preds.0).0.extend((module_preds.0).0.iter().cloned());
|
(preds.0).0.extend((module_preds.0).0.iter().cloned());
|
||||||
preds.1.extend(module_preds.1.iter().cloned());
|
preds.1.extend(module_preds.1.iter().cloned());
|
||||||
|
} else {
|
||||||
|
let module_preds = self
|
||||||
|
.user_term_dir
|
||||||
|
.entry(key.clone())
|
||||||
|
.or_insert((Predicate::new(), VecDeque::from(vec![])));
|
||||||
|
|
||||||
|
if let Some(ref mut module) = &mut self.module {
|
||||||
|
module.add_expansion_record(hook, clause.clone(), queue.clone());
|
||||||
|
module.add_local_expansion(hook, clause.clone(), queue.clone());
|
||||||
|
}
|
||||||
|
|
||||||
if !(self.module.is_some() && hook.has_module_scope()) {
|
|
||||||
len += 1;
|
len += 1;
|
||||||
queue_len += queue_len;
|
queue_len += queue_len;
|
||||||
|
|
||||||
|
(preds.0).0.push(clause.clone());
|
||||||
|
preds.1.extend(queue.iter().cloned());
|
||||||
|
|
||||||
|
(preds.0).0.extend((module_preds.0).0.iter().cloned());
|
||||||
|
preds.1.extend(module_preds.1.iter().cloned());
|
||||||
|
|
||||||
|
(module_preds.0).0.push(clause);
|
||||||
|
module_preds.1.extend(queue.into_iter());
|
||||||
}
|
}
|
||||||
|
|
||||||
(len, queue_len)
|
(len, queue_len)
|
||||||
|
|||||||
Reference in New Issue
Block a user