Skip to content

Commit 8ee8058

Browse files
committed
---
yaml --- r: 92783 b: refs/heads/auto c: c48335e h: refs/heads/master i: 92781: 7793e51 92779: 645cc57 92775: 24d1519 92767: 24978ff v: v3
1 parent c2e60bf commit 8ee8058

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0
1313
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
1414
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1515
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
16-
refs/heads/auto: 47846110a469d7682189e75b3bfe35f9ff02a9aa
16+
refs/heads/auto: c48335e334ccacc0f18b8d3dd9cad2ffc7a0a72d
1717
refs/heads/servo: af82457af293e2a842ba6b7759b70288da276167
1818
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c
1919
refs/tags/0.1: b19db808c2793fe2976759b85a355c3ad8c8b336

branches/auto/src/librustc/middle/resolve.rs

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ struct Module {
420420
is_public: bool,
421421

422422
children: RefCell<HashMap<Name, @NameBindings>>,
423-
imports: @mut ~[@ImportDirective],
423+
imports: RefCell<~[@ImportDirective]>,
424424

425425
// The external module children of this node that were declared with
426426
// `extern mod`.
@@ -470,7 +470,7 @@ impl Module {
470470
kind: Cell::new(kind),
471471
is_public: is_public,
472472
children: RefCell::new(HashMap::new()),
473-
imports: @mut ~[],
473+
imports: RefCell::new(~[]),
474474
external_module_children: RefCell::new(HashMap::new()),
475475
anonymous_children: RefCell::new(HashMap::new()),
476476
import_resolutions: RefCell::new(HashMap::new()),
@@ -481,8 +481,8 @@ impl Module {
481481
}
482482

483483
fn all_imports_resolved(&self) -> bool {
484-
let imports = &mut *self.imports;
485-
return imports.len() == self.resolved_import_count.get();
484+
let mut imports = self.imports.borrow_mut();
485+
return imports.get().len() == self.resolved_import_count.get();
486486
}
487487
}
488488

@@ -1951,7 +1951,11 @@ impl Resolver {
19511951
let directive = @ImportDirective::new(module_path,
19521952
subclass, span, id,
19531953
is_public);
1954-
module_.imports.push(directive);
1954+
1955+
{
1956+
let mut imports = module_.imports.borrow_mut();
1957+
imports.get().push(directive);
1958+
}
19551959

19561960
// Bump the reference count on the name. Or, if this is a glob, set
19571961
// the appropriate flag.
@@ -2069,11 +2073,11 @@ impl Resolver {
20692073
return;
20702074
}
20712075

2072-
let imports = &mut *module.imports;
2073-
let import_count = imports.len();
2076+
let mut imports = module.imports.borrow_mut();
2077+
let import_count = imports.get().len();
20742078
while module.resolved_import_count.get() < import_count {
20752079
let import_index = module.resolved_import_count.get();
2076-
let import_directive = imports[import_index];
2080+
let import_directive = imports.get()[import_index];
20772081
match self.resolve_import_for_module(module, import_directive) {
20782082
Failed => {
20792083
// We presumably emitted an error. Continue.
@@ -2149,7 +2153,7 @@ impl Resolver {
21492153
fn resolve_import_for_module(&mut self,
21502154
module_: @Module,
21512155
import_directive: @ImportDirective)
2152-
-> ResolveResult<()> {
2156+
-> ResolveResult<()> {
21532157
let mut resolution_result = Failed;
21542158
let module_path = &import_directive.module_path;
21552159
@@ -3230,16 +3234,20 @@ impl Resolver {
32303234

32313235
fn report_unresolved_imports(&mut self, module_: @Module) {
32323236
let index = module_.resolved_import_count.get();
3233-
let imports: &mut ~[@ImportDirective] = &mut *module_.imports;
3234-
let import_count = imports.len();
3237+
let mut imports = module_.imports.borrow_mut();
3238+
let import_count = imports.get().len();
32353239
if index != import_count {
3236-
let sn = self.session.codemap.span_to_snippet(imports[index].span).unwrap();
3240+
let sn = self.session
3241+
.codemap
3242+
.span_to_snippet(imports.get()[index].span)
3243+
.unwrap();
32373244
if sn.contains("::") {
3238-
self.resolve_error(imports[index].span, "unresolved import");
3245+
self.resolve_error(imports.get()[index].span,
3246+
"unresolved import");
32393247
} else {
32403248
let err = format!("unresolved import (maybe you meant `{}::*`?)",
32413249
sn.slice(0, sn.len()));
3242-
self.resolve_error(imports[index].span, err);
3250+
self.resolve_error(imports.get()[index].span, err);
32433251
}
32443252
}
32453253

0 commit comments

Comments
 (0)