]> git.lizzy.rs Git - rust.git/commitdiff
Use Arena inside hir::Body.
authorCamille GILLOT <gillot.camille@gmail.com>
Fri, 29 Nov 2019 10:09:23 +0000 (11:09 +0100)
committerCamille GILLOT <gillot.camille@gmail.com>
Sat, 21 Dec 2019 22:39:19 +0000 (23:39 +0100)
24 files changed:
src/librustc/arena.rs
src/librustc/hir/intravisit.rs
src/librustc/hir/lowering.rs
src/librustc/hir/lowering/item.rs
src/librustc/hir/map/mod.rs
src/librustc/hir/mod.rs
src/librustc/ich/hcx.rs
src/librustc/ich/impls_hir.rs
src/librustc/infer/error_reporting/need_type_info.rs
src/librustc/lint/context.rs
src/librustc/lint/mod.rs
src/librustc/middle/region.rs
src/librustc/middle/resolve_lifetime.rs
src/librustc_lint/nonstandard_style.rs
src/librustc_mir/build/mod.rs
src/librustc_mir/hair/pattern/check_match.rs
src/librustc_passes/check_const.rs
src/librustc_passes/liveness.rs
src/librustc_typeck/check/closure.rs
src/librustc_typeck/check/mod.rs
src/librustc_typeck/check/regionck.rs
src/librustc_typeck/check/upvar.rs
src/librustc_typeck/check/writeback.rs
src/librustc_typeck/expr_use_visitor.rs

index 494b8ca8f4f76df18bf9590d35f2ed2fa90c0a85..164e0e85c5acd6eb598082b56339e73eabdaa02f 100644 (file)
@@ -130,6 +130,7 @@ macro_rules! arena_types {
             [] foreign_item: rustc::hir::ForeignItem<$tcx>,
             [] impl_item_ref: rustc::hir::ImplItemRef,
             [] macro_def: rustc::hir::MacroDef<$tcx>,
+            [] param: rustc::hir::Param,
             [] path: rustc::hir::Path,
             [] struct_field: rustc::hir::StructField<$tcx>,
             [] trait_item_ref: rustc::hir::TraitItemRef,
index cae813582cd2d0a2cc24861c113071376c7588a0..bd975c6c95dbc131c8f2f05d50c00c5e7a4e3335 100644 (file)
@@ -222,7 +222,7 @@ fn visit_item(&mut self, i: &'v Item<'v>) {
         walk_item(self, i)
     }
 
-    fn visit_body(&mut self, b: &'v Body) {
+    fn visit_body(&mut self, b: &'v Body<'v>) {
         walk_body(self, b);
     }
 
@@ -401,8 +401,8 @@ pub fn walk_mod<'v, V: Visitor<'v>>(visitor: &mut V, module: &'v Mod<'v>, mod_hi
     }
 }
 
-pub fn walk_body<'v, V: Visitor<'v>>(visitor: &mut V, body: &'v Body) {
-    walk_list!(visitor, visit_param, &body.params);
+pub fn walk_body<'v, V: Visitor<'v>>(visitor: &mut V, body: &'v Body<'v>) {
+    walk_list!(visitor, visit_param, body.params);
     visitor.visit_expr(&body.value);
 }
 
index 74615cbe9455e8d198299f289c168e6f0dd14cd2..cac4c694316c512804c853688c0f86926e1b79d7 100644 (file)
@@ -99,7 +99,7 @@ pub struct LoweringContext<'a, 'hir: 'a> {
 
     trait_items: BTreeMap<hir::TraitItemId, hir::TraitItem<'hir>>,
     impl_items: BTreeMap<hir::ImplItemId, hir::ImplItem<'hir>>,
-    bodies: BTreeMap<hir::BodyId, hir::Body>,
+    bodies: BTreeMap<hir::BodyId, hir::Body<'hir>>,
     exported_macros: Vec<hir::MacroDef<'hir>>,
     non_exported_macro_attrs: Vec<ast::Attribute>,
 
@@ -3428,7 +3428,7 @@ fn maybe_lint_bare_trait(&mut self, span: Span, id: NodeId, is_global: bool) {
     }
 }
 
-fn body_ids(bodies: &BTreeMap<hir::BodyId, hir::Body>) -> Vec<hir::BodyId> {
+fn body_ids(bodies: &BTreeMap<hir::BodyId, hir::Body<'hir>>) -> Vec<hir::BodyId> {
     // Sorting by span ensures that we get things in order within a
     // file, and also puts the files in a sensible order.
     let mut body_ids: Vec<_> = bodies.keys().cloned().collect();
index c49242485e156859879c205985ed8fde005c1f63..d5440663c49a130aaafb8cc99c330e6836ea8188 100644 (file)
@@ -5,7 +5,7 @@
 use super::AnonymousLifetimeMode;
 use super::ParamMode;
 
-use crate::hir::{self, HirVec};
+use crate::hir;
 use crate::hir::ptr::P;
 use crate::hir::def_id::DefId;
 use crate::hir::def::{Res, DefKind};
@@ -107,7 +107,7 @@ fn visit_impl_item(&mut self, item: &'a AssocItem) {
     }
 }
 
-impl LoweringContext<'_, 'hir> {
+impl<'hir> LoweringContext<'_, 'hir> {
     // Same as the method above, but accepts `hir::GenericParam`s
     // instead of `ast::GenericParam`s.
     // This should only be used with generics that have already had their
@@ -1052,7 +1052,7 @@ fn lower_defaultness(&self, d: Defaultness, has_value: bool) -> hir::Defaultness
         }
     }
 
-    fn record_body(&mut self, params: HirVec<hir::Param>, value: hir::Expr) -> hir::BodyId {
+    fn record_body(&mut self, params: &'hir [hir::Param], value: hir::Expr) -> hir::BodyId {
         let body = hir::Body {
             generator_kind: self.generator_kind,
             params,
@@ -1065,7 +1065,7 @@ fn record_body(&mut self, params: HirVec<hir::Param>, value: hir::Expr) -> hir::
 
     fn lower_body(
         &mut self,
-        f: impl FnOnce(&mut LoweringContext<'_, '_>) -> (HirVec<hir::Param>, hir::Expr),
+        f: impl FnOnce(&mut Self) -> (&'hir [hir::Param], hir::Expr),
     ) -> hir::BodyId {
         let prev_gen_kind = self.generator_kind.take();
         let (parameters, result) = f(self);
@@ -1089,7 +1089,9 @@ pub(super) fn lower_fn_body(
         body: impl FnOnce(&mut LoweringContext<'_, '_>) -> hir::Expr,
     ) -> hir::BodyId {
         self.lower_body(|this| (
-            decl.inputs.iter().map(|x| this.lower_param(x)).collect(),
+            this.arena.alloc_from_iter(
+                decl.inputs.iter().map(|x| this.lower_param(x))
+            ),
             body(this),
         ))
     }
@@ -1111,7 +1113,7 @@ fn lower_block_expr_opt(&mut self, span: Span, block: Option<&Block>) -> hir::Ex
     }
 
     pub(super) fn lower_const_body(&mut self, span: Span, expr: Option<&Expr>) -> hir::BodyId {
-        self.lower_body(|this| (hir_vec![], match expr {
+        self.lower_body(|this| (&[], match expr {
             Some(expr) => this.lower_expr(expr),
             None => this.expr_err(span),
         }))
@@ -1299,7 +1301,8 @@ fn lower_maybe_async_body(
                     );
                     this.expr_block(P(body), AttrVec::new())
                 });
-            (HirVec::from(parameters), this.expr(body_span, async_expr, AttrVec::new()))
+
+            (this.arena.alloc_from_iter(parameters), this.expr(body_span, async_expr, AttrVec::new()))
         })
     }
 
index cd96bedf4bdbfd28c27bce4221e257900d13bf97..71addc123b8eb329d28a806a1119a77e31a71111 100644 (file)
@@ -459,7 +459,7 @@ pub fn impl_item(&self, id: ImplItemId) -> &'hir ImplItem<'hir> {
         self.forest.krate.impl_item(id)
     }
 
-    pub fn body(&self, id: BodyId) -> &'hir Body {
+    pub fn body(&self, id: BodyId) -> &'hir Body<'hir> {
         self.read(id.hir_id);
 
         // N.B., intentionally bypass `self.forest.krate()` so that we
index c89d93337ebc9ffdaabb7e8547aee23ccbd6b418..ff6801a85c7e1d28bcd6dcc59452855dd8c9c507 100644 (file)
@@ -760,7 +760,7 @@ pub struct Crate<'hir> {
 
     pub trait_items: BTreeMap<TraitItemId, TraitItem<'hir>>,
     pub impl_items: BTreeMap<ImplItemId, ImplItem<'hir>>,
-    pub bodies: BTreeMap<BodyId, Body>,
+    pub bodies: BTreeMap<BodyId, Body<'hir>>,
     pub trait_impls: BTreeMap<DefId, Vec<HirId>>,
 
     /// A list of the body ids written out in the order in which they
@@ -787,7 +787,7 @@ pub fn impl_item(&self, id: ImplItemId) -> &ImplItem<'hir> {
         &self.impl_items[&id]
     }
 
-    pub fn body(&self, id: BodyId) -> &Body {
+    pub fn body(&self, id: BodyId) -> &Body<'hir> {
         &self.bodies[&id]
     }
 }
@@ -1353,13 +1353,13 @@ pub struct BodyId {
 /// All bodies have an **owner**, which can be accessed via the HIR
 /// map using `body_owner_def_id()`.
 #[derive(RustcEncodable, RustcDecodable, Debug)]
-pub struct Body {
-    pub params: HirVec<Param>,
+pub struct Body<'hir> {
+    pub params: &'hir [Param],
     pub value: Expr,
     pub generator_kind: Option<GeneratorKind>,
 }
 
-impl Body {
+impl Body<'hir> {
     pub fn id(&self) -> BodyId {
         BodyId {
             hir_id: self.value.hir_id,
index 77a9bcd67a5ce562a2c4a277ec8dea8af0772e7c..af5e167faa8b783f4fbb8e7b4c5127ccf71e1cb6 100644 (file)
@@ -61,7 +61,7 @@ pub enum NodeIdHashingMode {
 impl<'tcx> BodyResolver<'tcx> {
     /// Returns a reference to the `hir::Body` with the given `BodyId`.
     /// **Does not do any tracking**; use carefully.
-    fn body(self, id: hir::BodyId) -> &'tcx hir::Body {
+    fn body(self, id: hir::BodyId) -> &'tcx hir::Body<'tcx> {
         self.0.body(id)
     }
 }
index 45274b0526fe34a15b10d68d7576deab3c64be50..1f96f4c65ef6912a1a7f1c33c275c87b83a57031 100644 (file)
@@ -266,7 +266,7 @@ fn hash_stable(&self, hcx: &mut StableHashingContext<'a>, hasher: &mut StableHas
     }
 }
 
-impl<'a> HashStable<StableHashingContext<'a>> for hir::Body {
+impl<'a> HashStable<StableHashingContext<'a>> for hir::Body<'_> {
     fn hash_stable(&self, hcx: &mut StableHashingContext<'a>, hasher: &mut StableHasher) {
         let hir::Body {
             params,
index ebb94cc72ffe0de5e4cb49f78391c7314ddd3ff4..378d6d78d320388f88fe66a103966db31699236c 100644 (file)
@@ -83,8 +83,8 @@ fn visit_local(&mut self, local: &'tcx Local) {
         intravisit::walk_local(self, local);
     }
 
-    fn visit_body(&mut self, body: &'tcx Body) {
-        for param in &body.params {
+    fn visit_body(&mut self, body: &'tcx Body<'tcx>) {
+        for param in body.params {
             if let (None, Some(ty)) = (
                 self.found_arg_pattern,
                 self.node_matches_type(param.hir_id),
@@ -113,7 +113,7 @@ fn closure_return_type_suggestion(
     span: Span,
     err: &mut DiagnosticBuilder<'_>,
     output: &FunctionRetTy,
-    body: &Body,
+    body: &Body<'_>,
     descr: &str,
     name: &str,
     ret: &str,
index 5ac20f46238f586736eb5d536a9feea7de9224ce..b7d013063438dba7c3cdb37fdc10e9f97b8c8fe7 100644 (file)
@@ -924,7 +924,7 @@ fn visit_param(&mut self, param: &'tcx hir::Param) {
         });
     }
 
-    fn visit_body(&mut self, body: &'tcx hir::Body) {
+    fn visit_body(&mut self, body: &'tcx hir::Body<'tcx>) {
         lint_callback!(self, check_body, body);
         hir_visit::walk_body(self, body);
         lint_callback!(self, check_body_post, body);
index a5d6cf9dbb72eb23cc754cf1f3fb3e5eb1d688c3..3d6015ecfbff6f5daba0ffd668bc6db6d39eceb0 100644 (file)
@@ -87,8 +87,8 @@ macro_rules! late_lint_methods {
     ($macro:path, $args:tt, [$hir:tt]) => (
         $macro!($args, [$hir], [
             fn check_param(a: &$hir hir::Param);
-            fn check_body(a: &$hir hir::Body);
-            fn check_body_post(a: &$hir hir::Body);
+            fn check_body(a: &$hir hir::Body<$hir>);
+            fn check_body_post(a: &$hir hir::Body<$hir>);
             fn check_name(a: Span, b: ast::Name);
             fn check_crate(a: &$hir hir::Crate<$hir>);
             fn check_crate_post(a: &$hir hir::Crate<$hir>);
@@ -114,13 +114,13 @@ macro_rules! late_lint_methods {
             fn check_fn(
                 a: hir::intravisit::FnKind<$hir>,
                 b: &$hir hir::FnDecl,
-                c: &$hir hir::Body,
+                c: &$hir hir::Body<$hir>,
                 d: Span,
                 e: hir::HirId);
             fn check_fn_post(
                 a: hir::intravisit::FnKind<$hir>,
                 b: &$hir hir::FnDecl,
-                c: &$hir hir::Body,
+                c: &$hir hir::Body<$hir>,
                 d: Span,
                 e: hir::HirId
             );
index e050e5f8942558f96a83434c847feed6c3c5cb2f..c5d5bc58112257cdf8e17fb66ad7cb31bb04812c 100644 (file)
@@ -715,7 +715,7 @@ pub fn yield_in_scope(&self, scope: Scope) -> Option<YieldData> {
     pub fn yield_in_scope_for_expr(&self,
                                    scope: Scope,
                                    expr_hir_id: hir::HirId,
-                                   body: &'tcx hir::Body) -> Option<Span> {
+                                   body: &'tcx hir::Body<'tcx>) -> Option<Span> {
         self.yield_in_scope(scope).and_then(|YieldData { span, expr_and_pat_count, .. }| {
             let mut visitor = ExprLocatorVisitor {
                 hir_id: expr_hir_id,
@@ -1362,7 +1362,7 @@ fn visit_block(&mut self, b: &'tcx Block) {
         resolve_block(self, b);
     }
 
-    fn visit_body(&mut self, body: &'tcx hir::Body) {
+    fn visit_body(&mut self, body: &'tcx hir::Body<'tcx>) {
         let body_id = body.id();
         let owner_id = self.tcx.hir().body_owner(body_id);
 
@@ -1387,7 +1387,7 @@ fn visit_body(&mut self, body: &'tcx hir::Body) {
 
         // The arguments and `self` are parented to the fn.
         self.cx.var_parent = self.cx.parent.take();
-        for param in &body.params {
+        for param in body.params {
             self.visit_pat(&param.pat);
         }
 
index 38a7c67b907e900da67001ce7062a33cef6e08df..4b838d040596b98b00d279c2479a43b055904248 100644 (file)
@@ -1167,7 +1167,7 @@ fn signal_shadowing_problem(tcx: TyCtxt<'_>, name: ast::Name, orig: Original, sh
 
 // Adds all labels in `b` to `ctxt.labels_in_fn`, signalling a warning
 // if one of the label shadows a lifetime or another label.
-fn extract_labels(ctxt: &mut LifetimeContext<'_, '_>, body: &hir::Body) {
+fn extract_labels(ctxt: &mut LifetimeContext<'_, '_>, body: &hir::Body<'_>) {
     struct GatherLabels<'a, 'tcx> {
         tcx: TyCtxt<'tcx>,
         scope: ScopeRef<'a>,
index 9b9203083ee76d6f10b972df118d9b47182fd28a..08d7a90c7b09b2ff0b71716d6131803bb176bfe1 100644 (file)
@@ -298,7 +298,7 @@ fn check_fn(
         cx: &LateContext<'_, '_>,
         fk: FnKind<'_>,
         _: &hir::FnDecl,
-        _: &hir::Body,
+        _: &hir::Body<'_>,
         _: Span,
         id: hir::HirId,
     ) {
index 3479ad6749a9041f07f4d0a74281dfab7c78c060..6b6a58102fa8297a26c226b5de1763762174dfe5 100644 (file)
@@ -552,7 +552,7 @@ fn construct_fn<'a, 'tcx, A>(
     abi: Abi,
     return_ty: Ty<'tcx>,
     return_ty_span: Span,
-    body: &'tcx hir::Body,
+    body: &'tcx hir::Body<'tcx>,
 ) -> Body<'tcx>
 where
     A: Iterator<Item=ArgInfo<'tcx>>
index 28f0edadc89caec1267303110d8dc293deb495ed..4ebf41fb9d21f1d022ed26d40b7e6ac1bede7800 100644 (file)
@@ -76,10 +76,10 @@ fn visit_local(&mut self, loc: &'tcx hir::Local) {
         self.check_patterns(false, &loc.pat);
     }
 
-    fn visit_body(&mut self, body: &'tcx hir::Body) {
+    fn visit_body(&mut self, body: &'tcx hir::Body<'tcx>) {
         intravisit::walk_body(self, body);
 
-        for param in &body.params {
+        for param in body.params {
             self.check_irrefutable(&param.pat, "function argument", None);
             self.check_patterns(false, &param.pat);
         }
index f7bdefcb0690b83c5e87cff24beb39d6291cb82c..6b5b5c823e8b402cedb04a26ce2b501aa8307d17 100644 (file)
@@ -75,7 +75,7 @@ enum ConstKind {
 }
 
 impl ConstKind {
-    fn for_body(body: &hir::Body, hir_map: &Map<'_>) -> Option<Self> {
+    fn for_body(body: &hir::Body<'_>, hir_map: &Map<'_>) -> Option<Self> {
         let is_const_fn = |id| hir_map.fn_sig_by_hir_id(id).unwrap().header.is_const();
 
         let owner = hir_map.body_owner(body.id());
@@ -215,7 +215,7 @@ fn visit_anon_const(&mut self, anon: &'tcx hir::AnonConst) {
         self.recurse_into(kind, |this| hir::intravisit::walk_anon_const(this, anon));
     }
 
-    fn visit_body(&mut self, body: &'tcx hir::Body) {
+    fn visit_body(&mut self, body: &'tcx hir::Body<'tcx>) {
         let kind = ConstKind::for_body(body, self.tcx.hir());
         self.recurse_into(kind, |this| hir::intravisit::walk_body(this, body));
     }
index 81a39edf215600cb309c0c229192e239ed5ff8e4..f18ecb90fc1d033aa8d42e9bea1fe82d2bfa0671 100644 (file)
@@ -371,7 +371,7 @@ fn visit_fn<'tcx>(
 
     let body = ir.tcx.hir().body(body_id);
 
-    for param in &body.params {
+    for param in body.params {
         let is_shorthand = match param.pat.kind {
             rustc::hir::PatKind::Struct(..) => true,
             _ => false,
@@ -1463,8 +1463,8 @@ fn should_warn(&self, var: Variable) -> Option<String> {
         }
     }
 
-    fn warn_about_unused_args(&self, body: &hir::Body, entry_ln: LiveNode) {
-        for p in &body.params {
+    fn warn_about_unused_args(&self, body: &hir::Body<'_>, entry_ln: LiveNode) {
+        for p in body.params {
             self.check_unused_vars_in_pat(&p.pat, Some(entry_ln), |spans, hir_id, ln, var| {
                 if self.live_on_entry(ln, var).is_none() {
                     self.report_dead_assign(hir_id, spans, var, true);
index 30cb0d4f96766925203bac150276f09279a7087a..46b9a8d7f912a7a6782ecd682097f67963684cfb 100644 (file)
@@ -63,7 +63,7 @@ fn check_closure(
         expr: &hir::Expr,
         opt_kind: Option<ty::ClosureKind>,
         decl: &'tcx hir::FnDecl,
-        body: &'tcx hir::Body,
+        body: &'tcx hir::Body<'tcx>,
         gen: Option<hir::Movability>,
         expected_sig: Option<ExpectedSig<'tcx>>,
     ) -> Ty<'tcx> {
@@ -316,7 +316,7 @@ fn sig_of_closure(
         &self,
         expr_def_id: DefId,
         decl: &hir::FnDecl,
-        body: &hir::Body,
+        body: &hir::Body<'_>,
         expected_sig: Option<ExpectedSig<'tcx>>,
     ) -> ClosureSignatures<'tcx> {
         if let Some(e) = expected_sig {
@@ -332,7 +332,7 @@ fn sig_of_closure_no_expectation(
         &self,
         expr_def_id: DefId,
         decl: &hir::FnDecl,
-        body: &hir::Body,
+        body: &hir::Body<'_>,
     ) -> ClosureSignatures<'tcx> {
         debug!("sig_of_closure_no_expectation()");
 
@@ -392,7 +392,7 @@ fn sig_of_closure_with_expectation(
         &self,
         expr_def_id: DefId,
         decl: &hir::FnDecl,
-        body: &hir::Body,
+        body: &hir::Body<'_>,
         expected_sig: ExpectedSig<'tcx>,
     ) -> ClosureSignatures<'tcx> {
         debug!(
@@ -450,7 +450,7 @@ fn sig_of_closure_with_mismatched_number_of_arguments(
         &self,
         expr_def_id: DefId,
         decl: &hir::FnDecl,
-        body: &hir::Body,
+        body: &hir::Body<'_>,
         expected_sig: ExpectedSig<'tcx>,
     ) -> ClosureSignatures<'tcx> {
         let expr_map_node = self.tcx.hir().get_if_local(expr_def_id).unwrap();
@@ -482,7 +482,7 @@ fn check_supplied_sig_against_expectation(
         &self,
         expr_def_id: DefId,
         decl: &hir::FnDecl,
-        body: &hir::Body,
+        body: &hir::Body<'_>,
         expected_sigs: &ClosureSignatures<'tcx>,
     ) -> InferResult<'tcx, ()> {
         // Get the signature S that the user gave.
@@ -590,7 +590,7 @@ fn supplied_sig_of_closure(
         &self,
         expr_def_id: DefId,
         decl: &hir::FnDecl,
-        body: &hir::Body,
+        body: &hir::Body<'_>,
     ) -> ty::PolyFnSig<'tcx> {
         let astconv: &dyn AstConv<'_> = self;
 
@@ -788,7 +788,7 @@ fn error_sig_of_closure(&self, decl: &hir::FnDecl) -> ty::PolyFnSig<'tcx> {
     fn closure_sigs(
         &self,
         expr_def_id: DefId,
-        body: &hir::Body,
+        body: &hir::Body<'_>,
         bound_sig: ty::PolyFnSig<'tcx>,
     ) -> ClosureSignatures<'tcx> {
         let liberated_sig = self.tcx()
index 1cc3f3690f9c2eaa9c4d332c424347ed680745e5..1cd1d4fcd3f249cec1fa0399de6182a631dd95a4 100644 (file)
@@ -1260,7 +1260,7 @@ fn check_fn<'a, 'tcx>(
     fn_sig: ty::FnSig<'tcx>,
     decl: &'tcx hir::FnDecl,
     fn_id: hir::HirId,
-    body: &'tcx hir::Body,
+    body: &'tcx hir::Body<'tcx>,
     can_be_generator: Option<hir::Movability>,
 ) -> (FnCtxt<'a, 'tcx>, Option<GeneratorTypes<'tcx>>) {
     let mut fn_sig = fn_sig.clone();
@@ -1327,7 +1327,7 @@ fn check_fn<'a, 'tcx>(
     for (param_ty, param) in
         fn_sig.inputs().iter().copied()
             .chain(maybe_va_list)
-            .zip(&body.params)
+            .zip(body.params)
     {
         // Check the pattern.
         fcx.check_pat_top(&param.pat, param_ty, None);
index 179c462f5e374a08d5b73ba44a88acfcc27396e4..396ff5ce5189cf76308694dad69b7530191a5a9f 100644 (file)
@@ -106,7 +106,7 @@ macro_rules! ignore_err {
 // PUBLIC ENTRY POINTS
 
 impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
-    pub fn regionck_expr(&self, body: &'tcx hir::Body) {
+    pub fn regionck_expr(&self, body: &'tcx hir::Body<'tcx>) {
         let subject = self.tcx.hir().body_owner_def_id(body.id());
         let id = body.value.hir_id;
         let mut rcx = RegionCtxt::new(
@@ -159,7 +159,7 @@ pub fn regionck_item(&self, item_id: hir::HirId, span: Span, wf_tys: &[Ty<'tcx>]
     /// rest of type check and because sometimes we need type
     /// inference to have completed before we can determine which
     /// constraints to add.
-    pub fn regionck_fn(&self, fn_id: hir::HirId, body: &'tcx hir::Body) {
+    pub fn regionck_fn(&self, fn_id: hir::HirId, body: &'tcx hir::Body<'tcx>) {
         debug!("regionck_fn(id={})", fn_id);
         let subject = self.tcx.hir().body_owner_def_id(body.id());
         let hir_id = body.value.hir_id;
@@ -300,7 +300,7 @@ pub fn resolve_expr_type_adjusted(&mut self, expr: &hir::Expr) -> Ty<'tcx> {
     fn visit_fn_body(
         &mut self,
         id: hir::HirId, // the id of the fn itself
-        body: &'tcx hir::Body,
+        body: &'tcx hir::Body<'tcx>,
         span: Span,
     ) {
         // When we enter a function, we can derive
index 68cb0080b7d4135f3704885eb3a04f45be60a1a9..2788aa6b83ef04d1c86a20f7b423ad9cdf5bd1e1 100644 (file)
@@ -46,7 +46,7 @@
 use syntax_pos::Span;
 
 impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
-    pub fn closure_analyze(&self, body: &'tcx hir::Body) {
+    pub fn closure_analyze(&self, body: &'tcx hir::Body<'tcx>) {
         InferBorrowKindVisitor { fcx: self }.visit_body(body);
 
         // it's our job to process these.
@@ -81,7 +81,7 @@ fn analyze_closure(
         &self,
         closure_hir_id: hir::HirId,
         span: Span,
-        body: &hir::Body,
+        body: &hir::Body<'_>,
         capture_clause: hir::CaptureBy,
     ) {
 
index 35f25b322e053fa3cf11cabecce552d51c793683..27ce7d7c3e0b53020257407ded2f02c3d337e36e 100644 (file)
@@ -32,7 +32,7 @@
 // resolve_type_vars_in_body, which creates a new TypeTables which
 // doesn't contain any inference types.
 impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
-    pub fn resolve_type_vars_in_body(&self, body: &'tcx hir::Body) -> &'tcx ty::TypeckTables<'tcx> {
+    pub fn resolve_type_vars_in_body(&self, body: &'tcx hir::Body<'tcx>) -> &'tcx ty::TypeckTables<'tcx> {
         let item_id = self.tcx.hir().body_owner(body.id());
         let item_def_id = self.tcx.hir().local_def_id(item_id);
 
@@ -41,7 +41,7 @@ pub fn resolve_type_vars_in_body(&self, body: &'tcx hir::Body) -> &'tcx ty::Type
         let rustc_dump_user_substs = self.tcx.has_attr(item_def_id, sym::rustc_dump_user_substs);
 
         let mut wbcx = WritebackCx::new(self, body, rustc_dump_user_substs);
-        for param in &body.params {
+        for param in body.params {
             wbcx.visit_node_id(param.pat.span, param.hir_id);
         }
         // Type only exists for constants and statics, not functions.
@@ -102,7 +102,7 @@ struct WritebackCx<'cx, 'tcx> {
 
     tables: ty::TypeckTables<'tcx>,
 
-    body: &'tcx hir::Body,
+    body: &'tcx hir::Body<'tcx>,
 
     rustc_dump_user_substs: bool,
 }
@@ -110,7 +110,7 @@ struct WritebackCx<'cx, 'tcx> {
 impl<'cx, 'tcx> WritebackCx<'cx, 'tcx> {
     fn new(
         fcx: &'cx FnCtxt<'cx, 'tcx>,
-        body: &'tcx hir::Body,
+        body: &'tcx hir::Body<'tcx>,
         rustc_dump_user_substs: bool,
     ) -> WritebackCx<'cx, 'tcx> {
         let owner = body.id().hir_id;
@@ -265,7 +265,7 @@ fn visit_expr(&mut self, e: &'tcx hir::Expr) {
         match e.kind {
             hir::ExprKind::Closure(_, _, body, _, _) => {
                 let body = self.fcx.tcx.hir().body(body);
-                for param in &body.params {
+                for param in body.params {
                     self.visit_node_id(e.span, param.hir_id);
                 }
 
@@ -698,14 +698,14 @@ struct Resolver<'cx, 'tcx> {
     tcx: TyCtxt<'tcx>,
     infcx: &'cx InferCtxt<'cx, 'tcx>,
     span: &'cx dyn Locatable,
-    body: &'tcx hir::Body,
+    body: &'tcx hir::Body<'tcx>,
 }
 
 impl<'cx, 'tcx> Resolver<'cx, 'tcx> {
     fn new(
         fcx: &'cx FnCtxt<'cx, 'tcx>,
         span: &'cx dyn Locatable,
-        body: &'tcx hir::Body,
+        body: &'tcx hir::Body<'tcx>,
     ) -> Resolver<'cx, 'tcx> {
         Resolver {
             tcx: fcx.tcx,
index 03d7ab2d6337717cdc1be365a6c50f2f6417fe5b..7e67d30db18435b49000b22655849ce2ef0a548c 100644 (file)
@@ -131,10 +131,10 @@ pub fn new(
         }
     }
 
-    pub fn consume_body(&mut self, body: &hir::Body) {
+    pub fn consume_body(&mut self, body: &hir::Body<'_>) {
         debug!("consume_body(body={:?})", body);
 
-        for param in &body.params {
+        for param in body.params {
             let param_ty = return_if_err!(self.mc.pat_ty_adjusted(&param.pat));
             debug!("consume_body: param_ty = {:?}", param_ty);