Skip to content

Remove oldmaps #5465

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 37 additions & 37 deletions src/librustc/middle/resolve.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ use syntax::opt_vec::OptVec;

use core::option::{Some, get, is_some, is_none};
use core::str::{connect, split_str};
use core::hashmap::linear::LinearMap;
use std::oldmap::HashMap;

// Definition mapping
Expand Down Expand Up @@ -456,7 +457,7 @@ pub struct Module {
def_id: Option<def_id>,
kind: ModuleKind,

children: @HashMap<ident,@mut NameBindings>,
children: @mut LinearMap<ident, @mut NameBindings>,
imports: @mut ~[@ImportDirective],

// The anonymous children of this node. Anonymous children are pseudo-
Expand All @@ -477,7 +478,7 @@ pub struct Module {
anonymous_children: @HashMap<node_id,@mut Module>,

// The status of resolving each import in this module.
import_resolutions: @HashMap<ident,@mut ImportResolution>,
import_resolutions: @mut LinearMap<ident, @mut ImportResolution>,

// The number of unresolved globs that this module exports.
glob_count: uint,
Expand All @@ -494,10 +495,10 @@ pub fn Module(parent_link: ParentLink,
parent_link: parent_link,
def_id: def_id,
kind: kind,
children: @HashMap(),
children: @mut LinearMap::new(),
imports: @mut ~[],
anonymous_children: @HashMap(),
import_resolutions: @HashMap(),
import_resolutions: @mut LinearMap::new(),
glob_count: 0,
resolved_import_count: 0
}
Expand Down Expand Up @@ -1024,7 +1025,7 @@ pub impl Resolver {
*self.session.str_of(name)));
}
}
return (child, new_parent);
return (*child, new_parent);
}
}
}
Expand Down Expand Up @@ -1614,7 +1615,7 @@ pub impl Resolver {
let name_bindings = parent_module.children.get(
&ident);
resolution.type_target =
Some(Target(parent_module, name_bindings));
Some(Target(parent_module, *name_bindings));
}
}

Expand Down Expand Up @@ -2165,13 +2166,13 @@ pub impl Resolver {
// Continue.
}
Some(child_name_bindings) => {
if (*child_name_bindings).defined_in_namespace(ValueNS) {
if child_name_bindings.defined_in_namespace(ValueNS) {
value_result = BoundResult(containing_module,
child_name_bindings);
*child_name_bindings);
}
if (*child_name_bindings).defined_in_namespace(TypeNS) {
if child_name_bindings.defined_in_namespace(TypeNS) {
type_result = BoundResult(containing_module,
child_name_bindings);
*child_name_bindings);
}
}
}
Expand Down Expand Up @@ -2241,11 +2242,11 @@ pub impl Resolver {
// The name is an import which has been fully
// resolved. We can, therefore, just follow it.
if value_result.is_unknown() {
value_result = get_binding(import_resolution,
value_result = get_binding(*import_resolution,
ValueNS);
}
if type_result.is_unknown() {
type_result = get_binding(import_resolution,
type_result = get_binding(*import_resolution,
TypeNS);
}
}
Expand Down Expand Up @@ -2352,9 +2353,9 @@ pub impl Resolver {
// Continue.
}
Some(child_name_bindings) => {
if (*child_name_bindings).defined_in_namespace(TypeNS) {
if child_name_bindings.defined_in_namespace(TypeNS) {
module_result = BoundResult(containing_module,
child_name_bindings);
*child_name_bindings);
}
}
}
Expand Down Expand Up @@ -2483,15 +2484,15 @@ pub impl Resolver {

// Add all resolved imports from the containing module.
for containing_module.import_resolutions.each
|&ident, &target_import_resolution| {
|&(ident, target_import_resolution)| {

debug!("(resolving glob import) writing module resolution \
%? into `%s`",
is_none(&mut target_import_resolution.type_target),
self.module_to_str(module_));

// Here we merge two import resolutions.
match module_.import_resolutions.find(&ident) {
match module_.import_resolutions.find(ident) {
None if target_import_resolution.privacy == Public => {
// Simple: just copy the old import resolution.
let new_import_resolution =
Expand All @@ -2504,7 +2505,7 @@ pub impl Resolver {
copy target_import_resolution.type_target;

module_.import_resolutions.insert
(ident, new_import_resolution);
(*ident, new_import_resolution);
}
None => { /* continue ... */ }
Some(dest_import_resolution) => {
Expand Down Expand Up @@ -2534,39 +2535,39 @@ pub impl Resolver {
}

// Add all children from the containing module.
for containing_module.children.each |&ident, &name_bindings| {
for containing_module.children.each |&(ident, name_bindings)| {
let mut dest_import_resolution;
match module_.import_resolutions.find(&ident) {
match module_.import_resolutions.find(ident) {
None => {
// Create a new import resolution from this child.
dest_import_resolution = @mut ImportResolution(privacy,
span,
state);
module_.import_resolutions.insert
(ident, dest_import_resolution);
(*ident, dest_import_resolution);
}
Some(existing_import_resolution) => {
dest_import_resolution = existing_import_resolution;
dest_import_resolution = *existing_import_resolution;
}
}

debug!("(resolving glob import) writing resolution `%s` in `%s` \
to `%s`, privacy=%?",
*self.session.str_of(ident),
*self.session.str_of(*ident),
self.module_to_str(containing_module),
self.module_to_str(module_),
copy dest_import_resolution.privacy);

// Merge the child item into the import resolution.
if (*name_bindings).defined_in_public_namespace(ValueNS) {
if name_bindings.defined_in_public_namespace(ValueNS) {
debug!("(resolving glob import) ... for value target");
dest_import_resolution.value_target =
Some(Target(containing_module, name_bindings));
Some(Target(containing_module, *name_bindings));
}
if (*name_bindings).defined_in_public_namespace(TypeNS) {
if name_bindings.defined_in_public_namespace(TypeNS) {
debug!("(resolving glob import) ... for type target");
dest_import_resolution.type_target =
Some(Target(containing_module, name_bindings));
Some(Target(containing_module, *name_bindings));
}
}

Expand Down Expand Up @@ -2760,8 +2761,8 @@ pub impl Resolver {

match module_.children.find(&name) {
Some(name_bindings)
if (*name_bindings).defined_in_namespace(namespace) => {
return Success(Target(module_, name_bindings));
if name_bindings.defined_in_namespace(namespace) => {
return Success(Target(module_, *name_bindings));
}
Some(_) | None => { /* Not found; continue. */ }
}
Expand Down Expand Up @@ -3005,10 +3006,9 @@ pub impl Resolver {
// First, check the direct children of the module.
match module_.children.find(&name) {
Some(name_bindings)
if (*name_bindings).defined_in_namespace(namespace) => {

if name_bindings.defined_in_namespace(namespace) => {
debug!("(resolving name in module) found node as child");
return Success(Target(module_, name_bindings));
return Success(Target(module_, *name_bindings));
}
Some(_) | None => {
// Continue.
Expand Down Expand Up @@ -3190,7 +3190,7 @@ pub impl Resolver {
fn add_exports_for_module(@mut self,
exports2: &mut ~[Export2],
module_: @mut Module) {
for module_.children.each |ident, namebindings| {
for module_.children.each |&(ident, namebindings)| {
debug!("(computing exports) maybe export '%s'",
*self.session.str_of(*ident));
self.add_exports_of_namebindings(&mut *exports2,
Expand All @@ -3205,7 +3205,7 @@ pub impl Resolver {
false);
}

for module_.import_resolutions.each |ident, importresolution| {
for module_.import_resolutions.each |&(ident, importresolution)| {
if importresolution.privacy != Public {
debug!("(computing exports) not reexporting private `%s`",
*self.session.str_of(*ident));
Expand Down Expand Up @@ -5308,9 +5308,9 @@ pub impl Resolver {
}

debug!("Import resolutions:");
for module_.import_resolutions.each |&name, &import_resolution| {
for module_.import_resolutions.each |&(name, import_resolution)| {
let mut value_repr;
match (*import_resolution).target_for_namespace(ValueNS) {
match import_resolution.target_for_namespace(ValueNS) {
None => { value_repr = ~""; }
Some(_) => {
value_repr = ~" value:?";
Expand All @@ -5319,15 +5319,15 @@ pub impl Resolver {
}

let mut type_repr;
match (*import_resolution).target_for_namespace(TypeNS) {
match import_resolution.target_for_namespace(TypeNS) {
None => { type_repr = ~""; }
Some(_) => {
type_repr = ~" type:?";
// FIXME #4954
}
}

debug!("* %s:%s%s", *self.session.str_of(name),
debug!("* %s:%s%s", *self.session.str_of(*name),
value_repr, type_repr);
}
}
Expand Down