Skip to content

Commit

Permalink
Change try_define_child to return a Result instead of an Option
Browse files Browse the repository at this point in the history
  • Loading branch information
jseyfried committed Feb 8, 2016
1 parent 16e7ff1 commit d881eee
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
6 changes: 3 additions & 3 deletions src/librustc_resolve/build_reduced_graph.rs
Expand Up @@ -100,16 +100,16 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> {
fn try_define<T>(&self, parent: Module<'b>, name: Name, ns: Namespace, def: T)
where T: ToNameBinding<'b>
{
parent.try_define_child(name, ns, self.new_name_binding(def.to_name_binding()));
let _ = parent.try_define_child(name, ns, self.new_name_binding(def.to_name_binding()));
}

/// Defines `name` in namespace `ns` of module `parent` to be `def` if it is not yet defined;
/// otherwise, reports an error.
fn define<T: ToNameBinding<'b>>(&self, parent: Module<'b>, name: Name, ns: Namespace, def: T) {
let binding = self.new_name_binding(def.to_name_binding());
let old_binding = match parent.try_define_child(name, ns, binding) {
Some(old_binding) => old_binding,
None => return,
Ok(()) => return,
Err(old_binding) => old_binding,
};

let span = binding.span.unwrap_or(DUMMY_SP);
Expand Down
6 changes: 3 additions & 3 deletions src/librustc_resolve/lib.rs
Expand Up @@ -870,10 +870,10 @@ impl<'a> ModuleS<'a> {
// If the name is not yet defined, define the name and return None.
// Otherwise, return the existing definition.
fn try_define_child(&self, name: Name, ns: Namespace, binding: &'a NameBinding<'a>)
-> Option<&'a NameBinding<'a>> {
-> Result<(), &'a NameBinding<'a>> {
match self.children.borrow_mut().entry((name, ns)) {
hash_map::Entry::Vacant(entry) => { entry.insert(binding); None }
hash_map::Entry::Occupied(entry) => { Some(entry.get()) },
hash_map::Entry::Vacant(entry) => { entry.insert(binding); Ok(()) }
hash_map::Entry::Occupied(entry) => { Err(entry.get()) },
}
}

Expand Down

0 comments on commit d881eee

Please sign in to comment.