From 811adb5ddc539e0084c9311f14004daec0e34d0f Mon Sep 17 00:00:00 2001 From: Camille GILLOT Date: Sun, 5 Jan 2020 15:34:45 +0100 Subject: [PATCH] Remove private methods from TyCtxt impl block: rustc::middle::stability. --- src/librustc/middle/stability.rs | 48 +++++++++++++++----------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/src/librustc/middle/stability.rs b/src/librustc/middle/stability.rs index a29b1b48c24..f2474faa75e 100644 --- a/src/librustc/middle/stability.rs +++ b/src/librustc/middle/stability.rs @@ -245,35 +245,35 @@ pub enum EvalResult { Unmarked, } -impl<'tcx> TyCtxt<'tcx> { - // See issue #38412. - fn skip_stability_check_due_to_privacy(self, mut def_id: DefId) -> bool { - // Check if `def_id` is a trait method. - match self.def_kind(def_id) { - Some(DefKind::Method) | Some(DefKind::AssocTy) | Some(DefKind::AssocConst) => { - if let ty::TraitContainer(trait_def_id) = self.associated_item(def_id).container { - // Trait methods do not declare visibility (even - // for visibility info in cstore). Use containing - // trait instead, so methods of `pub` traits are - // themselves considered `pub`. - def_id = trait_def_id; - } +// See issue #38412. +fn skip_stability_check_due_to_privacy(tcx: TyCtxt<'_>, mut def_id: DefId) -> bool { + // Check if `def_id` is a trait method. + match tcx.def_kind(def_id) { + Some(DefKind::Method) | Some(DefKind::AssocTy) | Some(DefKind::AssocConst) => { + if let ty::TraitContainer(trait_def_id) = tcx.associated_item(def_id).container { + // Trait methods do not declare visibility (even + // for visibility info in cstore). Use containing + // trait instead, so methods of `pub` traits are + // themselves considered `pub`. + def_id = trait_def_id; } - _ => {} } + _ => {} + } - let visibility = self.visibility(def_id); + let visibility = tcx.visibility(def_id); - match visibility { - // Must check stability for `pub` items. - ty::Visibility::Public => false, + match visibility { + // Must check stability for `pub` items. + ty::Visibility::Public => false, - // These are not visible outside crate; therefore - // stability markers are irrelevant, if even present. - ty::Visibility::Restricted(..) | ty::Visibility::Invisible => true, - } + // These are not visible outside crate; therefore + // stability markers are irrelevant, if even present. + ty::Visibility::Restricted(..) | ty::Visibility::Invisible => true, } +} +impl<'tcx> TyCtxt<'tcx> { /// Evaluates the stability of an item. /// /// Returns `EvalResult::Allow` if the item is stable, or unstable but the corresponding @@ -338,7 +338,7 @@ pub fn eval_stability(self, def_id: DefId, id: Option, span: Span) -> Eva } // Issue #38412: private items lack stability markers. - if self.skip_stability_check_due_to_privacy(def_id) { + if skip_stability_check_due_to_privacy(self, def_id) { return EvalResult::Allow; } @@ -402,9 +402,7 @@ pub fn check_stability(self, def_id: DefId, id: Option, span: Span) { } } } -} -impl<'tcx> TyCtxt<'tcx> { pub fn lookup_deprecation(self, id: DefId) -> Option { self.lookup_deprecation_entry(id).map(|depr| depr.attr) } -- 2.44.0