From 297546e62db0ec681482baf31d0bd6dd733fdd39 Mon Sep 17 00:00:00 2001 From: Eduard-Mihai Burtescu Date: Tue, 4 Dec 2018 19:13:55 +0200 Subject: [PATCH] rustc: add a 'tcx parameter to Print. --- src/librustc/ty/print.rs | 2 +- src/librustc/util/ppaux.rs | 23 +++++++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/librustc/ty/print.rs b/src/librustc/ty/print.rs index f58bb2824d1..569d9d7a3ac 100644 --- a/src/librustc/ty/print.rs +++ b/src/librustc/ty/print.rs @@ -57,7 +57,7 @@ impl PrintContext { } } -pub trait Print { +pub trait Print<'tcx> { fn print(&self, f: &mut F, cx: &mut PrintContext) -> fmt::Result; fn print_to_string(&self, cx: &mut PrintContext) -> String { let mut result = String::new(); diff --git a/src/librustc/util/ppaux.rs b/src/librustc/util/ppaux.rs index 24b9779654a..9fc4b179954 100644 --- a/src/librustc/util/ppaux.rs +++ b/src/librustc/util/ppaux.rs @@ -212,7 +212,7 @@ macro_rules! gen_display_debug { } macro_rules! gen_print_impl { ( ($($x:tt)+) $target:ty, ($self:ident, $f:ident, $cx:ident) $disp:block $dbg:block ) => { - impl<$($x)+> Print for $target { + impl<$($x)+> Print<'tcx> for $target { fn print(&$self, $f: &mut F, $cx: &mut PrintContext) -> fmt::Result { if $cx.is_debug $dbg else $disp @@ -220,7 +220,7 @@ macro_rules! gen_print_impl { } }; ( () $target:ty, ($self:ident, $f:ident, $cx:ident) $disp:block $dbg:block ) => { - impl Print for $target { + impl Print<'tcx> for $target { fn print(&$self, $f: &mut F, $cx: &mut PrintContext) -> fmt::Result { if $cx.is_debug $dbg else $disp @@ -527,12 +527,15 @@ impl PrintContext { Ok(()) } - fn in_binder<'a, 'gcx, 'tcx, T, U, F>(&mut self, - f: &mut F, - tcx: TyCtxt<'a, 'gcx, 'tcx>, - original: &ty::Binder, - lifted: Option>) -> fmt::Result - where T: Print, U: Print + TypeFoldable<'tcx>, F: fmt::Write + // FIXME(eddyb) replace `'almost_tcx` with `'tcx` when possible/needed. + fn in_binder<'a, 'gcx, 'tcx, 'almost_tcx, T, U, F>( + &mut self, + f: &mut F, + tcx: TyCtxt<'a, 'gcx, 'tcx>, + original: &ty::Binder, + lifted: Option>, + ) -> fmt::Result + where T: Print<'almost_tcx>, U: Print<'tcx> + TypeFoldable<'tcx>, F: fmt::Write { fn name_by_region_index(index: usize) -> InternedString { match index { @@ -627,7 +630,7 @@ pub fn parameterized(f: &mut F, PrintContext::new().parameterized(f, substs, did, projections) } -impl<'a, T: Print> Print for &'a T { +impl<'a, 'tcx, T: Print<'tcx>> Print<'tcx> for &'a T { fn print(&self, f: &mut F, cx: &mut PrintContext) -> fmt::Result { (*self).print(f, cx) } @@ -1466,7 +1469,7 @@ define_print! { } define_print! { - ('tcx, T: Print + fmt::Debug, U: Print + fmt::Debug) ty::OutlivesPredicate, + ('tcx, T: Print<'tcx> + fmt::Debug, U: Print<'tcx> + fmt::Debug) ty::OutlivesPredicate, (self, f, cx) { display { print!(f, cx, print(self.0), write(" : "), print(self.1))