mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
Use deeply_normalize_with_skipped_universes in when processing type outlives
This commit is contained in:
parent
bf3c6c5bed
commit
0e16885abd
@ -24,12 +24,13 @@ impl<'tcx> InferCtxtRegionExt<'tcx> for InferCtxt<'tcx> {
|
||||
let ty = self.resolve_vars_if_possible(ty);
|
||||
|
||||
if self.next_trait_solver() {
|
||||
crate::solve::deeply_normalize(
|
||||
crate::solve::deeply_normalize_with_skipped_universes(
|
||||
self.at(
|
||||
&ObligationCause::dummy_with_span(origin.span()),
|
||||
outlives_env.param_env,
|
||||
),
|
||||
ty,
|
||||
vec![None; ty.outer_exclusive_binder().as_usize()],
|
||||
)
|
||||
.map_err(|_| ty)
|
||||
} else {
|
||||
|
@ -1,4 +1,4 @@
|
||||
// revisions: normalize_param_env normalize_obligation
|
||||
// revisions: normalize_param_env normalize_obligation hrtb
|
||||
// check-pass
|
||||
// compile-flags: -Znext-solver
|
||||
|
||||
@ -7,16 +7,23 @@ trait Foo {
|
||||
type Gat<'a> where <Self as Mirror>::Assoc: 'a;
|
||||
#[cfg(normalize_obligation)]
|
||||
type Gat<'a> where Self: 'a;
|
||||
#[cfg(hrtb)]
|
||||
type Gat<'b> where for<'a> <Self as MirrorRegion<'a>>::Assoc: 'b;
|
||||
}
|
||||
|
||||
trait Mirror { type Assoc: ?Sized; }
|
||||
impl<T: ?Sized> Mirror for T { type Assoc = T; }
|
||||
|
||||
trait MirrorRegion<'a> { type Assoc: ?Sized; }
|
||||
impl<'a, T> MirrorRegion<'a> for T { type Assoc = T; }
|
||||
|
||||
impl<T> Foo for T {
|
||||
#[cfg(normalize_param_env)]
|
||||
type Gat<'a> = i32 where T: 'a;
|
||||
#[cfg(normalize_obligation)]
|
||||
type Gat<'a> = i32 where <T as Mirror>::Assoc: 'a;
|
||||
#[cfg(hrtb)]
|
||||
type Gat<'b> = i32 where Self: 'b;
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
Loading…
Reference in New Issue
Block a user