fn normalize_with_universes<'tcx, T>(
at: At<'_, 'tcx>,
value: Unnormalized<'tcx, T>,
universes: Vec<Option<UniverseIndex>>,
) -> Normalized<'tcx, T>where
T: TypeFoldable<TyCtxt<'tcx>>,Expand description
Like deeply_normalize, but we handle ambiguity and inference variables in this routine.
The behavior should be same as the old solver.
For error, we return an infer var plus the failed obligation.
For ambiguity, we have two cases:
- has_escaping_bound_vars: return the original alias.
- otherwise: return the normalized result. It can be (partially) inferred even if the evaluation result is ambiguous.