selcx,
register_region_obligations: self.register_region_obligations
});
- debug!("select: outcome={:?}", outcome);
+ debug!("select: outcome={:#?}", outcome);
// FIXME: if we kept the original cache key, we could mark projection
// obligations as complete for the projection cache here.
let span = obligation.cause.span;
match infcx.leak_check(false, span, &skol_map, snapshot) {
Ok(()) => Ok(infcx.plug_leaks(skol_map, snapshot, result)),
- Err(e) => Err(MismatchedProjectionTypes { err: e }),
+ Err(e) => {
+ debug!("poly_project_and_unify_type: leak check encountered error {:?}", e);
+ Err(MismatchedProjectionTypes { err: e })
+ }
}
}
Err(e) => {
obligations.extend(inferred_obligations);
Ok(Some(obligations))
},
- Err(err) => Err(MismatchedProjectionTypes { err: err }),
+ Err(err) => {
+ debug!("project_and_unify_type: equating types encountered error {:?}", err);
+ Err(MismatchedProjectionTypes { err: err })
+ }
}
}
tcx: TyCtxt<'_, 'tcx, 'tcx>,
goal: ParamEnvAnd<'tcx, Ty<'tcx>>,
) -> Ty<'tcx> {
+ debug!("normalize_ty_after_erasing_regions(goal={:#?})", goal);
+
let ParamEnvAnd { param_env, value } = goal;
tcx.sess.perf_stats.normalize_ty_after_erasing_regions.fetch_add(1, Ordering::Relaxed);
tcx.infer_ctxt().enter(|infcx| {