diff --git a/compiler/rustc_middle/src/ty/diagnostics.rs b/compiler/rustc_middle/src/ty/diagnostics.rs index a43a0c687261..a9e7425fdcbf 100644 --- a/compiler/rustc_middle/src/ty/diagnostics.rs +++ b/compiler/rustc_middle/src/ty/diagnostics.rs @@ -22,7 +22,7 @@ impl IntoDiagArg for Ty<'_> { fn into_diag_arg(self, path: &mut Option) -> rustc_errors::DiagArgValue { ty::tls::with(|tcx| { - let ty = tcx.short_string(self, path); + let ty = tcx.short_string(tcx.lift(self), path); DiagArgValue::Str(std::borrow::Cow::Owned(ty)) }) } @@ -31,7 +31,7 @@ fn into_diag_arg(self, path: &mut Option) -> rustc_errors::D impl IntoDiagArg for Instance<'_> { fn into_diag_arg(self, path: &mut Option) -> rustc_errors::DiagArgValue { ty::tls::with(|tcx| { - let instance = tcx.short_string_namespace(self, path, Namespace::ValueNS); + let instance = tcx.short_string_namespace(tcx.lift(self), path, Namespace::ValueNS); DiagArgValue::Str(std::borrow::Cow::Owned(instance)) }) } diff --git a/compiler/rustc_middle/src/ty/error.rs b/compiler/rustc_middle/src/ty/error.rs index 082e5de16cf9..52f37ed4a9ea 100644 --- a/compiler/rustc_middle/src/ty/error.rs +++ b/compiler/rustc_middle/src/ty/error.rs @@ -12,7 +12,7 @@ pub use rustc_type_ir::error::ExpectedFound; use crate::ty::print::{FmtPrinter, Print, with_forced_trimmed_paths}; -use crate::ty::{self, Lift, Ty, TyCtxt}; +use crate::ty::{self, Ty, TyCtxt}; pub type TypeError<'tcx> = rustc_type_ir::error::TypeError>; @@ -220,10 +220,10 @@ pub fn prefix_string(self, tcx: TyCtxt<'_>) -> Cow<'static, str> { impl<'tcx> TyCtxt<'tcx> { pub fn string_with_limit(self, t: T, length_limit: usize, ns: hir::def::Namespace) -> String where - T: Copy + for<'a, 'b> Lift, Lifted: Print<'b, FmtPrinter<'a, 'b>>>, + T: Copy + for<'a> Print>, { let mut type_limit = 50; - let regular = FmtPrinter::print_string(self, ns, |p| self.lift(t).print(p)) + let regular = FmtPrinter::print_string(self, ns, |p| t.print(p)) .expect("could not write to `String`"); if regular.len() <= length_limit { return regular; @@ -233,7 +233,7 @@ pub fn string_with_limit(self, t: T, length_limit: usize, ns: hir::def::Names // Look for the longest properly trimmed path that still fits in length_limit. short = with_forced_trimmed_paths!({ let mut p = FmtPrinter::new_with_limit(self, ns, Limit(type_limit)); - self.lift(t).print(&mut p).expect("could not print type"); + t.print(&mut p).expect("could not print type"); p.into_buffer() }); if short.len() <= length_limit || type_limit == 0 { @@ -250,7 +250,7 @@ pub fn string_with_limit(self, t: T, length_limit: usize, ns: hir::def::Names /// where we wrote the file to is only printed once. The path will use the type namespace. pub fn short_string(self, t: T, path: &mut Option) -> String where - T: Copy + Hash + for<'a, 'b> Lift, Lifted: Print<'b, FmtPrinter<'a, 'b>>>, + T: Copy + Hash + for<'a> Print>, { self.short_string_namespace(t, path, hir::def::Namespace::TypeNS) } @@ -266,9 +266,9 @@ pub fn short_string_namespace( namespace: hir::def::Namespace, ) -> String where - T: Copy + Hash + for<'a, 'b> Lift, Lifted: Print<'b, FmtPrinter<'a, 'b>>>, + T: Copy + Hash + for<'a> Print>, { - let regular = FmtPrinter::print_string(self, namespace, |p| self.lift(t).print(p)) + let regular = FmtPrinter::print_string(self, namespace, |p| t.print(p)) .expect("could not write to `String`"); if !self.sess.opts.unstable_opts.write_long_types_to_disk || self.sess.opts.verbose { diff --git a/compiler/rustc_middle/src/ty/predicate.rs b/compiler/rustc_middle/src/ty/predicate.rs index 94f642bebeb9..26108f7be696 100644 --- a/compiler/rustc_middle/src/ty/predicate.rs +++ b/compiler/rustc_middle/src/ty/predicate.rs @@ -113,7 +113,7 @@ pub fn allow_normalization(self) -> bool { impl<'tcx> rustc_errors::IntoDiagArg for Predicate<'tcx> { fn into_diag_arg(self, path: &mut Option) -> rustc_errors::DiagArgValue { ty::tls::with(|tcx| { - let pred = tcx.short_string(self, path); + let pred = tcx.short_string(tcx.lift(self), path); rustc_errors::DiagArgValue::Str(std::borrow::Cow::Owned(pred)) }) } @@ -122,7 +122,7 @@ fn into_diag_arg(self, path: &mut Option) -> rustc_errors::D impl<'tcx> rustc_errors::IntoDiagArg for Clause<'tcx> { fn into_diag_arg(self, path: &mut Option) -> rustc_errors::DiagArgValue { ty::tls::with(|tcx| { - let clause = tcx.short_string(self, path); + let clause = tcx.short_string(tcx.lift(self), path); rustc_errors::DiagArgValue::Str(std::borrow::Cow::Owned(clause)) }) } diff --git a/compiler/rustc_middle/src/ty/print/mod.rs b/compiler/rustc_middle/src/ty/print/mod.rs index d5d1c3634c7d..29875a3530c1 100644 --- a/compiler/rustc_middle/src/ty/print/mod.rs +++ b/compiler/rustc_middle/src/ty/print/mod.rs @@ -15,7 +15,7 @@ pub type PrintError = std::fmt::Error; -pub trait Print<'tcx, P> { +pub trait Print

{ fn print(&self, p: &mut P) -> Result<(), PrintError>; } @@ -350,19 +350,19 @@ pub fn characteristic_def_id_of_type(ty: Ty<'_>) -> Option { characteristic_def_id_of_type_cached(ty, &mut SsoHashSet::new()) } -impl<'tcx, P: Printer<'tcx>> Print<'tcx, P> for ty::Region<'tcx> { +impl<'tcx, P: Printer<'tcx>> Print

for ty::Region<'tcx> { fn print(&self, p: &mut P) -> Result<(), PrintError> { p.print_region(*self) } } -impl<'tcx, P: Printer<'tcx>> Print<'tcx, P> for Ty<'tcx> { +impl<'tcx, P: Printer<'tcx>> Print

for Ty<'tcx> { fn print(&self, p: &mut P) -> Result<(), PrintError> { p.print_type(*self) } } -impl<'tcx, P: Printer<'tcx> + std::fmt::Write> Print<'tcx, P> for ty::Instance<'tcx> { +impl<'tcx, P: Printer<'tcx> + std::fmt::Write> Print

for ty::Instance<'tcx> { fn print(&self, cx: &mut P) -> Result<(), PrintError> { cx.print_def_path(self.def_id(), self.args)?; match self.def { @@ -399,13 +399,13 @@ fn print(&self, cx: &mut P) -> Result<(), PrintError> { } } -impl<'tcx, P: Printer<'tcx>> Print<'tcx, P> for &'tcx ty::List> { +impl<'tcx, P: Printer<'tcx>> Print

for &'tcx ty::List> { fn print(&self, p: &mut P) -> Result<(), PrintError> { p.print_dyn_existential(self) } } -impl<'tcx, P: Printer<'tcx>> Print<'tcx, P> for ty::Const<'tcx> { +impl<'tcx, P: Printer<'tcx>> Print

for ty::Const<'tcx> { fn print(&self, p: &mut P) -> Result<(), PrintError> { p.print_const(*self) } @@ -413,7 +413,7 @@ fn print(&self, p: &mut P) -> Result<(), PrintError> { impl rustc_type_ir::ir_print::IrPrint for TyCtxt<'_> where - T: Copy + for<'a, 'tcx> Lift, Lifted: Print<'tcx, FmtPrinter<'a, 'tcx>>>, + T: Copy + for<'a, 'tcx> Lift, Lifted: Print>>, { fn print(t: &T, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { ty::tls::with(|tcx| { diff --git a/compiler/rustc_middle/src/ty/print/pretty.rs b/compiler/rustc_middle/src/ty/print/pretty.rs index 04d76e4304fe..daead99b977c 100644 --- a/compiler/rustc_middle/src/ty/print/pretty.rs +++ b/compiler/rustc_middle/src/ty/print/pretty.rs @@ -265,7 +265,7 @@ fn pretty_print_value_path( fn pretty_print_in_binder(&mut self, value: &ty::Binder<'tcx, T>) -> Result<(), PrintError> where - T: Print<'tcx, Self> + TypeFoldable>, + T: Print + TypeFoldable>, { value.as_ref().skip_binder().print(self) } @@ -285,7 +285,7 @@ fn wrap_binder Result<(), fmt::Error>>( /// Prints comma-separated elements. fn comma_sep(&mut self, mut elems: impl Iterator) -> Result<(), PrintError> where - T: Print<'tcx, Self>, + T: Print, { if let Some(first) = elems.next() { first.print(self)?; @@ -2484,7 +2484,7 @@ fn pretty_print_value_path( fn pretty_print_in_binder(&mut self, value: &ty::Binder<'tcx, T>) -> Result<(), PrintError> where - T: Print<'tcx, Self> + TypeFoldable>, + T: Print + TypeFoldable>, { self.wrap_binder(value, WrapBinderMode::ForAll, |new_value, this| new_value.print(this)) } @@ -2940,18 +2940,18 @@ fn visit_ty(&mut self, ty: Ty<'tcx>) { } } -impl<'tcx, T, P: PrettyPrinter<'tcx>> Print<'tcx, P> for ty::Binder<'tcx, T> +impl<'tcx, T, P: PrettyPrinter<'tcx>> Print

for ty::Binder<'tcx, T> where - T: Print<'tcx, P> + TypeFoldable>, + T: Print

+ TypeFoldable>, { fn print(&self, p: &mut P) -> Result<(), PrintError> { p.pretty_print_in_binder(self) } } -impl<'tcx, T, P: PrettyPrinter<'tcx>> Print<'tcx, P> for ty::OutlivesPredicate<'tcx, T> +impl<'tcx, T, P: PrettyPrinter<'tcx>> Print

for ty::OutlivesPredicate<'tcx, T> where - T: Print<'tcx, P>, + T: Print

, { fn print(&self, p: &mut P) -> Result<(), PrintError> { self.0.print(p)?; @@ -2970,7 +2970,7 @@ fn print(&self, p: &mut P) -> Result<(), PrintError> { impl<'tcx> rustc_errors::IntoDiagArg for TraitRefPrintOnlyTraitPath<'tcx> { fn into_diag_arg(self, path: &mut Option) -> rustc_errors::DiagArgValue { ty::tls::with(|tcx| { - let trait_ref = tcx.short_string(self, path); + let trait_ref = tcx.short_string(tcx.lift(self), path); rustc_errors::DiagArgValue::Str(std::borrow::Cow::Owned(trait_ref)) }) } @@ -2990,7 +2990,7 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { impl<'tcx> rustc_errors::IntoDiagArg for TraitRefPrintSugared<'tcx> { fn into_diag_arg(self, path: &mut Option) -> rustc_errors::DiagArgValue { ty::tls::with(|tcx| { - let trait_ref = tcx.short_string(self, path); + let trait_ref = tcx.short_string(tcx.lift(self), path); rustc_errors::DiagArgValue::Str(std::borrow::Cow::Owned(trait_ref)) }) } @@ -3108,7 +3108,7 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { macro_rules! define_print { (($self:ident, $p:ident): $($ty:ty $print:block)+) => { - $(impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for $ty { + $(impl<'tcx, P: PrettyPrinter<'tcx>> Print

for $ty { fn print(&$self, $p: &mut P) -> Result<(), PrintError> { let _: () = $print; Ok(()) diff --git a/compiler/rustc_symbol_mangling/src/legacy.rs b/compiler/rustc_symbol_mangling/src/legacy.rs index 9386c913a803..3466eb2f3a5a 100644 --- a/compiler/rustc_symbol_mangling/src/legacy.rs +++ b/compiler/rustc_symbol_mangling/src/legacy.rs @@ -480,7 +480,7 @@ fn should_print_optional_region(&self, _region: ty::Region<'_>) -> bool { // Identical to `PrettyPrinter::comma_sep` except there is no space after each comma. fn comma_sep(&mut self, mut elems: impl Iterator) -> Result<(), PrintError> where - T: Print<'tcx, Self>, + T: Print, { if let Some(first) = elems.next() { first.print(self)?; diff --git a/compiler/rustc_trait_selection/src/error_reporting/infer/nice_region_error/placeholder_error.rs b/compiler/rustc_trait_selection/src/error_reporting/infer/nice_region_error/placeholder_error.rs index 50dbae0a05d6..9cf016019bb0 100644 --- a/compiler/rustc_trait_selection/src/error_reporting/infer/nice_region_error/placeholder_error.rs +++ b/compiler/rustc_trait_selection/src/error_reporting/infer/nice_region_error/placeholder_error.rs @@ -28,7 +28,7 @@ pub(crate) struct Highlighted<'tcx, T> { impl<'tcx, T> IntoDiagArg for Highlighted<'tcx, T> where - T: for<'a> Print<'tcx, FmtPrinter<'a, 'tcx>>, + T: for<'a> Print>, { fn into_diag_arg(self, _: &mut Option) -> rustc_errors::DiagArgValue { rustc_errors::DiagArgValue::Str(self.to_string().into()) @@ -43,7 +43,7 @@ fn map(self, f: impl FnOnce(T) -> U) -> Highlighted<'tcx, U> { impl<'tcx, T> fmt::Display for Highlighted<'tcx, T> where - T: for<'a> Print<'tcx, FmtPrinter<'a, 'tcx>>, + T: for<'a> Print>, { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let mut p = ty::print::FmtPrinter::new(self.tcx, self.ns); diff --git a/compiler/rustc_trait_selection/src/error_reporting/traits/overflow.rs b/compiler/rustc_trait_selection/src/error_reporting/traits/overflow.rs index a543f549bdae..0e45df45049b 100644 --- a/compiler/rustc_trait_selection/src/error_reporting/traits/overflow.rs +++ b/compiler/rustc_trait_selection/src/error_reporting/traits/overflow.rs @@ -60,7 +60,7 @@ pub fn build_overflow_error( ) -> Diag<'a> { fn with_short_path<'tcx, T>(tcx: TyCtxt<'tcx>, value: T) -> String where - T: fmt::Display + Print<'tcx, FmtPrinter<'tcx, 'tcx>>, + T: fmt::Display + for<'b> Print>, { let s = value.to_string(); if s.len() > 50 {