Skip to content

Commit 11e55e4

Browse files
committed
Auto merge of #29564 - gereeter:no-freevar-refcell, r=sanxiyn
2 parents 14db074 + fb2129e commit 11e55e4

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

src/librustc/middle/ty/context.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ impl<'tcx> ctxt<'tcx> {
456456
def_map: DefMap,
457457
named_region_map: resolve_lifetime::NamedRegionMap,
458458
map: ast_map::Map<'tcx>,
459-
freevars: RefCell<FreevarMap>,
459+
freevars: FreevarMap,
460460
region_maps: RegionMaps,
461461
lang_items: middle::lang_items::LanguageItems,
462462
stability: stability::Index<'tcx>,
@@ -489,7 +489,7 @@ impl<'tcx> ctxt<'tcx> {
489489
super_predicates: RefCell::new(DefIdMap()),
490490
fulfilled_predicates: RefCell::new(traits::FulfilledPredicates::new()),
491491
map: map,
492-
freevars: freevars,
492+
freevars: RefCell::new(freevars),
493493
tcache: RefCell::new(DefIdMap()),
494494
rcache: RefCell::new(FnvHashMap()),
495495
tc_cache: RefCell::new(FnvHashMap()),

src/librustc_resolve/lib.rs

+10-11
Original file line numberDiff line numberDiff line change
@@ -1151,8 +1151,8 @@ pub struct Resolver<'a, 'tcx:'a> {
11511151
primitive_type_table: PrimitiveTypeTable,
11521152

11531153
def_map: DefMap,
1154-
freevars: RefCell<FreevarMap>,
1155-
freevars_seen: RefCell<NodeMap<NodeMap<usize>>>,
1154+
freevars: FreevarMap,
1155+
freevars_seen: NodeMap<NodeMap<usize>>,
11561156
export_map: ExportMap,
11571157
trait_map: TraitMap,
11581158
external_exports: ExternalExports,
@@ -1227,8 +1227,8 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
12271227
primitive_type_table: PrimitiveTypeTable::new(),
12281228

12291229
def_map: RefCell::new(NodeMap()),
1230-
freevars: RefCell::new(NodeMap()),
1231-
freevars_seen: RefCell::new(NodeMap()),
1230+
freevars: NodeMap(),
1231+
freevars_seen: NodeMap(),
12321232
export_map: NodeMap(),
12331233
trait_map: NodeMap(),
12341234
used_imports: HashSet::new(),
@@ -3081,7 +3081,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
30813081
}
30823082

30833083
// Resolve a local definition, potentially adjusting for closures.
3084-
fn adjust_local_def(&self, local_def: LocalDef, span: Span) -> Option<Def> {
3084+
fn adjust_local_def(&mut self, local_def: LocalDef, span: Span) -> Option<Def> {
30853085
let ribs = match local_def.ribs {
30863086
Some((TypeNS, i)) => &self.type_ribs[i+1..],
30873087
Some((ValueNS, i)) => &self.value_ribs[i+1..],
@@ -3103,15 +3103,14 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
31033103
let prev_def = def;
31043104
let node_def_id = self.ast_map.local_def_id(node_id);
31053105

3106-
let mut seen = self.freevars_seen.borrow_mut();
3107-
let seen = seen.entry(function_id).or_insert_with(|| NodeMap());
3106+
let seen = self.freevars_seen.entry(function_id)
3107+
.or_insert_with(|| NodeMap());
31083108
if let Some(&index) = seen.get(&node_id) {
31093109
def = DefUpvar(node_def_id, node_id, index, function_id);
31103110
continue;
31113111
}
3112-
let mut freevars = self.freevars.borrow_mut();
3113-
let vec = freevars.entry(function_id)
3114-
.or_insert_with(|| vec![]);
3112+
let vec = self.freevars.entry(function_id)
3113+
.or_insert_with(|| vec![]);
31153114
let depth = vec.len();
31163115
vec.push(Freevar { def: prev_def, span: span });
31173116

@@ -4028,7 +4027,7 @@ fn module_to_string(module: &Module) -> String {
40284027

40294028
pub struct CrateMap {
40304029
pub def_map: DefMap,
4031-
pub freevars: RefCell<FreevarMap>,
4030+
pub freevars: FreevarMap,
40324031
pub export_map: ExportMap,
40334032
pub trait_map: TraitMap,
40344033
pub external_exports: ExternalExports,

0 commit comments

Comments
 (0)