Skip to content

Commit

Permalink
Rollup merge of rust-lang#90127 - JohnTitor:fix-90113, r=estebank
Browse files Browse the repository at this point in the history
Do not mention a reexported item if it's private

Fixes rust-lang#90113
The _actual_ regression was introduced in rust-lang#73652, then rust-lang#88838 made it worse. This fixes the issue by not counting such an import as a candidate.
  • Loading branch information
matthiaskrgr authored Oct 25, 2021
2 parents b25172b + 3b2dd70 commit c734a9e
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 0 deletions.
9 changes: 9 additions & 0 deletions compiler/rustc_resolve/src/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -829,6 +829,15 @@ impl<'a> Resolver<'a> {
return;
}

// #90113: Do not count an inaccessible reexported item as a candidate.
if let NameBindingKind::Import { binding, .. } = name_binding.kind {
if this.is_accessible_from(binding.vis, parent_scope.module)
&& !this.is_accessible_from(name_binding.vis, parent_scope.module)
{
return;
}
}

// collect results based on the filter function
// avoid suggesting anything from the same module in which we are resolving
if ident.name == lookup_ident.name
Expand Down
21 changes: 21 additions & 0 deletions src/test/ui/resolve/issue-90113.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
mod list {
pub use self::List::Cons;

pub enum List<T> {
Cons(T, Box<List<T>>),
}
}

mod alias {
use crate::list::List;

pub type Foo = List<String>;
}

fn foo(l: crate::alias::Foo) {
match l {
Cons(..) => {} //~ ERROR: cannot find tuple struct or tuple variant `Cons` in this scope
}
}

fn main() {}
14 changes: 14 additions & 0 deletions src/test/ui/resolve/issue-90113.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
error[E0531]: cannot find tuple struct or tuple variant `Cons` in this scope
--> $DIR/issue-90113.rs:17:9
|
LL | Cons(..) => {}
| ^^^^ not found in this scope
|
help: consider importing this tuple variant
|
LL | use list::List::Cons;
|

error: aborting due to previous error

For more information about this error, try `rustc --explain E0531`.

0 comments on commit c734a9e

Please sign in to comment.