Skip to main content

normalize_with_universes

Function normalize_with_universes 

Source
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.