#56411 do not suggest a fix for a import conflict in a macro

This commit is contained in:
François Mockers 2018-12-18 02:22:08 +01:00 committed by Vadim Petrochenkov
parent 0b1669d96c
commit ac4b685650
4 changed files with 56 additions and 1 deletions

View File

@ -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)

View File

@ -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!");
}

View File

@ -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`.

View File

@ -0,0 +1,5 @@
// compile-pass
struct T {}
fn main() {}