Suggest only if resolution was previously resolved · rust-lang/rust@823e185 (original) (raw)

Original file line number Diff line number Diff line change
@@ -639,7 +639,19 @@ impl<'a, 'b:'a> ImportResolver<'a, 'b> {
639 639 let names = resolutions.iter().filter_map(|(&(ref i, _), resolution)
640 640 if *i == ident { return None; } // Never suggest the same name
641 641 match *resolution.borrow() {
642 -NameResolution { binding: Some(_), .. } => Some(&i.name),
642 +NameResolution { binding: Some(name_binding), .. } => {
643 +match name_binding.kind {
644 +NameBindingKind::Import { binding, .. } => {
645 +match binding.kind {
646 +// Never suggest the name that has binding error
647 +// i.e. the name that cannot be previously resolved
648 +NameBindingKind::Def(Def::Err) => return None,
649 + _ => Some(&i.name),
650 +}
651 +},
652 + _ => Some(&i.name),
653 +}
654 +},
643 655 NameResolution { single_imports: SingleImports::None, .. } => None,
644 656 _ => Some(&i.name),
645 657 }