Rollup merge of #120956 - compiler-errors:clean-type-alias, r=GuillaumeGomez

Clean inlined type alias with correct param-env

We were cleaning the `hir::Ty` of a type alias item in the param-env of the item that *references* the type alias, and not the alias's own param-env.

Fixes #120954
This commit is contained in:
Matthias Krüger 2024-02-12 18:04:11 +01:00 committed by GitHub
commit a0156e5096
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 17 additions and 1 deletions

View File

@ -1840,7 +1840,9 @@ fn maybe_expand_private_type_alias<'tcx>(
} }
} }
Some(cx.enter_alias(args, def_id.to_def_id(), |cx| clean_ty(&ty, cx))) Some(cx.enter_alias(args, def_id.to_def_id(), |cx| {
cx.with_param_env(def_id.to_def_id(), |cx| clean_ty(&ty, cx))
}))
} }
pub(crate) fn clean_ty<'tcx>(ty: &hir::Ty<'tcx>, cx: &mut DocContext<'tcx>) -> Type { pub(crate) fn clean_ty<'tcx>(ty: &hir::Ty<'tcx>, cx: &mut DocContext<'tcx>) -> Type {

View File

@ -0,0 +1,14 @@
// check-pass
// compile-flags: -Znormalize-docs
trait Woo<T> {
type Assoc;
}
impl<T> Woo<T> for () {
type Assoc = ();
}
type Alias<P> = <() as Woo<P>>::Assoc;
pub fn hello<S>() -> Alias<S> {}