Skip to content

Commit

Permalink
rust-lang#56411 do not suggest a fix for a import conflict in a macro
Browse files Browse the repository at this point in the history
  • Loading branch information
mockersf authored and petrochenkov committed Jan 25, 2019
1 parent 0b1669d commit ac4b685
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/librustc_resolve/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5147,11 +5147,13 @@ impl<'a> Resolver<'a> {
if let (
Ok(snippet),
NameBindingKind::Import { directive, ..},
_dummy @ false,
false,
false,
) = (
cm.span_to_snippet(binding.span),
binding.kind.clone(),
binding.span.is_dummy(),
binding.span.ctxt().outer().expn_info().is_some(),
) {
let suggested_name = if name.as_str().chars().next().unwrap().is_uppercase() {
format!("Other{}", name)
Expand Down
17 changes: 17 additions & 0 deletions src/test/ui/issues/issue-56411.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
macro_rules! import {
( $($name:ident),* ) => {
$(
mod $name;
pub use self::$name;
//~^ ERROR the name `issue_56411` is defined multiple times
//~| ERROR `issue_56411` is private, and cannot be re-exported

)*
}
}

import!(issue_56411);

fn main() {
println!("Hello, world!");
}
31 changes: 31 additions & 0 deletions src/test/ui/issues/issue-56411.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
error[E0255]: the name `issue_56411` is defined multiple times
--> $DIR/issue-56411.rs:5:21
|
LL | mod $name;
| ---------- previous definition of the module `issue_56411` here
LL | pub use self::$name;
| ^^^^^^^^^^^
| |
| `issue_56411` reimported here
| you can use `as` to change the binding name of the import
...
LL | import!(issue_56411);
| --------------------- in this macro invocation
|
= note: `issue_56411` must be defined only once in the type namespace of this module

error[E0365]: `issue_56411` is private, and cannot be re-exported
--> $DIR/issue-56411.rs:5:21
|
LL | pub use self::$name;
| ^^^^^^^^^^^ re-export of private `issue_56411`
...
LL | import!(issue_56411);
| --------------------- in this macro invocation
|
= note: consider declaring type or module `issue_56411` with `pub`

error: aborting due to 2 previous errors

Some errors occurred: E0255, E0365.
For more information about an error, try `rustc --explain E0255`.
5 changes: 5 additions & 0 deletions src/test/ui/issues/issue_56411.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// compile-pass

struct T {}

fn main() {}

0 comments on commit ac4b685

Please sign in to comment.