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)
--- /dev/null
+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!");
+}
--- /dev/null
+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`.