mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-16 17:03:35 +00:00
Rollup merge of #93542 - GuillaumeGomez:lifetime-elision, r=oli-obk
Prevent lifetime elision in type alias Fixes #93401. Apparently, the problem has been fixed in the compiler. r? `@oli-obk`
This commit is contained in:
commit
7e212c1ca9
@ -1427,15 +1427,25 @@ fn normalize<'tcx>(cx: &mut DocContext<'tcx>, ty: Ty<'_>) -> Option<Ty<'tcx>> {
|
||||
return None;
|
||||
}
|
||||
|
||||
use crate::rustc_trait_selection::infer::TyCtxtInferExt;
|
||||
use crate::rustc_trait_selection::traits::query::normalize::AtExt;
|
||||
use rustc_middle::traits::ObligationCause;
|
||||
|
||||
// Try to normalize `<X as Y>::T` to a type
|
||||
let lifted = ty.lift_to_tcx(cx.tcx).unwrap();
|
||||
match cx.tcx.try_normalize_erasing_regions(cx.param_env, lifted) {
|
||||
let normalized = cx.tcx.infer_ctxt().enter(|infcx| {
|
||||
infcx
|
||||
.at(&ObligationCause::dummy(), cx.param_env)
|
||||
.normalize(lifted)
|
||||
.map(|resolved| infcx.resolve_vars_if_possible(resolved.value))
|
||||
});
|
||||
match normalized {
|
||||
Ok(normalized_value) => {
|
||||
trace!("normalized {:?} to {:?}", ty, normalized_value);
|
||||
debug!("normalized {:?} to {:?}", ty, normalized_value);
|
||||
Some(normalized_value)
|
||||
}
|
||||
Err(err) => {
|
||||
info!("failed to normalize {:?}: {:?}", ty, err);
|
||||
debug!("failed to normalize {:?}: {:?}", ty, err);
|
||||
None
|
||||
}
|
||||
}
|
||||
|
5
src/test/rustdoc/lifetime-name.rs
Normal file
5
src/test/rustdoc/lifetime-name.rs
Normal file
@ -0,0 +1,5 @@
|
||||
#![crate_name = "foo"]
|
||||
|
||||
// @has 'foo/type.Resolutions.html'
|
||||
// @has - '//*[@class="rust typedef"]' "pub type Resolutions<'tcx> = &'tcx u8;"
|
||||
pub type Resolutions<'tcx> = &'tcx u8;
|
Loading…
Reference in New Issue
Block a user