about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorJonathan S <gereeter+code@gmail.com>2015-11-04 00:26:41 -0600
committerJonathan S <gereeter+code@gmail.com>2015-11-04 20:38:03 -0600
commit1ca1874986206b0d635b69e91f33195624bae74f (patch)
tree1b553dd78c1bed223b32e69be36574516183cdf1 /src
parentf5781f143c1dfb2913e2402d880ea136ad8da43a (diff)
Remove use of RefCell<DefMap> in resolve_lifetime
Diffstat (limited to 'src')
-rw-r--r--src/librustc/middle/resolve_lifetime.rs7
-rw-r--r--src/librustc_driver/driver.rs4
-rw-r--r--src/librustc_driver/test.rs2
3 files changed, 6 insertions, 7 deletions
diff --git a/src/librustc/middle/resolve_lifetime.rs b/src/librustc/middle/resolve_lifetime.rs
index 5035ac12a85..fa0c6c41ce5 100644
--- a/src/librustc/middle/resolve_lifetime.rs
+++ b/src/librustc/middle/resolve_lifetime.rs
@@ -23,7 +23,6 @@ use middle::def::{self, DefMap};
 use middle::region;
 use middle::subst;
 use middle::ty;
-use std::cell::RefCell;
 use std::fmt;
 use std::mem::replace;
 use syntax::ast;
@@ -55,7 +54,7 @@ struct LifetimeContext<'a> {
     sess: &'a Session,
     named_region_map: &'a mut NamedRegionMap,
     scope: Scope<'a>,
-    def_map: &'a RefCell<DefMap>,
+    def_map: &'a DefMap,
     // Deep breath. Our representation for poly trait refs contains a single
     // binder and thus we only allow a single level of quantification. However,
     // the syntax of Rust permits quantification in two places, e.g., `T: for <'a> Foo<'a>`
@@ -94,7 +93,7 @@ type Scope<'a> = &'a ScopeChain<'a>;
 
 static ROOT_SCOPE: ScopeChain<'static> = RootScope;
 
-pub fn krate(sess: &Session, krate: &hir::Crate, def_map: &RefCell<DefMap>) -> NamedRegionMap {
+pub fn krate(sess: &Session, krate: &hir::Crate, def_map: &DefMap) -> NamedRegionMap {
     let mut named_region_map = NodeMap();
     visit::walk_crate(&mut LifetimeContext {
         sess: sess,
@@ -206,7 +205,7 @@ impl<'a, 'v> Visitor<'v> for LifetimeContext<'a> {
             hir::TyPath(None, ref path) => {
                 // if this path references a trait, then this will resolve to
                 // a trait ref, which introduces a binding scope.
-                match self.def_map.borrow().get(&ty.id).map(|d| (d.base_def, d.depth)) {
+                match self.def_map.get(&ty.id).map(|d| (d.base_def, d.depth)) {
                     Some((def::DefTrait(..), 0)) => {
                         self.with(LateScope(&Vec::new(), self.scope), |_, this| {
                             this.visit_path(path, ty.id);
diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs
index 558ecf85511..2237e19c8e7 100644
--- a/src/librustc_driver/driver.rs
+++ b/src/librustc_driver/driver.rs
@@ -700,8 +700,8 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session,
         syntax::ext::mtwt::clear_tables();
     }
 
-    let named_region_map = time(time_passes, "lifetime resolution",
-                                || middle::resolve_lifetime::krate(sess, krate, &def_map));
+    let named_region_map = time(time_passes, "lifetime resolution", ||
+                                middle::resolve_lifetime::krate(sess, krate, &def_map.borrow()));
 
     time(time_passes, "looking for entry point",
          || middle::entry::find_entry_point(sess, &ast_map));
diff --git a/src/librustc_driver/test.rs b/src/librustc_driver/test.rs
index 4bbc22ef1a2..5cd6bfa8790 100644
--- a/src/librustc_driver/test.rs
+++ b/src/librustc_driver/test.rs
@@ -134,7 +134,7 @@ fn test_env<F>(source_string: &str,
     let lang_items = lang_items::collect_language_items(&sess, &ast_map);
     let resolve::CrateMap { def_map, freevars, .. } =
         resolve::resolve_crate(&sess, &ast_map, resolve::MakeGlobMap::No);
-    let named_region_map = resolve_lifetime::krate(&sess, krate, &def_map);
+    let named_region_map = resolve_lifetime::krate(&sess, krate, &def_map.borrow());
     let region_map = region::resolve_crate(&sess, krate);
     ty::ctxt::create_and_enter(&sess,
                                &arenas,