1
Fork 0

Rollup merge of #91882 - Patrick-Poitras:remove-in-band-lifetimes-from-rustc-typeck, r=jackh726

Remove `in_band_lifetimes` from `rustc_typeck`

Joining in on the effort to remove the `in_band_lifetimes` features, as described in issue #91867.
This commit is contained in:
Matthias Krüger 2021-12-15 01:28:09 +01:00 committed by GitHub
commit 6abad4c438
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 72 additions and 70 deletions

View file

@ -92,7 +92,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
&self, &self,
span: Span, span: Span,
trait_def_id: DefId, trait_def_id: DefId,
trait_segment: &'a hir::PathSegment<'a>, trait_segment: &'_ hir::PathSegment<'_>,
) { ) {
let trait_def = self.tcx().trait_def(trait_def_id); let trait_def = self.tcx().trait_def(trait_def_id);

View file

@ -557,7 +557,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
} }
} }
fn arms_contain_ref_bindings(arms: &'tcx [hir::Arm<'tcx>]) -> Option<hir::Mutability> { fn arms_contain_ref_bindings<'tcx>(arms: &'tcx [hir::Arm<'tcx>]) -> Option<hir::Mutability> {
arms.iter().filter_map(|a| a.pat.contains_explicit_ref_binding()).max_by_key(|m| match *m { arms.iter().filter_map(|a| a.pat.contains_explicit_ref_binding()).max_by_key(|m| match *m {
hir::Mutability::Mut => 1, hir::Mutability::Mut => 1,
hir::Mutability::Not => 0, hir::Mutability::Not => 0,

View file

@ -453,7 +453,7 @@ pub(super) fn check_opaque<'tcx>(
/// Checks that an opaque type does not use `Self` or `T::Foo` projections that would result /// Checks that an opaque type does not use `Self` or `T::Foo` projections that would result
/// in "inheriting lifetimes". /// in "inheriting lifetimes".
#[instrument(level = "debug", skip(tcx, span))] #[instrument(level = "debug", skip(tcx, span))]
pub(super) fn check_opaque_for_inheriting_lifetimes( pub(super) fn check_opaque_for_inheriting_lifetimes<'tcx>(
tcx: TyCtxt<'tcx>, tcx: TyCtxt<'tcx>,
def_id: LocalDefId, def_id: LocalDefId,
span: Span, span: Span,
@ -517,7 +517,7 @@ pub(super) fn check_opaque_for_inheriting_lifetimes(
} }
} }
impl Visitor<'tcx> for ProhibitOpaqueVisitor<'tcx> { impl<'tcx> Visitor<'tcx> for ProhibitOpaqueVisitor<'tcx> {
type Map = rustc_middle::hir::map::Map<'tcx>; type Map = rustc_middle::hir::map::Map<'tcx>;
fn nested_visit_map(&mut self) -> hir::intravisit::NestedVisitorMap<Self::Map> { fn nested_visit_map(&mut self) -> hir::intravisit::NestedVisitorMap<Self::Map> {
@ -1512,7 +1512,7 @@ pub(super) use wfcheck::check_trait_item as check_trait_item_well_formed;
pub(super) use wfcheck::check_impl_item as check_impl_item_well_formed; pub(super) use wfcheck::check_impl_item as check_impl_item_well_formed;
fn async_opaque_type_cycle_error(tcx: TyCtxt<'tcx>, span: Span) { fn async_opaque_type_cycle_error(tcx: TyCtxt<'_>, span: Span) {
struct_span_err!(tcx.sess, span, E0733, "recursion in an `async fn` requires boxing") struct_span_err!(tcx.sess, span, E0733, "recursion in an `async fn` requires boxing")
.span_label(span, "recursive `async fn`") .span_label(span, "recursive `async fn`")
.note("a recursive `async fn` must be rewritten to return a boxed `dyn Future`") .note("a recursive `async fn` must be rewritten to return a boxed `dyn Future`")
@ -1530,7 +1530,7 @@ fn async_opaque_type_cycle_error(tcx: TyCtxt<'tcx>, span: Span) {
/// ///
/// If all the return expressions evaluate to `!`, then we explain that the error will go away /// If all the return expressions evaluate to `!`, then we explain that the error will go away
/// after changing it. This can happen when a user uses `panic!()` or similar as a placeholder. /// after changing it. This can happen when a user uses `panic!()` or similar as a placeholder.
fn opaque_type_cycle_error(tcx: TyCtxt<'tcx>, def_id: LocalDefId, span: Span) { fn opaque_type_cycle_error(tcx: TyCtxt<'_>, def_id: LocalDefId, span: Span) {
let mut err = struct_span_err!(tcx.sess, span, E0720, "cannot resolve opaque type"); let mut err = struct_span_err!(tcx.sess, span, E0720, "cannot resolve opaque type");
let mut label = false; let mut label = false;

View file

@ -102,7 +102,7 @@ fn identity(_: Ty<'_>) -> Vec<Adjustment<'_>> {
vec![] vec![]
} }
fn simple(kind: Adjust<'tcx>) -> impl FnOnce(Ty<'tcx>) -> Vec<Adjustment<'tcx>> { fn simple<'tcx>(kind: Adjust<'tcx>) -> impl FnOnce(Ty<'tcx>) -> Vec<Adjustment<'tcx>> {
move |target| vec![Adjustment { kind, target }] move |target| vec![Adjustment { kind, target }]
} }
@ -1694,7 +1694,7 @@ impl<'tcx, 'exprs, E: AsCoercionSite> CoerceMany<'tcx, 'exprs, E> {
err.help("you could instead create a new `enum` with a variant for each returned type"); err.help("you could instead create a new `enum` with a variant for each returned type");
} }
fn is_return_ty_unsized(&self, fcx: &FnCtxt<'a, 'tcx>, blk_id: hir::HirId) -> bool { fn is_return_ty_unsized<'a>(&self, fcx: &FnCtxt<'a, 'tcx>, blk_id: hir::HirId) -> bool {
if let Some((fn_decl, _)) = fcx.get_fn_decl(blk_id) { if let Some((fn_decl, _)) = fcx.get_fn_decl(blk_id) {
if let hir::FnRetTy::Return(ty) = fn_decl.output { if let hir::FnRetTy::Return(ty) = fn_decl.output {
let ty = <dyn AstConv<'_>>::ast_ty_to_ty(fcx, ty); let ty = <dyn AstConv<'_>>::ast_ty_to_ty(fcx, ty);

View file

@ -302,7 +302,7 @@ impl<'tcx> SimpleEqRelation<'tcx> {
} }
} }
impl TypeRelation<'tcx> for SimpleEqRelation<'tcx> { impl<'tcx> TypeRelation<'tcx> for SimpleEqRelation<'tcx> {
fn tcx(&self) -> TyCtxt<'tcx> { fn tcx(&self) -> TyCtxt<'tcx> {
self.tcx self.tcx
} }

View file

@ -76,7 +76,7 @@ pub struct InheritedBuilder<'tcx> {
def_id: LocalDefId, def_id: LocalDefId,
} }
impl Inherited<'_, 'tcx> { impl<'tcx> Inherited<'_, 'tcx> {
pub fn build(tcx: TyCtxt<'tcx>, def_id: LocalDefId) -> InheritedBuilder<'tcx> { pub fn build(tcx: TyCtxt<'tcx>, def_id: LocalDefId) -> InheritedBuilder<'tcx> {
let hir_owner = tcx.hir().local_def_id_to_hir_id(def_id).owner; let hir_owner = tcx.hir().local_def_id_to_hir_id(def_id).owner;
@ -97,7 +97,7 @@ impl<'tcx> InheritedBuilder<'tcx> {
} }
} }
impl Inherited<'a, 'tcx> { impl<'a, 'tcx> Inherited<'a, 'tcx> {
pub(super) fn new(infcx: InferCtxt<'a, 'tcx>, def_id: LocalDefId) -> Self { pub(super) fn new(infcx: InferCtxt<'a, 'tcx>, def_id: LocalDefId) -> Self {
let tcx = infcx.tcx; let tcx = infcx.tcx;
let item_id = tcx.hir().local_def_id_to_hir_id(def_id); let item_id = tcx.hir().local_def_id_to_hir_id(def_id);

View file

@ -1968,7 +1968,7 @@ fn find_use_placement<'tcx>(tcx: TyCtxt<'tcx>, target_module: LocalDefId) -> (Op
(span, found_use) (span, found_use)
} }
fn print_disambiguation_help( fn print_disambiguation_help<'tcx>(
item_name: Ident, item_name: Ident,
args: Option<&'tcx [hir::Expr<'tcx>]>, args: Option<&'tcx [hir::Expr<'tcx>]>,
err: &mut DiagnosticBuilder<'_>, err: &mut DiagnosticBuilder<'_>,

View file

@ -508,7 +508,7 @@ struct GeneratorTypes<'tcx> {
/// Given a `DefId` for an opaque type in return position, find its parent item's return /// Given a `DefId` for an opaque type in return position, find its parent item's return
/// expressions. /// expressions.
fn get_owner_return_paths( fn get_owner_return_paths<'tcx>(
tcx: TyCtxt<'tcx>, tcx: TyCtxt<'tcx>,
def_id: LocalDefId, def_id: LocalDefId,
) -> Option<(hir::HirId, ReturnsVisitor<'tcx>)> { ) -> Option<(hir::HirId, ReturnsVisitor<'tcx>)> {
@ -906,7 +906,7 @@ struct CheckItemTypesVisitor<'tcx> {
tcx: TyCtxt<'tcx>, tcx: TyCtxt<'tcx>,
} }
impl ItemLikeVisitor<'tcx> for CheckItemTypesVisitor<'tcx> { impl<'tcx> ItemLikeVisitor<'tcx> for CheckItemTypesVisitor<'tcx> {
fn visit_item(&mut self, i: &'tcx hir::Item<'tcx>) { fn visit_item(&mut self, i: &'tcx hir::Item<'tcx>) {
check_item_type(self.tcx, i); check_item_type(self.tcx, i);
} }

View file

@ -893,7 +893,7 @@ enum Op {
} }
/// Dereferences a single level of immutable referencing. /// Dereferences a single level of immutable referencing.
fn deref_ty_if_possible(ty: Ty<'tcx>) -> Ty<'tcx> { fn deref_ty_if_possible<'tcx>(ty: Ty<'tcx>) -> Ty<'tcx> {
match ty.kind() { match ty.kind() {
ty::Ref(_, ty, hir::Mutability::Not) => ty, ty::Ref(_, ty, hir::Mutability::Not) => ty,
_ => ty, _ => ty,
@ -1007,7 +1007,7 @@ impl<'tcx> TypeVisitor<'tcx> for TypeParamVisitor<'tcx> {
struct TypeParamEraser<'a, 'tcx>(&'a FnCtxt<'a, 'tcx>, Span); struct TypeParamEraser<'a, 'tcx>(&'a FnCtxt<'a, 'tcx>, Span);
impl TypeFolder<'tcx> for TypeParamEraser<'_, 'tcx> { impl<'tcx> TypeFolder<'tcx> for TypeParamEraser<'_, 'tcx> {
fn tcx(&self) -> TyCtxt<'tcx> { fn tcx(&self) -> TyCtxt<'tcx> {
self.0.tcx self.0.tcx
} }

View file

@ -740,7 +740,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
} }
} }
fn check_pat_path( fn check_pat_path<'b>(
&self, &self,
pat: &Pat<'_>, pat: &Pat<'_>,
path_resolution: (Res, Option<Ty<'tcx>>, &'b [hir::PathSegment<'b>]), path_resolution: (Res, Option<Ty<'tcx>>, &'b [hir::PathSegment<'b>]),
@ -816,7 +816,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
false false
} }
fn emit_bad_pat_path( fn emit_bad_pat_path<'b>(
&self, &self,
mut e: DiagnosticBuilder<'_>, mut e: DiagnosticBuilder<'_>,
pat_span: Span, pat_span: Span,

View file

@ -106,7 +106,7 @@ macro_rules! ignore_err {
pub(crate) trait OutlivesEnvironmentExt<'tcx> { pub(crate) trait OutlivesEnvironmentExt<'tcx> {
fn add_implied_bounds( fn add_implied_bounds(
&mut self, &mut self,
infcx: &InferCtxt<'a, 'tcx>, infcx: &InferCtxt<'_, 'tcx>,
fn_sig_tys: FxHashSet<Ty<'tcx>>, fn_sig_tys: FxHashSet<Ty<'tcx>>,
body_id: hir::HirId, body_id: hir::HirId,
span: Span, span: Span,
@ -130,7 +130,7 @@ impl<'tcx> OutlivesEnvironmentExt<'tcx> for OutlivesEnvironment<'tcx> {
/// add those assumptions into the outlives-environment. /// add those assumptions into the outlives-environment.
/// ///
/// Tests: `src/test/ui/regions/regions-free-region-ordering-*.rs` /// Tests: `src/test/ui/regions/regions-free-region-ordering-*.rs`
fn add_implied_bounds( fn add_implied_bounds<'a>(
&mut self, &mut self,
infcx: &InferCtxt<'a, 'tcx>, infcx: &InferCtxt<'a, 'tcx>,
fn_sig_tys: FxHashSet<Ty<'tcx>>, fn_sig_tys: FxHashSet<Ty<'tcx>>,

View file

@ -1672,7 +1672,7 @@ fn restrict_repr_packed_field_ref_capture<'tcx>(
} }
/// Returns a Ty that applies the specified capture kind on the provided capture Ty /// Returns a Ty that applies the specified capture kind on the provided capture Ty
fn apply_capture_kind_on_capture_ty( fn apply_capture_kind_on_capture_ty<'tcx>(
tcx: TyCtxt<'tcx>, tcx: TyCtxt<'tcx>,
ty: Ty<'tcx>, ty: Ty<'tcx>,
capture_kind: UpvarCapture<'tcx>, capture_kind: UpvarCapture<'tcx>,
@ -1685,7 +1685,7 @@ fn apply_capture_kind_on_capture_ty(
} }
/// Returns the Span of where the value with the provided HirId would be dropped /// Returns the Span of where the value with the provided HirId would be dropped
fn drop_location_span(tcx: TyCtxt<'tcx>, hir_id: &hir::HirId) -> Span { fn drop_location_span<'tcx>(tcx: TyCtxt<'tcx>, hir_id: &hir::HirId) -> Span {
let owner_id = tcx.hir().get_enclosing_scope(*hir_id).unwrap(); let owner_id = tcx.hir().get_enclosing_scope(*hir_id).unwrap();
let owner_node = tcx.hir().get(owner_id); let owner_node = tcx.hir().get(owner_id);
@ -1999,7 +1999,7 @@ fn restrict_precision_for_drop_types<'a, 'tcx>(
/// - No projections are applied to raw pointers, since these require unsafe blocks. We capture /// - No projections are applied to raw pointers, since these require unsafe blocks. We capture
/// them completely. /// them completely.
/// - No projections are applied on top of Union ADTs, since these require unsafe blocks. /// - No projections are applied on top of Union ADTs, since these require unsafe blocks.
fn restrict_precision_for_unsafe( fn restrict_precision_for_unsafe<'tcx>(
mut place: Place<'tcx>, mut place: Place<'tcx>,
mut curr_mode: ty::UpvarCapture<'tcx>, mut curr_mode: ty::UpvarCapture<'tcx>,
) -> (Place<'tcx>, ty::UpvarCapture<'tcx>) { ) -> (Place<'tcx>, ty::UpvarCapture<'tcx>) {
@ -2097,7 +2097,7 @@ fn adjust_for_non_move_closure<'tcx>(
(place, kind) (place, kind)
} }
fn construct_place_string(tcx: TyCtxt<'_>, place: &Place<'tcx>) -> String { fn construct_place_string<'tcx>(tcx: TyCtxt<'_>, place: &Place<'tcx>) -> String {
let variable_name = match place.base { let variable_name = match place.base {
PlaceBase::Upvar(upvar_id) => var_name(tcx, upvar_id.var_path.hir_id).to_string(), PlaceBase::Upvar(upvar_id) => var_name(tcx, upvar_id.var_path.hir_id).to_string(),
_ => bug!("Capture_information should only contain upvars"), _ => bug!("Capture_information should only contain upvars"),
@ -2120,7 +2120,7 @@ fn construct_place_string(tcx: TyCtxt<'_>, place: &Place<'tcx>) -> String {
format!("{}[{}]", variable_name, projections_str) format!("{}[{}]", variable_name, projections_str)
} }
fn construct_capture_kind_reason_string( fn construct_capture_kind_reason_string<'tcx>(
tcx: TyCtxt<'_>, tcx: TyCtxt<'_>,
place: &Place<'tcx>, place: &Place<'tcx>,
capture_info: &ty::CaptureInfo<'tcx>, capture_info: &ty::CaptureInfo<'tcx>,
@ -2135,13 +2135,13 @@ fn construct_capture_kind_reason_string(
format!("{} captured as {} here", place_str, capture_kind_str) format!("{} captured as {} here", place_str, capture_kind_str)
} }
fn construct_path_string(tcx: TyCtxt<'_>, place: &Place<'tcx>) -> String { fn construct_path_string<'tcx>(tcx: TyCtxt<'_>, place: &Place<'tcx>) -> String {
let place_str = construct_place_string(tcx, place); let place_str = construct_place_string(tcx, place);
format!("{} used here", place_str) format!("{} used here", place_str)
} }
fn construct_capture_info_string( fn construct_capture_info_string<'tcx>(
tcx: TyCtxt<'_>, tcx: TyCtxt<'_>,
place: &Place<'tcx>, place: &Place<'tcx>,
capture_info: &ty::CaptureInfo<'tcx>, capture_info: &ty::CaptureInfo<'tcx>,
@ -2233,7 +2233,7 @@ fn migration_suggestion_for_2229(
/// would've already handled `E1`, and have an existing capture_information for it. /// would've already handled `E1`, and have an existing capture_information for it.
/// Calling `determine_capture_info(existing_info_e1, current_info_e2)` will return /// Calling `determine_capture_info(existing_info_e1, current_info_e2)` will return
/// `existing_info_e1` in this case, allowing us to point to `E1` in case of diagnostics. /// `existing_info_e1` in this case, allowing us to point to `E1` in case of diagnostics.
fn determine_capture_info( fn determine_capture_info<'tcx>(
capture_info_a: ty::CaptureInfo<'tcx>, capture_info_a: ty::CaptureInfo<'tcx>,
capture_info_b: ty::CaptureInfo<'tcx>, capture_info_b: ty::CaptureInfo<'tcx>,
) -> ty::CaptureInfo<'tcx> { ) -> ty::CaptureInfo<'tcx> {
@ -2292,7 +2292,7 @@ fn determine_capture_info(
/// ///
/// Note: Capture kind changes from `MutBorrow` to `UniqueImmBorrow` if the truncated part of the `place` /// Note: Capture kind changes from `MutBorrow` to `UniqueImmBorrow` if the truncated part of the `place`
/// contained `Deref` of `&mut`. /// contained `Deref` of `&mut`.
fn truncate_place_to_len_and_update_capture_kind( fn truncate_place_to_len_and_update_capture_kind<'tcx>(
place: &mut Place<'tcx>, place: &mut Place<'tcx>,
curr_mode: &mut ty::UpvarCapture<'tcx>, curr_mode: &mut ty::UpvarCapture<'tcx>,
len: usize, len: usize,
@ -2330,7 +2330,7 @@ fn truncate_place_to_len_and_update_capture_kind(
/// `PlaceAncestryRelation::Ancestor` implies Place A is ancestor of Place B /// `PlaceAncestryRelation::Ancestor` implies Place A is ancestor of Place B
/// `PlaceAncestryRelation::Descendant` implies Place A is descendant of Place B /// `PlaceAncestryRelation::Descendant` implies Place A is descendant of Place B
/// `PlaceAncestryRelation::Divergent` implies neither of them is the ancestor of the other. /// `PlaceAncestryRelation::Divergent` implies neither of them is the ancestor of the other.
fn determine_place_ancestry_relation( fn determine_place_ancestry_relation<'tcx>(
place_a: &Place<'tcx>, place_a: &Place<'tcx>,
place_b: &Place<'tcx>, place_b: &Place<'tcx>,
) -> PlaceAncestryRelation { ) -> PlaceAncestryRelation {

View file

@ -1488,7 +1488,7 @@ fn check_method_receiver<'fcx, 'tcx>(
} }
} }
fn e0307(fcx: &FnCtxt<'fcx, 'tcx>, span: Span, receiver_ty: Ty<'_>) { fn e0307<'tcx>(fcx: &FnCtxt<'_, 'tcx>, span: Span, receiver_ty: Ty<'_>) {
struct_span_err!( struct_span_err!(
fcx.tcx.sess.diagnostic(), fcx.tcx.sess.diagnostic(),
span, span,
@ -1591,7 +1591,7 @@ fn receiver_is_valid<'fcx, 'tcx>(
true true
} }
fn receiver_is_implemented( fn receiver_is_implemented<'tcx>(
fcx: &FnCtxt<'_, 'tcx>, fcx: &FnCtxt<'_, 'tcx>,
receiver_trait_def_id: DefId, receiver_trait_def_id: DefId,
cause: ObligationCause<'tcx>, cause: ObligationCause<'tcx>,
@ -1734,13 +1734,13 @@ pub struct CheckTypeWellFormedVisitor<'tcx> {
tcx: TyCtxt<'tcx>, tcx: TyCtxt<'tcx>,
} }
impl CheckTypeWellFormedVisitor<'tcx> { impl<'tcx> CheckTypeWellFormedVisitor<'tcx> {
pub fn new(tcx: TyCtxt<'tcx>) -> CheckTypeWellFormedVisitor<'tcx> { pub fn new(tcx: TyCtxt<'tcx>) -> CheckTypeWellFormedVisitor<'tcx> {
CheckTypeWellFormedVisitor { tcx } CheckTypeWellFormedVisitor { tcx }
} }
} }
impl ParItemLikeVisitor<'tcx> for CheckTypeWellFormedVisitor<'tcx> { impl<'tcx> ParItemLikeVisitor<'tcx> for CheckTypeWellFormedVisitor<'tcx> {
fn visit_item(&self, i: &'tcx hir::Item<'tcx>) { fn visit_item(&self, i: &'tcx hir::Item<'tcx>) {
Visitor::visit_item(&mut self.clone(), i); Visitor::visit_item(&mut self.clone(), i);
} }
@ -1758,7 +1758,7 @@ impl ParItemLikeVisitor<'tcx> for CheckTypeWellFormedVisitor<'tcx> {
} }
} }
impl Visitor<'tcx> for CheckTypeWellFormedVisitor<'tcx> { impl<'tcx> Visitor<'tcx> for CheckTypeWellFormedVisitor<'tcx> {
type Map = hir_map::Map<'tcx>; type Map = hir_map::Map<'tcx>;
fn nested_visit_map(&mut self) -> hir_visit::NestedVisitorMap<Self::Map> { fn nested_visit_map(&mut self) -> hir_visit::NestedVisitorMap<Self::Map> {

View file

@ -21,7 +21,7 @@ pub fn check_crate(tcx: TyCtxt<'_>) {
unused_crates_lint(tcx); unused_crates_lint(tcx);
} }
impl ItemLikeVisitor<'v> for CheckVisitor<'tcx> { impl<'tcx> ItemLikeVisitor<'_> for CheckVisitor<'tcx> {
fn visit_item(&mut self, item: &hir::Item<'_>) { fn visit_item(&mut self, item: &hir::Item<'_>) {
if item.vis.node.is_pub() || item.span.is_dummy() { if item.vis.node.is_pub() || item.span.is_dummy() {
return; return;
@ -43,7 +43,7 @@ struct CheckVisitor<'tcx> {
used_trait_imports: FxHashSet<LocalDefId>, used_trait_imports: FxHashSet<LocalDefId>,
} }
impl CheckVisitor<'tcx> { impl<'tcx> CheckVisitor<'tcx> {
fn check_import(&self, item_id: hir::ItemId, span: Span) { fn check_import(&self, item_id: hir::ItemId, span: Span) {
if !self.tcx.maybe_unused_trait_import(item_id.def_id) { if !self.tcx.maybe_unused_trait_import(item_id.def_id) {
return; return;

View file

@ -108,7 +108,7 @@ fn visit_implementation_of_copy(tcx: TyCtxt<'_>, impl_did: LocalDefId) {
} }
} }
fn visit_implementation_of_coerce_unsized(tcx: TyCtxt<'tcx>, impl_did: LocalDefId) { fn visit_implementation_of_coerce_unsized<'tcx>(tcx: TyCtxt<'tcx>, impl_did: LocalDefId) {
debug!("visit_implementation_of_coerce_unsized: impl_did={:?}", impl_did); debug!("visit_implementation_of_coerce_unsized: impl_did={:?}", impl_did);
// Just compute this for the side-effects, in particular reporting // Just compute this for the side-effects, in particular reporting
@ -118,7 +118,7 @@ fn visit_implementation_of_coerce_unsized(tcx: TyCtxt<'tcx>, impl_did: LocalDefI
tcx.at(span).coerce_unsized_info(impl_did); tcx.at(span).coerce_unsized_info(impl_did);
} }
fn visit_implementation_of_dispatch_from_dyn(tcx: TyCtxt<'_>, impl_did: LocalDefId) { fn visit_implementation_of_dispatch_from_dyn<'tcx>(tcx: TyCtxt<'tcx>, impl_did: LocalDefId) {
debug!("visit_implementation_of_dispatch_from_dyn: impl_did={:?}", impl_did); debug!("visit_implementation_of_dispatch_from_dyn: impl_did={:?}", impl_did);
let impl_hir_id = tcx.hir().local_def_id_to_hir_id(impl_did); let impl_hir_id = tcx.hir().local_def_id_to_hir_id(impl_did);
@ -287,7 +287,7 @@ fn visit_implementation_of_dispatch_from_dyn(tcx: TyCtxt<'_>, impl_did: LocalDef
}) })
} }
pub fn coerce_unsized_info(tcx: TyCtxt<'tcx>, impl_did: DefId) -> CoerceUnsizedInfo { pub fn coerce_unsized_info<'tcx>(tcx: TyCtxt<'tcx>, impl_did: DefId) -> CoerceUnsizedInfo {
debug!("compute_coerce_unsized_info(impl_did={:?})", impl_did); debug!("compute_coerce_unsized_info(impl_did={:?})", impl_did);
// this provider should only get invoked for local def-ids // this provider should only get invoked for local def-ids

View file

@ -38,7 +38,7 @@ struct InherentCollect<'tcx> {
impls_map: CrateInherentImpls, impls_map: CrateInherentImpls,
} }
impl ItemLikeVisitor<'v> for InherentCollect<'tcx> { impl<'tcx> ItemLikeVisitor<'_> for InherentCollect<'tcx> {
fn visit_item(&mut self, item: &hir::Item<'_>) { fn visit_item(&mut self, item: &hir::Item<'_>) {
let (ty, assoc_items) = match item.kind { let (ty, assoc_items) = match item.kind {
hir::ItemKind::Impl(hir::Impl { of_trait: None, ref self_ty, items, .. }) => { hir::ItemKind::Impl(hir::Impl { of_trait: None, ref self_ty, items, .. }) => {
@ -370,7 +370,7 @@ impl ItemLikeVisitor<'v> for InherentCollect<'tcx> {
fn visit_foreign_item(&mut self, _foreign_item: &hir::ForeignItem<'_>) {} fn visit_foreign_item(&mut self, _foreign_item: &hir::ForeignItem<'_>) {}
} }
impl InherentCollect<'tcx> { impl<'tcx> InherentCollect<'tcx> {
fn check_def_id(&mut self, item: &hir::Item<'_>, def_id: DefId) { fn check_def_id(&mut self, item: &hir::Item<'_>, def_id: DefId) {
if let Some(def_id) = def_id.as_local() { if let Some(def_id) = def_id.as_local() {
// Add the implementation to the mapping from implementation to base // Add the implementation to the mapping from implementation to base

View file

@ -18,7 +18,7 @@ struct InherentOverlapChecker<'tcx> {
tcx: TyCtxt<'tcx>, tcx: TyCtxt<'tcx>,
} }
impl InherentOverlapChecker<'tcx> { impl<'tcx> InherentOverlapChecker<'tcx> {
/// Checks whether any associated items in impls 1 and 2 share the same identifier and /// Checks whether any associated items in impls 1 and 2 share the same identifier and
/// namespace. /// namespace.
fn impls_have_common_items( fn impls_have_common_items(
@ -115,8 +115,8 @@ impl InherentOverlapChecker<'tcx> {
} }
} }
impl ItemLikeVisitor<'v> for InherentOverlapChecker<'tcx> { impl<'tcx> ItemLikeVisitor<'_> for InherentOverlapChecker<'tcx> {
fn visit_item(&mut self, item: &'v hir::Item<'v>) { fn visit_item(&mut self, item: &hir::Item<'_>) {
match item.kind { match item.kind {
hir::ItemKind::Enum(..) hir::ItemKind::Enum(..)
| hir::ItemKind::Struct(..) | hir::ItemKind::Struct(..)
@ -300,9 +300,9 @@ impl ItemLikeVisitor<'v> for InherentOverlapChecker<'tcx> {
} }
} }
fn visit_trait_item(&mut self, _trait_item: &hir::TraitItem<'v>) {} fn visit_trait_item(&mut self, _trait_item: &hir::TraitItem<'_>) {}
fn visit_impl_item(&mut self, _impl_item: &hir::ImplItem<'v>) {} fn visit_impl_item(&mut self, _impl_item: &hir::ImplItem<'_>) {}
fn visit_foreign_item(&mut self, _foreign_item: &hir::ForeignItem<'v>) {} fn visit_foreign_item(&mut self, _foreign_item: &hir::ForeignItem<'_>) {}
} }

View file

@ -143,7 +143,7 @@ fn orphan_check_impl(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Result<(), ErrorRep
Ok(()) Ok(())
} }
fn emit_orphan_check_error( fn emit_orphan_check_error<'tcx>(
tcx: TyCtxt<'tcx>, tcx: TyCtxt<'tcx>,
sp: Span, sp: Span,
trait_span: Span, trait_span: Span,

View file

@ -16,10 +16,10 @@ struct UnsafetyChecker<'tcx> {
tcx: TyCtxt<'tcx>, tcx: TyCtxt<'tcx>,
} }
impl UnsafetyChecker<'tcx> { impl<'tcx> UnsafetyChecker<'tcx> {
fn check_unsafety_coherence( fn check_unsafety_coherence(
&mut self, &mut self,
item: &'v hir::Item<'v>, item: &hir::Item<'_>,
impl_generics: Option<&hir::Generics<'_>>, impl_generics: Option<&hir::Generics<'_>>,
unsafety: hir::Unsafety, unsafety: hir::Unsafety,
polarity: hir::ImplPolarity, polarity: hir::ImplPolarity,
@ -83,8 +83,8 @@ impl UnsafetyChecker<'tcx> {
} }
} }
impl ItemLikeVisitor<'v> for UnsafetyChecker<'tcx> { impl<'tcx> ItemLikeVisitor<'_> for UnsafetyChecker<'tcx> {
fn visit_item(&mut self, item: &'v hir::Item<'v>) { fn visit_item(&mut self, item: &hir::Item<'_>) {
if let hir::ItemKind::Impl(ref impl_) = item.kind { if let hir::ItemKind::Impl(ref impl_) = item.kind {
self.check_unsafety_coherence( self.check_unsafety_coherence(
item, item,

View file

@ -147,7 +147,7 @@ struct CollectItemTypesVisitor<'tcx> {
/// If there are any placeholder types (`_`), emit an error explaining that this is not allowed /// If there are any placeholder types (`_`), emit an error explaining that this is not allowed
/// and suggest adding type parameters in the appropriate place, taking into consideration any and /// and suggest adding type parameters in the appropriate place, taking into consideration any and
/// all already existing generic type parameters to avoid suggesting a name that is already in use. /// all already existing generic type parameters to avoid suggesting a name that is already in use.
crate fn placeholder_type_error( crate fn placeholder_type_error<'tcx>(
tcx: TyCtxt<'tcx>, tcx: TyCtxt<'tcx>,
span: Option<Span>, span: Option<Span>,
generics: &[hir::GenericParam<'_>], generics: &[hir::GenericParam<'_>],
@ -223,7 +223,10 @@ crate fn placeholder_type_error(
err.emit(); err.emit();
} }
fn reject_placeholder_type_signatures_in_item(tcx: TyCtxt<'tcx>, item: &'tcx hir::Item<'tcx>) { fn reject_placeholder_type_signatures_in_item<'tcx>(
tcx: TyCtxt<'tcx>,
item: &'tcx hir::Item<'tcx>,
) {
let (generics, suggest) = match &item.kind { let (generics, suggest) = match &item.kind {
hir::ItemKind::Union(_, generics) hir::ItemKind::Union(_, generics)
| hir::ItemKind::Enum(_, generics) | hir::ItemKind::Enum(_, generics)
@ -251,7 +254,7 @@ fn reject_placeholder_type_signatures_in_item(tcx: TyCtxt<'tcx>, item: &'tcx hir
); );
} }
impl Visitor<'tcx> for CollectItemTypesVisitor<'tcx> { impl<'tcx> Visitor<'tcx> for CollectItemTypesVisitor<'tcx> {
type Map = Map<'tcx>; type Map = Map<'tcx>;
fn nested_visit_map(&mut self) -> NestedVisitorMap<Self::Map> { fn nested_visit_map(&mut self) -> NestedVisitorMap<Self::Map> {
@ -311,7 +314,7 @@ impl Visitor<'tcx> for CollectItemTypesVisitor<'tcx> {
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// Utility types and common code for the above passes. // Utility types and common code for the above passes.
fn bad_placeholder_type( fn bad_placeholder_type<'tcx>(
tcx: TyCtxt<'tcx>, tcx: TyCtxt<'tcx>,
mut spans: Vec<Span>, mut spans: Vec<Span>,
kind: &'static str, kind: &'static str,
@ -332,7 +335,7 @@ fn bad_placeholder_type(
err err
} }
impl ItemCtxt<'tcx> { impl<'tcx> ItemCtxt<'tcx> {
pub fn new(tcx: TyCtxt<'tcx>, item_def_id: DefId) -> ItemCtxt<'tcx> { pub fn new(tcx: TyCtxt<'tcx>, item_def_id: DefId) -> ItemCtxt<'tcx> {
ItemCtxt { tcx, item_def_id } ItemCtxt { tcx, item_def_id }
} }
@ -350,7 +353,7 @@ impl ItemCtxt<'tcx> {
} }
} }
impl AstConv<'tcx> for ItemCtxt<'tcx> { impl<'tcx> AstConv<'tcx> for ItemCtxt<'tcx> {
fn tcx(&self) -> TyCtxt<'tcx> { fn tcx(&self) -> TyCtxt<'tcx> {
self.tcx self.tcx
} }
@ -643,7 +646,7 @@ fn type_param_predicates(
result result
} }
impl ItemCtxt<'tcx> { impl<'tcx> ItemCtxt<'tcx> {
/// Finds bounds from `hir::Generics`. This requires scanning through the /// Finds bounds from `hir::Generics`. This requires scanning through the
/// AST. We do this to avoid having to convert *all* the bounds, which /// AST. We do this to avoid having to convert *all* the bounds, which
/// would create artificial cycles. Instead, we can only convert the /// would create artificial cycles. Instead, we can only convert the
@ -1239,7 +1242,7 @@ fn has_late_bound_regions<'tcx>(tcx: TyCtxt<'tcx>, node: Node<'tcx>) -> Option<S
has_late_bound_regions: Option<Span>, has_late_bound_regions: Option<Span>,
} }
impl Visitor<'tcx> for LateBoundRegionsDetector<'tcx> { impl<'tcx> Visitor<'tcx> for LateBoundRegionsDetector<'tcx> {
type Map = intravisit::ErasedMap<'tcx>; type Map = intravisit::ErasedMap<'tcx>;
fn nested_visit_map(&mut self) -> NestedVisitorMap<Self::Map> { fn nested_visit_map(&mut self) -> NestedVisitorMap<Self::Map> {
@ -1746,7 +1749,7 @@ fn is_suggestable_infer_ty(ty: &hir::Ty<'_>) -> bool {
} }
} }
pub fn get_infer_ret_ty(output: &'hir hir::FnRetTy<'hir>) -> Option<&'hir hir::Ty<'hir>> { pub fn get_infer_ret_ty<'hir>(output: &'hir hir::FnRetTy<'hir>) -> Option<&'hir hir::Ty<'hir>> {
if let hir::FnRetTy::Return(ty) = output { if let hir::FnRetTy::Return(ty) = output {
if is_suggestable_infer_ty(ty) { if is_suggestable_infer_ty(ty) {
return Some(&*ty); return Some(&*ty);

View file

@ -731,7 +731,7 @@ fn infer_placeholder_type<'a>(
} }
} }
impl TypeFolder<'tcx> for MakeNameable<'tcx> { impl<'tcx> TypeFolder<'tcx> for MakeNameable<'tcx> {
fn tcx(&self) -> TyCtxt<'tcx> { fn tcx(&self) -> TyCtxt<'tcx> {
self.tcx self.tcx
} }

View file

@ -482,7 +482,7 @@ impl<'a, 'tcx> ExprUseVisitor<'a, 'tcx> {
} }
} }
fn walk_struct_expr( fn walk_struct_expr<'hir>(
&mut self, &mut self,
fields: &[hir::ExprField<'_>], fields: &[hir::ExprField<'_>],
opt_with: &Option<&'hir hir::Expr<'_>>, opt_with: &Option<&'hir hir::Expr<'_>>,
@ -705,7 +705,7 @@ impl<'a, 'tcx> ExprUseVisitor<'a, 'tcx> {
/// - When reporting the Place back to the Delegate, ensure that the UpvarId uses the enclosing /// - When reporting the Place back to the Delegate, ensure that the UpvarId uses the enclosing
/// closure as the DefId. /// closure as the DefId.
fn walk_captures(&mut self, closure_expr: &hir::Expr<'_>) { fn walk_captures(&mut self, closure_expr: &hir::Expr<'_>) {
fn upvar_is_local_variable( fn upvar_is_local_variable<'tcx>(
upvars: Option<&'tcx FxIndexMap<hir::HirId, hir::Upvar>>, upvars: Option<&'tcx FxIndexMap<hir::HirId, hir::Upvar>>,
upvar_id: &hir::HirId, upvar_id: &hir::HirId,
body_owner_is_closure: bool, body_owner_is_closure: bool,
@ -846,7 +846,7 @@ fn delegate_consume<'a, 'tcx>(
} }
} }
fn is_multivariant_adt(ty: Ty<'tcx>) -> bool { fn is_multivariant_adt(ty: Ty<'_>) -> bool {
if let ty::Adt(def, _) = ty.kind() { if let ty::Adt(def, _) = ty.kind() {
// Note that if a non-exhaustive SingleVariant is defined in another crate, we need // Note that if a non-exhaustive SingleVariant is defined in another crate, we need
// to assume that more cases will be added to the variant in the future. This mean // to assume that more cases will be added to the variant in the future. This mean

View file

@ -76,7 +76,7 @@ struct ImplWfCheck<'tcx> {
min_specialization: bool, min_specialization: bool,
} }
impl ItemLikeVisitor<'tcx> for ImplWfCheck<'tcx> { impl<'tcx> ItemLikeVisitor<'tcx> for ImplWfCheck<'tcx> {
fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) { fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) {
if let hir::ItemKind::Impl(ref impl_) = item.kind { if let hir::ItemKind::Impl(ref impl_) = item.kind {
enforce_impl_params_are_constrained(self.tcx, item.def_id, impl_.items); enforce_impl_params_are_constrained(self.tcx, item.def_id, impl_.items);

View file

@ -59,7 +59,6 @@ This API is completely unstable and subject to change.
#![feature(bool_to_option)] #![feature(bool_to_option)]
#![feature(crate_visibility_modifier)] #![feature(crate_visibility_modifier)]
#![feature(if_let_guard)] #![feature(if_let_guard)]
#![feature(in_band_lifetimes)]
#![feature(is_sorted)] #![feature(is_sorted)]
#![feature(let_else)] #![feature(let_else)]
#![feature(min_specialization)] #![feature(min_specialization)]

View file

@ -12,7 +12,7 @@ struct OutlivesTest<'tcx> {
tcx: TyCtxt<'tcx>, tcx: TyCtxt<'tcx>,
} }
impl ItemLikeVisitor<'tcx> for OutlivesTest<'tcx> { impl<'tcx> ItemLikeVisitor<'tcx> for OutlivesTest<'tcx> {
fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) { fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) {
// For unit testing: check for a special "rustc_outlives" // For unit testing: check for a special "rustc_outlives"
// attribute and report an error with various results if found. // attribute and report an error with various results if found.

View file

@ -12,7 +12,7 @@ struct VarianceTest<'tcx> {
tcx: TyCtxt<'tcx>, tcx: TyCtxt<'tcx>,
} }
impl ItemLikeVisitor<'tcx> for VarianceTest<'tcx> { impl<'tcx> ItemLikeVisitor<'tcx> for VarianceTest<'tcx> {
fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) { fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) {
// For unit testing: check for a special "rustc_variance" // For unit testing: check for a special "rustc_variance"
// attribute and report an error with various results if found. // attribute and report an error with various results if found.