Skip to content

Commit

Permalink
resolve: Minor cleanup of duplicate macro reexports
Browse files Browse the repository at this point in the history
  • Loading branch information
petrochenkov committed Dec 28, 2019
1 parent f564c4d commit a0d8b79
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 33 deletions.
26 changes: 1 addition & 25 deletions src/librustc_resolve/resolve_imports.rs
Original file line number Diff line number Diff line change
Expand Up @@ -528,31 +528,7 @@ impl<'a> Resolver<'a> {
resolution.shadowed_glob = Some(glob_binding);
}
(false, false) => {
if let (&NameBindingKind::Res(_, true), &NameBindingKind::Res(_, true)) =
(&old_binding.kind, &binding.kind)
{
this.session
.struct_span_err(
binding.span,
&format!(
"a macro named `{}` has already been exported",
key.ident
),
)
.span_label(
binding.span,
format!("`{}` already exported", key.ident),
)
.span_note(
old_binding.span,
"previous macro export is now shadowed",
)
.emit();

resolution.binding = Some(binding);
} else {
return Err(old_binding);
}
return Err(old_binding);
}
}
} else {
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/issues/issue-38715.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
macro_rules! foo { ($i:ident) => {} }

#[macro_export]
macro_rules! foo { () => {} } //~ ERROR a macro named `foo` has already been exported
macro_rules! foo { () => {} } //~ ERROR the name `foo` is defined multiple times

fn main() {}
14 changes: 7 additions & 7 deletions src/test/ui/issues/issue-38715.stderr
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
error: a macro named `foo` has already been exported
error[E0428]: the name `foo` is defined multiple times
--> $DIR/issue-38715.rs:5:1
|
LL | macro_rules! foo { ($i:ident) => {} }
| ---------------- previous definition of the macro `foo` here
...
LL | macro_rules! foo { () => {} }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `foo` already exported
|
note: previous macro export is now shadowed
--> $DIR/issue-38715.rs:2:1
| ^^^^^^^^^^^^^^^^ `foo` redefined here
|
LL | macro_rules! foo { ($i:ident) => {} }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: `foo` must be defined only once in the macro namespace of this module

error: aborting due to previous error

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

0 comments on commit a0d8b79

Please sign in to comment.