Skip to content

Commit a6fe81e

Browse files
committed
fix: wrong conditionals to insert forall predicates
1 parent 3d96369 commit a6fe81e

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

src/analyze/annot_fn.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ impl<'tcx> AnnotFnTranslator<'tcx> {
534534
outer_generic_args = ?self.generic_args,
535535
"resolving predicate call in formula"
536536
);
537-
let (is_unresolved_args, generic_args) =
537+
let (mut is_unresolved_args, generic_args) =
538538
match self.instantiate_generics(generic_args, self.generic_args) {
539539
Some(args) => (false, args),
540540
None => (true, generic_args),
@@ -547,13 +547,19 @@ impl<'tcx> AnnotFnTranslator<'tcx> {
547547
generic_args,
548548
)
549549
.unwrap();
550-
let pred_def_id = instance.map_or(def_id, |instance| instance.def_id());
550+
let pred_def_id = if let Some(instance) = instance {
551+
instance.def_id()
552+
} else {
553+
is_unresolved_args = true;
554+
def_id
555+
};
551556

552557
let pred = if is_unresolved_args {
553-
refine::user_defined_pred(self.tcx, pred_def_id).into()
554-
} else {
555558
refine::forall_pred(self.tcx, pred_def_id).into()
559+
} else {
560+
refine::user_defined_pred(self.tcx, pred_def_id).into()
556561
};
562+
tracing::debug!("resolved predicate call in formula: {:?}", pred);
557563
let arg_terms = args.iter().map(|e| self.to_term(e)).collect();
558564
let atom = chc::Atom::new(pred, arg_terms);
559565
return FormulaOrTerm::Formula(chc::Formula::Atom(atom));

0 commit comments

Comments
 (0)