librustc: De-@mut Module::external_module_children

This commit is contained in:
Patrick Walton 2013-12-21 14:05:26 -08:00
parent ea63a18500
commit b5b403abcc

View File

@ -425,7 +425,7 @@ struct Module {
// The external module children of this node that were declared with
// `extern mod`.
external_module_children: @mut HashMap<Name, @Module>,
external_module_children: RefCell<HashMap<Name, @Module>>,
// The anonymous children of this node. Anonymous children are pseudo-
// modules that are implicitly created around items contained within
@ -472,7 +472,7 @@ impl Module {
is_public: is_public,
children: @mut HashMap::new(),
imports: @mut ~[],
external_module_children: @mut HashMap::new(),
external_module_children: RefCell::new(HashMap::new()),
anonymous_children: @mut HashMap::new(),
import_resolutions: @mut HashMap::new(),
glob_count: Cell::new(0),
@ -1506,9 +1506,13 @@ impl Resolver {
false,
true);
parent.external_module_children.insert(
name.name,
external_module);
{
let mut external_module_children =
parent.external_module_children.borrow_mut();
external_module_children.get().insert(
name.name,
external_module);
}
self.build_reduced_graph_for_external_crate(
external_module);
@ -2352,13 +2356,18 @@ impl Resolver {
match type_result {
BoundResult(..) => {}
_ => {
match containing_module.external_module_children
.find(&source.name) {
let module_opt = {
let mut external_module_children =
containing_module.external_module_children
.borrow_mut();
external_module_children.get().find_copy(&source.name)
};
match module_opt {
None => {} // Continue.
Some(module) => {
let name_bindings =
@mut Resolver::create_name_bindings_from_module(
*module);
module);
type_result = BoundResult(containing_module,
name_bindings);
used_public = true;
@ -2565,10 +2574,14 @@ impl Resolver {
}
// Add external module children from the containing module.
for (&name, module) in containing_module.external_module_children.iter() {
let name_bindings =
@mut Resolver::create_name_bindings_from_module(*module);
merge_import_resolution(name, name_bindings);
{
let external_module_children =
containing_module.external_module_children.borrow();
for (&name, module) in external_module_children.get().iter() {
let name_bindings =
@mut Resolver::create_name_bindings_from_module(*module);
merge_import_resolution(name, name_bindings);
}
}
// Record the destination of this import
@ -2861,12 +2874,17 @@ impl Resolver {
// Search for external modules.
if namespace == TypeNS {
match module_.external_module_children.find(&name.name) {
let module_opt = {
let external_module_children =
module_.external_module_children.borrow();
external_module_children.get().find_copy(&name.name)
};
match module_opt {
None => {}
Some(module) => {
let name_bindings =
@mut Resolver::create_name_bindings_from_module(
*module);
module);
debug!("lower name bindings succeeded");
return Success((Target::new(module_, name_bindings), false));
}
@ -3133,12 +3151,17 @@ impl Resolver {
// Finally, search through external children.
if namespace == TypeNS {
match module_.external_module_children.find(&name.name) {
let module_opt = {
let external_module_children =
module_.external_module_children.borrow();
external_module_children.get().find_copy(&name.name)
};
match module_opt {
None => {}
Some(module) => {
let name_bindings =
@mut Resolver::create_name_bindings_from_module(
*module);
module);
return Success((Target::new(module_, name_bindings), false));
}
}
@ -4664,7 +4687,12 @@ impl Resolver {
// Finally, search through external children.
if namespace == TypeNS {
match containing_module.external_module_children.find(&name.name) {
let module_opt = {
let external_module_children =
containing_module.external_module_children.borrow();
external_module_children.get().find_copy(&name.name)
};
match module_opt {
None => {}
Some(module) => {
match module.def_id.get() {