Skip to content

Commit 1ca1874

Browse files
committed
Remove use of RefCell<DefMap> in resolve_lifetime
1 parent f5781f1 commit 1ca1874

File tree

3 files changed

+6
-7
lines changed

3 files changed

+6
-7
lines changed

src/librustc/middle/resolve_lifetime.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ use middle::def::{self, DefMap};
2323
use middle::region;
2424
use middle::subst;
2525
use middle::ty;
26-
use std::cell::RefCell;
2726
use std::fmt;
2827
use std::mem::replace;
2928
use syntax::ast;
@@ -55,7 +54,7 @@ struct LifetimeContext<'a> {
5554
sess: &'a Session,
5655
named_region_map: &'a mut NamedRegionMap,
5756
scope: Scope<'a>,
58-
def_map: &'a RefCell<DefMap>,
57+
def_map: &'a DefMap,
5958
// Deep breath. Our representation for poly trait refs contains a single
6059
// binder and thus we only allow a single level of quantification. However,
6160
// 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>;
9493

9594
static ROOT_SCOPE: ScopeChain<'static> = RootScope;
9695

97-
pub fn krate(sess: &Session, krate: &hir::Crate, def_map: &RefCell<DefMap>) -> NamedRegionMap {
96+
pub fn krate(sess: &Session, krate: &hir::Crate, def_map: &DefMap) -> NamedRegionMap {
9897
let mut named_region_map = NodeMap();
9998
visit::walk_crate(&mut LifetimeContext {
10099
sess: sess,
@@ -206,7 +205,7 @@ impl<'a, 'v> Visitor<'v> for LifetimeContext<'a> {
206205
hir::TyPath(None, ref path) => {
207206
// if this path references a trait, then this will resolve to
208207
// a trait ref, which introduces a binding scope.
209-
match self.def_map.borrow().get(&ty.id).map(|d| (d.base_def, d.depth)) {
208+
match self.def_map.get(&ty.id).map(|d| (d.base_def, d.depth)) {
210209
Some((def::DefTrait(..), 0)) => {
211210
self.with(LateScope(&Vec::new(), self.scope), |_, this| {
212211
this.visit_path(path, ty.id);

src/librustc_driver/driver.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -700,8 +700,8 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session,
700700
syntax::ext::mtwt::clear_tables();
701701
}
702702

703-
let named_region_map = time(time_passes, "lifetime resolution",
704-
|| middle::resolve_lifetime::krate(sess, krate, &def_map));
703+
let named_region_map = time(time_passes, "lifetime resolution", ||
704+
middle::resolve_lifetime::krate(sess, krate, &def_map.borrow()));
705705

706706
time(time_passes, "looking for entry point",
707707
|| middle::entry::find_entry_point(sess, &ast_map));

src/librustc_driver/test.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ fn test_env<F>(source_string: &str,
134134
let lang_items = lang_items::collect_language_items(&sess, &ast_map);
135135
let resolve::CrateMap { def_map, freevars, .. } =
136136
resolve::resolve_crate(&sess, &ast_map, resolve::MakeGlobMap::No);
137-
let named_region_map = resolve_lifetime::krate(&sess, krate, &def_map);
137+
let named_region_map = resolve_lifetime::krate(&sess, krate, &def_map.borrow());
138138
let region_map = region::resolve_crate(&sess, krate);
139139
ty::ctxt::create_and_enter(&sess,
140140
&arenas,

0 commit comments

Comments
 (0)