diff options
| author | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-02-16 13:14:32 +0000 |
|---|---|---|
| committer | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-03-04 20:48:54 +0000 |
| commit | 51ca449f74f5d35677ce58988354994299ab45dd (patch) | |
| tree | 76e7817ca1cd5dbb5f946e92673ab0efb12cb4ca | |
| parent | 20b99d303d0fb70c98d8c460324c8e1824fef482 (diff) | |
| download | rust-51ca449f74f5d35677ce58988354994299ab45dd.tar.gz rust-51ca449f74f5d35677ce58988354994299ab45dd.zip | |
Refactor away define
| -rw-r--r-- | src/librustc_resolve/resolve_imports.rs | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index 226b6559e68..4e6ea6e5259 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -502,7 +502,11 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> { None }; - self.define(module_, target, ns, directive.import(binding, privacy_error)); + let imported_binding = directive.import(binding, privacy_error); + let conflict = module_.try_define_child(target, ns, imported_binding); + if let Err(old_binding) = conflict { + self.report_conflict(target, ns, &directive.import(binding, None), old_binding); + } } module_.decrement_outstanding_references_for(target, ns); } @@ -613,7 +617,7 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> { for (&(name, ns), resolution) in target_module.resolutions.borrow().iter() { if let Some(Success(binding)) = resolution.try_result() { if binding.defined_with(DefModifiers::IMPORTABLE | DefModifiers::PUBLIC) { - self.define(module_, name, ns, directive.import(binding, None)); + let _ = module_.try_define_child(name, ns, directive.import(binding, None)); } } } @@ -631,16 +635,6 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> { return Success(()); } - fn define(&mut self, - parent: Module<'b>, - name: Name, - ns: Namespace, - binding: NameBinding<'b>) { - if let Err(old_binding) = parent.try_define_child(name, ns, binding.clone()) { - self.report_conflict(name, ns, &binding, old_binding); - } - } - fn report_conflict(&mut self, name: Name, ns: Namespace, |
