Change try_define_child to return a Result instead of an Option
This commit is contained in:
parent
16e7ff1bff
commit
d881eee608
2 changed files with 6 additions and 6 deletions
|
@ -100,7 +100,7 @@ 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;
|
||||
|
@ -108,8 +108,8 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> {
|
|||
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);
|
||||
|
|
|
@ -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()) },
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue