about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc/lint/builtin.rs16
-rw-r--r--src/librustc_lint/lib.rs2
-rw-r--r--src/librustc_resolve/resolve_imports.rs18
-rw-r--r--src/test/ui/issues/auxiliary/issue-38715-modern.rs7
-rw-r--r--src/test/ui/issues/auxiliary/issue-38715.rs7
-rw-r--r--src/test/ui/issues/issue-38715-rpass.rs15
-rw-r--r--src/test/ui/issues/issue-38715.rs1
-rw-r--r--src/test/ui/issues/issue-38715.stderr3
8 files changed, 9 insertions, 60 deletions
diff --git a/src/librustc/lint/builtin.rs b/src/librustc/lint/builtin.rs
index c9dd60827ff..2e7db404747 100644
--- a/src/librustc/lint/builtin.rs
+++ b/src/librustc/lint/builtin.rs
@@ -332,16 +332,6 @@ declare_lint! {
 }
 
 declare_lint! {
-    pub DUPLICATE_MACRO_EXPORTS,
-    Deny,
-    "detects duplicate macro exports",
-    @future_incompatible = FutureIncompatibleInfo {
-        reference: "issue #35896 <https://github.com/rust-lang/rust/issues/35896>",
-        edition: Some(Edition::Edition2018),
-    };
-}
-
-declare_lint! {
     pub INTRA_DOC_LINK_RESOLUTION_FAILURE,
     Warn,
     "failures in resolving intra-doc link targets"
@@ -533,7 +523,6 @@ declare_lint_pass! {
         ABSOLUTE_PATHS_NOT_STARTING_WITH_CRATE,
         UNSTABLE_NAME_COLLISIONS,
         IRREFUTABLE_LET_PATTERNS,
-        DUPLICATE_MACRO_EXPORTS,
         INTRA_DOC_LINK_RESOLUTION_FAILURE,
         MISSING_DOC_CODE_EXAMPLES,
         PRIVATE_DOC_TESTS,
@@ -559,7 +548,6 @@ pub enum BuiltinLintDiagnostics {
     Normal,
     BareTraitObject(Span, /* is_global */ bool),
     AbsPathWithModule(Span),
-    DuplicatedMacroExports(ast::Ident, Span, Span),
     ProcMacroDeriveResolutionFallback(Span),
     MacroExpandedMacroExportsAccessedByAbsolutePaths(Span),
     ElidedLifetimesInPaths(usize, Span, bool, Span, String),
@@ -642,10 +630,6 @@ impl BuiltinLintDiagnostics {
                 };
                 db.span_suggestion(span, "use `crate`", sugg, app);
             }
-            BuiltinLintDiagnostics::DuplicatedMacroExports(ident, earlier_span, later_span) => {
-                db.span_label(later_span, format!("`{}` already exported", ident));
-                db.span_note(earlier_span, "previous macro export is now shadowed");
-            }
             BuiltinLintDiagnostics::ProcMacroDeriveResolutionFallback(span) => {
                 db.span_label(span, "names from parent modules are not \
                                      accessible without an explicit import");
diff --git a/src/librustc_lint/lib.rs b/src/librustc_lint/lib.rs
index c3c5589b9d0..6310ff3b847 100644
--- a/src/librustc_lint/lib.rs
+++ b/src/librustc_lint/lib.rs
@@ -342,6 +342,8 @@ fn register_builtins(store: &mut lint::LintStore, no_interleave_lints: bool) {
         "converted into hard error, see https://github.com/rust-lang/rust/issues/36247");
     store.register_removed("parenthesized_params_in_types_and_modules",
         "converted into hard error, see https://github.com/rust-lang/rust/issues/42238");
+    store.register_removed("duplicate_macro_exports",
+        "converted into hard error, see https://github.com/rust-lang/rust/issues/35896");
 }
 
 fn register_internals(store: &mut lint::LintStore) {
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs
index c06be18dc2c..083b11daaa1 100644
--- a/src/librustc_resolve/resolve_imports.rs
+++ b/src/librustc_resolve/resolve_imports.rs
@@ -16,18 +16,14 @@ use errors::{Applicability, pluralize};
 use rustc_data_structures::ptr_key::PtrKey;
 use rustc::ty;
 use rustc::lint::builtin::BuiltinLintDiagnostics;
-use rustc::lint::builtin::{
-    DUPLICATE_MACRO_EXPORTS,
-    PUB_USE_OF_PRIVATE_EXTERN_CRATE,
-    UNUSED_IMPORTS,
-};
+use rustc::lint::builtin::{PUB_USE_OF_PRIVATE_EXTERN_CRATE, UNUSED_IMPORTS};
 use rustc::hir::def_id::DefId;
 use rustc::hir::def::{self, PartialRes, Export};
 use rustc::session::DiagnosticMessageId;
 use rustc::util::nodemap::FxHashSet;
 use rustc::{bug, span_bug};
 
-use syntax::ast::{Ident, Name, NodeId, CRATE_NODE_ID};
+use syntax::ast::{Ident, Name, NodeId};
 use syntax::symbol::kw;
 use syntax::util::lev_distance::find_best_match_for_name;
 use syntax::{struct_span_err, unwrap_or};
@@ -496,13 +492,13 @@ impl<'a> Resolver<'a> {
                         if let (&NameBindingKind::Res(_, true), &NameBindingKind::Res(_, true)) =
                                (&old_binding.kind, &binding.kind) {
 
-                            this.lint_buffer.buffer_lint_with_diagnostic(
-                                DUPLICATE_MACRO_EXPORTS,
-                                CRATE_NODE_ID,
+                            this.session.struct_span_err(
                                 binding.span,
                                 &format!("a macro named `{}` has already been exported", key.ident),
-                                BuiltinLintDiagnostics::DuplicatedMacroExports(
-                                    key.ident, old_binding.span, binding.span));
+                            )
+                            .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 {
diff --git a/src/test/ui/issues/auxiliary/issue-38715-modern.rs b/src/test/ui/issues/auxiliary/issue-38715-modern.rs
deleted file mode 100644
index 15d072957cb..00000000000
--- a/src/test/ui/issues/auxiliary/issue-38715-modern.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-#![allow(duplicate_macro_exports)]
-
-#[macro_export]
-macro_rules! foo_modern { ($i:ident) => {} }
-
-#[macro_export]
-macro_rules! foo_modern { () => {} }
diff --git a/src/test/ui/issues/auxiliary/issue-38715.rs b/src/test/ui/issues/auxiliary/issue-38715.rs
deleted file mode 100644
index 5c15073f5a5..00000000000
--- a/src/test/ui/issues/auxiliary/issue-38715.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-#![allow(duplicate_macro_exports)]
-
-#[macro_export]
-macro_rules! foo { ($i:ident) => {} }
-
-#[macro_export]
-macro_rules! foo { () => {} }
diff --git a/src/test/ui/issues/issue-38715-rpass.rs b/src/test/ui/issues/issue-38715-rpass.rs
deleted file mode 100644
index e3c3a027f3c..00000000000
--- a/src/test/ui/issues/issue-38715-rpass.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// run-pass
-// aux-build:issue-38715.rs
-// aux-build:issue-38715-modern.rs
-
-// Test that `#[macro_export] macro_rules!` shadow earlier `#[macro_export] macro_rules!`
-
-#[macro_use]
-extern crate issue_38715;
-#[macro_use]
-extern crate issue_38715_modern;
-
-fn main() {
-    foo!();
-    foo_modern!();
-}
diff --git a/src/test/ui/issues/issue-38715.rs b/src/test/ui/issues/issue-38715.rs
index 850ffcdabe4..7e9defab588 100644
--- a/src/test/ui/issues/issue-38715.rs
+++ b/src/test/ui/issues/issue-38715.rs
@@ -3,6 +3,5 @@ macro_rules! foo { ($i:ident) => {} }
 
 #[macro_export]
 macro_rules! foo { () => {} } //~ ERROR a macro named `foo` has already been exported
-                              //~| WARN this was previously accepted
 
 fn main() {}
diff --git a/src/test/ui/issues/issue-38715.stderr b/src/test/ui/issues/issue-38715.stderr
index 02b96d2d244..d7c4f88ff50 100644
--- a/src/test/ui/issues/issue-38715.stderr
+++ b/src/test/ui/issues/issue-38715.stderr
@@ -4,9 +4,6 @@ error: a macro named `foo` has already been exported
 LL | macro_rules! foo { () => {} }
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `foo` already exported
    |
-   = note: `#[deny(duplicate_macro_exports)]` on by default
-   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in the 2018 edition!
-   = note: for more information, see issue #35896 <https://github.com/rust-lang/rust/issues/35896>
 note: previous macro export is now shadowed
   --> $DIR/issue-38715.rs:2:1
    |