]> git.lizzy.rs Git - rust.git/commitdiff
accommodate new scoping rules in rustc and rustdoc source.
authorFelix S. Klock II <pnkfelix@pnkfx.org>
Mon, 26 Jan 2015 12:38:33 +0000 (13:38 +0100)
committerFelix S. Klock II <pnkfelix@pnkfx.org>
Tue, 27 Jan 2015 09:26:52 +0000 (10:26 +0100)
src/librustc/middle/infer/error_reporting.rs
src/librustc_driver/driver.rs
src/librustc_trans/trans/base.rs
src/librustc_trans/trans/callee.rs
src/librustc_trans/trans/glue.rs
src/librustc_trans/trans/meth.rs
src/librustc_typeck/check/method/probe.rs
src/librustc_typeck/check/mod.rs
src/librustdoc/core.rs

index 18c36f870b5bce09da24a3222f81d46bc56a487f..cfef88a8deb4471ace63d15f69ed09b5144c343b 100644 (file)
@@ -809,6 +809,8 @@ fn give_suggestion(&self, same_regions: &[SameRegions]) {
         let scope_id = same_regions[0].scope_id;
         let parent = self.tcx.map.get_parent(scope_id);
         let parent_node = self.tcx.map.find(parent);
+        let taken = lifetimes_in_scope(self.tcx, scope_id);
+        let life_giver = LifeGiver::with_taken(&taken[]);
         let node_inner = match parent_node {
             Some(ref node) => match *node {
                 ast_map::NodeItem(ref item) => {
@@ -851,8 +853,6 @@ fn give_suggestion(&self, same_regions: &[SameRegions]) {
         };
         let (fn_decl, generics, unsafety, ident, expl_self, span)
                                     = node_inner.expect("expect item fn");
-        let taken = lifetimes_in_scope(self.tcx, scope_id);
-        let life_giver = LifeGiver::with_taken(&taken[]);
         let rebuilder = Rebuilder::new(self.tcx, fn_decl, expl_self,
                                        generics, same_regions, &life_giver);
         let (fn_decl, expl_self, generics) = rebuilder.rebuild();
index 36a9c0e16f018e926c4675cfa25f1173dd11d6c7..25b90041505a76e768604a5aeb80018081c78f93 100644 (file)
@@ -100,6 +100,7 @@ macro_rules! controller_entry_point{($point: ident, $make_state: expr) => ({
                                                                  &id[]));
 
         let mut forest = ast_map::Forest::new(expanded_crate);
+        let arenas = ty::CtxtArenas::new();
         let ast_map = assign_node_ids_and_map(&sess, &mut forest);
 
         write_out_deps(&sess, input, &outputs, &id[]);
@@ -111,7 +112,6 @@ macro_rules! controller_entry_point{($point: ident, $make_state: expr) => ({
                                                                      &ast_map,
                                                                      &id[]));
 
-        let arenas = ty::CtxtArenas::new();
         let analysis = phase_3_run_analysis_passes(sess,
                                                    ast_map,
                                                    &arenas,
index 230a4c5d4272ecb043d4cc941320d94e54b5f1fb..5a98bc4da3682384b3cd28089555918cc6f2461c 100644 (file)
@@ -1784,15 +1784,16 @@ pub fn trans_closure<'a, 'b, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
     debug!("trans_closure(..., param_substs={})",
            param_substs.repr(ccx.tcx()));
 
-    let arena = TypedArena::new();
-    let fcx = new_fn_ctxt(ccx,
-                          llfndecl,
-                          fn_ast_id,
-                          closure_env.kind != closure::NotClosure,
-                          output_type,
-                          param_substs,
-                          Some(body.span),
-                          &arena);
+    let (arena, fcx): (TypedArena<_>, FunctionContext);
+    arena = TypedArena::new();
+    fcx = new_fn_ctxt(ccx,
+                      llfndecl,
+                      fn_ast_id,
+                      closure_env.kind != closure::NotClosure,
+                      output_type,
+                      param_substs,
+                      Some(body.span),
+                      &arena);
     let mut bcx = init_function(&fcx, false, output_type);
 
     // cleanup scope for the incoming arguments
@@ -2046,9 +2047,10 @@ fn trans_enum_variant_or_tuple_like_struct<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx
                     ty_to_string(ccx.tcx(), ctor_ty))[])
     };
 
-    let arena = TypedArena::new();
-    let fcx = new_fn_ctxt(ccx, llfndecl, ctor_id, false, result_ty,
-                          param_substs, None, &arena);
+    let (arena, fcx): (TypedArena<_>, FunctionContext);
+    arena = TypedArena::new();
+    fcx = new_fn_ctxt(ccx, llfndecl, ctor_id, false, result_ty,
+                      param_substs, None, &arena);
     let bcx = init_function(&fcx, false, result_ty);
 
     assert!(!fcx.needs_ret_allocas);
index 73d174c2c34192ddbdf08b95f4c5a1df0454f368..d038407791ef6a8e7c4a613776fb4de480afaf6f 100644 (file)
@@ -322,16 +322,17 @@ pub fn trans_fn_pointer_shim<'a, 'tcx>(
                               &function_name[]);
 
     //
-    let block_arena = TypedArena::new();
     let empty_substs = Substs::trans_empty();
-    let fcx = new_fn_ctxt(ccx,
-                          llfn,
-                          ast::DUMMY_NODE_ID,
-                          false,
-                          sig.output,
-                          &empty_substs,
-                          None,
-                          &block_arena);
+    let (block_arena, fcx): (TypedArena<_>, FunctionContext);
+    block_arena = TypedArena::new();
+    fcx = new_fn_ctxt(ccx,
+                      llfn,
+                      ast::DUMMY_NODE_ID,
+                      false,
+                      sig.output,
+                      &empty_substs,
+                      None,
+                      &block_arena);
     let mut bcx = init_function(&fcx, false, sig.output);
 
     // the first argument (`self`) will be ptr to the the fn pointer
index c1d98987991e374800344d5c8b1641fb2d8ee12d..69d1922ab9adb3e271a2f51a4cd1eef04e5f19fb 100644 (file)
@@ -540,11 +540,12 @@ fn make_generic_glue<'a, 'tcx, F>(ccx: &CrateContext<'a, 'tcx>,
     let glue_name = format!("glue {} {}", name, ty_to_short_str(ccx.tcx(), t));
     let _s = StatRecorder::new(ccx, glue_name);
 
-    let arena = TypedArena::new();
     let empty_param_substs = Substs::trans_empty();
-    let fcx = new_fn_ctxt(ccx, llfn, ast::DUMMY_NODE_ID, false,
-                          ty::FnConverging(ty::mk_nil(ccx.tcx())),
-                          &empty_param_substs, None, &arena);
+    let (arena, fcx): (TypedArena<_>, FunctionContext);
+    arena = TypedArena::new();
+    fcx = new_fn_ctxt(ccx, llfn, ast::DUMMY_NODE_ID, false,
+                      ty::FnConverging(ty::mk_nil(ccx.tcx())),
+                      &empty_param_substs, None, &arena);
 
     let bcx = init_function(&fcx, false, ty::FnConverging(ty::mk_nil(ccx.tcx())));
 
index 580a2d5ae3dc7c37631a2ab2912386b28dc90d7d..187b73b1b0952fc0b49172506d94239a609e5458 100644 (file)
@@ -601,17 +601,17 @@ pub fn trans_object_shim<'a, 'tcx>(
 
     let sig = ty::erase_late_bound_regions(ccx.tcx(), &fty.sig);
 
-    //
-    let block_arena = TypedArena::new();
     let empty_substs = Substs::trans_empty();
-    let fcx = new_fn_ctxt(ccx,
-                          llfn,
-                          ast::DUMMY_NODE_ID,
-                          false,
-                          sig.output,
-                          &empty_substs,
-                          None,
-                          &block_arena);
+    let (block_arena, fcx): (TypedArena<_>, FunctionContext);
+    block_arena = TypedArena::new();
+    fcx = new_fn_ctxt(ccx,
+                      llfn,
+                      ast::DUMMY_NODE_ID,
+                      false,
+                      sig.output,
+                      &empty_substs,
+                      None,
+                      &block_arena);
     let mut bcx = init_function(&fcx, false, sig.output);
 
     // the first argument (`self`) will be a trait object
index 61332ada506de97cf718146c42a61765462de478..4c5a8144cbd064ead01dd46c4dcd90d774084cc2 100644 (file)
@@ -1049,8 +1049,8 @@ fn xform_self_ty(&self,
         // if there are any.
         assert_eq!(substs.types.len(subst::FnSpace), 0);
         assert_eq!(substs.regions().len(subst::FnSpace), 0);
-        let mut substs = substs;
         let placeholder;
+        let mut substs = substs;
         if
             !method.generics.types.is_empty_in(subst::FnSpace) ||
             !method.generics.regions.is_empty_in(subst::FnSpace)
index 8de1ffd37e01b34f51b4a504d2f4cdb9b09d0ad0..65560040f47c28e923d83017f4288ab48531f433 100644 (file)
@@ -3101,8 +3101,8 @@ fn suggest_field_names<'tcx>(id : DefId,
         let name = ident.get();
         // only find fits with at least one matching letter
         let mut best_dist = name.len();
-        let mut best = None;
         let fields = ty::lookup_struct_fields(tcx, id);
+        let mut best = None;
         for elem in fields.iter() {
             let n = elem.name.as_str();
             // ignore already set fields
index 04947e41663ece794c6c2c52f3b29ef3950216da..90a0a0f843e94a314d53d48a043d57e8f75a3ff9 100644 (file)
@@ -126,9 +126,9 @@ pub fn run_core(search_paths: SearchPaths, cfgs: Vec<String>, externs: Externs,
                     .expect("phase_2_configure_and_expand aborted in rustdoc!");
 
     let mut forest = ast_map::Forest::new(krate);
+    let arenas = ty::CtxtArenas::new();
     let ast_map = driver::assign_node_ids_and_map(&sess, &mut forest);
 
-    let arenas = ty::CtxtArenas::new();
     let ty::CrateAnalysis {
         exported_items, public_items, ty_cx, ..
     } = driver::phase_3_run_analysis_passes(sess,