Skip to content

Commit 35c8fec

Browse files
committed
librustc: De-@mut NameBindings::value_def
1 parent c45c9a5 commit 35c8fec

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

src/librustc/middle/resolve.rs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,7 @@ struct TypeNsDef {
497497
}
498498

499499
// Records a possibly-private value definition.
500+
#[deriving(Clone)]
500501
struct ValueNsDef {
501502
is_public: bool, // see note in ImportResolution about how to use this
502503
def: Def,
@@ -507,7 +508,7 @@ struct ValueNsDef {
507508
// bound to.
508509
struct NameBindings {
509510
type_def: RefCell<Option<TypeNsDef>>, //< Meaning in type namespace.
510-
value_def: Option<ValueNsDef>, //< Meaning in value namespace.
511+
value_def: RefCell<Option<ValueNsDef>>, //< Meaning in value namespace.
511512
}
512513

513514
/// Ways in which a trait can be referenced
@@ -614,8 +615,11 @@ impl NameBindings {
614615

615616
/// Records a value definition.
616617
fn define_value(&mut self, def: Def, sp: Span, is_public: bool) {
617-
self.value_def = Some(ValueNsDef { def: def, value_span: Some(sp),
618-
is_public: is_public });
618+
self.value_def.set(Some(ValueNsDef {
619+
def: def,
620+
value_span: Some(sp),
621+
is_public: is_public,
622+
}));
619623
}
620624

621625
/// Returns the module node if applicable.
@@ -644,7 +648,7 @@ impl NameBindings {
644648
fn defined_in_namespace(&self, namespace: Namespace) -> bool {
645649
match namespace {
646650
TypeNS => return self.type_def.get().is_some(),
647-
ValueNS => return self.value_def.is_some()
651+
ValueNS => return self.value_def.get().is_some()
648652
}
649653
}
650654

@@ -653,7 +657,7 @@ impl NameBindings {
653657
TypeNS => match self.type_def.get() {
654658
Some(def) => def.is_public, None => false
655659
},
656-
ValueNS => match self.value_def {
660+
ValueNS => match self.value_def.get() {
657661
Some(def) => def.is_public, None => false
658662
}
659663
}
@@ -683,7 +687,7 @@ impl NameBindings {
683687
}
684688
}
685689
ValueNS => {
686-
match self.value_def {
690+
match self.value_def.get() {
687691
None => None,
688692
Some(value_def) => Some(value_def.def)
689693
}
@@ -701,7 +705,7 @@ impl NameBindings {
701705
}
702706
}
703707
ValueNS => {
704-
match self.value_def {
708+
match self.value_def.get() {
705709
None => None,
706710
Some(value_def) => value_def.value_span
707711
}
@@ -716,7 +720,7 @@ impl NameBindings {
716720
fn NameBindings() -> NameBindings {
717721
NameBindings {
718722
type_def: RefCell::new(None),
719-
value_def: None
723+
value_def: RefCell::new(None),
720724
}
721725
}
722726

@@ -2220,7 +2224,7 @@ impl Resolver {
22202224
type_def: None,
22212225
type_span: None
22222226
})),
2223-
value_def: None,
2227+
value_def: RefCell::new(None),
22242228
}
22252229
}
22262230

@@ -4534,8 +4538,9 @@ impl Resolver {
45344538
Success((target, _)) => {
45354539
debug!("(resolve bare identifier pattern) succeeded in \
45364540
finding {} at {:?}",
4537-
self.session.str_of(name), target.bindings.value_def);
4538-
match target.bindings.value_def {
4541+
self.session.str_of(name),
4542+
target.bindings.value_def.get());
4543+
match target.bindings.value_def.get() {
45394544
None => {
45404545
fail!("resolved name in the value namespace to a \
45414546
set of name bindings with no def?!");

0 commit comments

Comments
 (0)