Skip to content

Commit 2de1e36

Browse files
committed
librustc: De-@mut the named region map in the type context
1 parent 01e3168 commit 2de1e36

File tree

3 files changed

+13
-14
lines changed

3 files changed

+13
-14
lines changed

src/librustc/middle/resolve_lifetime.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919

2020
use driver::session;
21+
use std::cell::RefCell;
2122
use std::hashmap::HashMap;
2223
use syntax::ast;
2324
use syntax::codemap::Span;
@@ -33,7 +34,7 @@ pub type NamedRegionMap = HashMap<ast::NodeId, ast::DefRegion>;
3334

3435
struct LifetimeContext {
3536
sess: session::Session,
36-
named_region_map: @mut NamedRegionMap,
37+
named_region_map: @RefCell<NamedRegionMap>,
3738
}
3839

3940
enum ScopeChain<'a> {
@@ -43,12 +44,11 @@ enum ScopeChain<'a> {
4344
RootScope
4445
}
4546

46-
pub fn crate(sess: session::Session,
47-
crate: &ast::Crate)
48-
-> @mut NamedRegionMap {
47+
pub fn crate(sess: session::Session, crate: &ast::Crate)
48+
-> @RefCell<NamedRegionMap> {
4949
let mut ctxt = LifetimeContext {
5050
sess: sess,
51-
named_region_map: @mut HashMap::new()
51+
named_region_map: @RefCell::new(HashMap::new())
5252
};
5353
visit::walk_crate(&mut ctxt, crate, &RootScope);
5454
sess.abort_if_errors();
@@ -305,7 +305,8 @@ impl LifetimeContext {
305305
self.sess.intr()),
306306
lifetime_ref.id,
307307
def);
308-
self.named_region_map.insert(lifetime_ref.id, def);
308+
let mut named_region_map = self.named_region_map.borrow_mut();
309+
named_region_map.get().insert(lifetime_ref.id, def);
309310
}
310311
}
311312

src/librustc/middle/ty.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ struct ctxt_ {
270270
sess: session::Session,
271271
def_map: resolve::DefMap,
272272

273-
named_region_map: @mut resolve_lifetime::NamedRegionMap,
273+
named_region_map: @RefCell<resolve_lifetime::NamedRegionMap>,
274274

275275
region_maps: @mut middle::region::RegionMaps,
276276

@@ -959,7 +959,7 @@ pub type node_type_table = RefCell<HashMap<uint,t>>;
959959

960960
pub fn mk_ctxt(s: session::Session,
961961
dm: resolve::DefMap,
962-
named_region_map: @mut resolve_lifetime::NamedRegionMap,
962+
named_region_map: @RefCell<resolve_lifetime::NamedRegionMap>,
963963
amap: ast_map::map,
964964
freevars: freevars::freevar_map,
965965
region_maps: @mut middle::region::RegionMaps,

src/librustc/middle/typeck/astconv.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,10 @@ pub trait AstConv {
7676
fn ty_infer(&self, span: Span) -> ty::t;
7777
}
7878

79-
pub fn ast_region_to_region(
80-
tcx: ty::ctxt,
81-
lifetime: &ast::Lifetime)
82-
-> ty::Region
83-
{
84-
let r = match tcx.named_region_map.find(&lifetime.id) {
79+
pub fn ast_region_to_region(tcx: ty::ctxt, lifetime: &ast::Lifetime)
80+
-> ty::Region {
81+
let named_region_map = tcx.named_region_map.borrow();
82+
let r = match named_region_map.get().find(&lifetime.id) {
8583
None => {
8684
// should have been recorded by the `resolve_lifetime` pass
8785
tcx.sess.span_bug(lifetime.span, "unresolved lifetime");

0 commit comments

Comments
 (0)