@@ -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