Simplify binding.module()
.
This commit is contained in:
parent
7bccc9d769
commit
8fe525dd1c
1 changed files with 8 additions and 10 deletions
|
@ -908,13 +908,11 @@ struct AmbiguityError<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> NameBinding<'a> {
|
impl<'a> NameBinding<'a> {
|
||||||
fn module(&self) -> Result<Module<'a>, bool /* true if an error has already been reported */> {
|
fn module(&self) -> Option<Module<'a>> {
|
||||||
match self.kind {
|
match self.kind {
|
||||||
NameBindingKind::Module(module) => Ok(module),
|
NameBindingKind::Module(module) => Some(module),
|
||||||
NameBindingKind::Import { binding, .. } => binding.module(),
|
NameBindingKind::Import { binding, .. } => binding.module(),
|
||||||
NameBindingKind::Def(Def::Err) => Err(true),
|
_ => None,
|
||||||
NameBindingKind::Def(_) => Err(false),
|
|
||||||
NameBindingKind::Ambiguity { .. } => Err(false),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1332,7 +1330,7 @@ impl<'a> Resolver<'a> {
|
||||||
fn record_use(&mut self, name: Name, ns: Namespace, binding: &'a NameBinding<'a>, span: Span)
|
fn record_use(&mut self, name: Name, ns: Namespace, binding: &'a NameBinding<'a>, span: Span)
|
||||||
-> bool /* true if an error was reported */ {
|
-> bool /* true if an error was reported */ {
|
||||||
// track extern crates for unused_extern_crate lint
|
// track extern crates for unused_extern_crate lint
|
||||||
if let Some(DefId { krate, .. }) = binding.module().ok().and_then(ModuleS::def_id) {
|
if let Some(DefId { krate, .. }) = binding.module().and_then(ModuleS::def_id) {
|
||||||
self.used_crates.insert(krate);
|
self.used_crates.insert(krate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2372,7 +2370,7 @@ impl<'a> Resolver<'a> {
|
||||||
|
|
||||||
match binding {
|
match binding {
|
||||||
Ok(binding) => {
|
Ok(binding) => {
|
||||||
if let Ok(next_module) = binding.module() {
|
if let Some(next_module) = binding.module() {
|
||||||
module = Some(next_module);
|
module = Some(next_module);
|
||||||
} else if binding.def() == Def::Err {
|
} else if binding.def() == Def::Err {
|
||||||
return PathResult::NonModule(err_path_resolution());
|
return PathResult::NonModule(err_path_resolution());
|
||||||
|
@ -2980,7 +2978,7 @@ impl<'a> Resolver<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
// collect submodules to explore
|
// collect submodules to explore
|
||||||
if let Ok(module) = name_binding.module() {
|
if let Some(module) = name_binding.module() {
|
||||||
// form the path
|
// form the path
|
||||||
let mut path_segments = path_segments.clone();
|
let mut path_segments = path_segments.clone();
|
||||||
path_segments.push(PathSegment {
|
path_segments.push(PathSegment {
|
||||||
|
@ -3141,8 +3139,8 @@ impl<'a> Resolver<'a> {
|
||||||
(ValueNS, _) => "a value",
|
(ValueNS, _) => "a value",
|
||||||
(MacroNS, _) => "a macro",
|
(MacroNS, _) => "a macro",
|
||||||
(TypeNS, _) if old_binding.is_extern_crate() => "an extern crate",
|
(TypeNS, _) if old_binding.is_extern_crate() => "an extern crate",
|
||||||
(TypeNS, Ok(module)) if module.is_normal() => "a module",
|
(TypeNS, Some(module)) if module.is_normal() => "a module",
|
||||||
(TypeNS, Ok(module)) if module.is_trait() => "a trait",
|
(TypeNS, Some(module)) if module.is_trait() => "a trait",
|
||||||
(TypeNS, _) => "a type",
|
(TypeNS, _) => "a type",
|
||||||
};
|
};
|
||||||
format!("{} named `{}` has already been {} in this {}",
|
format!("{} named `{}` has already been {} in this {}",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue