about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoshua Nelson <jyn514@gmail.com>2021-03-02 09:42:32 -0500
committerJoshua Nelson <jyn514@gmail.com>2021-03-03 10:04:36 -0500
commit4b2e4e69dfbf75222ae547659e999cee05833de9 (patch)
tree39b9f477bae0969e64c5f9719cfb5616f7ba1875
parentedeee915b1c52f97411e57ef6b1a8bd46548a37a (diff)
downloadrust-4b2e4e69dfbf75222ae547659e999cee05833de9.tar.gz
rust-4b2e4e69dfbf75222ae547659e999cee05833de9.zip
Change error about unknown doc attributes to a warning
This prevents breakage across the ecosystem, since the error was just
introduced recently without first having a warning period.
-rw-r--r--compiler/rustc_passes/src/check_attr.rs25
-rw-r--r--src/test/rustdoc-ui/doc-attr.rs10
-rw-r--r--src/test/rustdoc-ui/doc-attr.stderr13
-rw-r--r--src/test/ui/attributes/doc-attr.rs10
-rw-r--r--src/test/ui/attributes/doc-attr.stderr13
5 files changed, 54 insertions, 17 deletions
diff --git a/compiler/rustc_passes/src/check_attr.rs b/compiler/rustc_passes/src/check_attr.rs
index afd1642bbd5..39245ea77e5 100644
--- a/compiler/rustc_passes/src/check_attr.rs
+++ b/compiler/rustc_passes/src/check_attr.rs
@@ -567,16 +567,23 @@ impl CheckAttrVisitor<'tcx> {
                         .iter()
                         .any(|m| i_meta.has_name(*m))
                         {
-                            self.tcx
-                                .sess
-                                .struct_span_err(
-                                    meta.span(),
-                                    &format!(
+                            self.tcx.struct_span_lint_hir(
+                                UNUSED_ATTRIBUTES,
+                                hir_id,
+                                i_meta.span,
+                                |lint| {
+                                    lint.build(&format!(
                                         "unknown `doc` attribute `{}`",
-                                        i_meta.name_or_empty(),
-                                    ),
-                                )
-                                .emit();
+                                        i_meta.name_or_empty()
+                                    ))
+                                    .warn(
+                                        "this was previously accepted by the compiler but is \
+                                        being phased out; it will become a hard error in \
+                                        a future release!",
+                                    )
+                                    .emit();
+                                },
+                            );
                             return false;
                         }
                     }
diff --git a/src/test/rustdoc-ui/doc-attr.rs b/src/test/rustdoc-ui/doc-attr.rs
index 37c69a214b8..3519b5707b3 100644
--- a/src/test/rustdoc-ui/doc-attr.rs
+++ b/src/test/rustdoc-ui/doc-attr.rs
@@ -1,5 +1,11 @@
 #![crate_type = "lib"]
-#![doc(as_ptr)] //~ ERROR
+#![deny(unused_attributes)]
+//~^ NOTE lint level is defined here
+#![doc(as_ptr)]
+//~^ ERROR unknown `doc` attribute
+//~| WARNING will become a hard error in a future release
 
-#[doc(as_ptr)] //~ ERROR
+#[doc(as_ptr)]
+//~^ ERROR unknown `doc` attribute
+//~| WARNING will become a hard error in a future release
 pub fn foo() {}
diff --git a/src/test/rustdoc-ui/doc-attr.stderr b/src/test/rustdoc-ui/doc-attr.stderr
index 17bc3d6a45a..9666db2b10e 100644
--- a/src/test/rustdoc-ui/doc-attr.stderr
+++ b/src/test/rustdoc-ui/doc-attr.stderr
@@ -1,14 +1,23 @@
 error: unknown `doc` attribute `as_ptr`
-  --> $DIR/doc-attr.rs:4:7
+  --> $DIR/doc-attr.rs:8:7
    |
 LL | #[doc(as_ptr)]
    |       ^^^^^^
+   |
+note: the lint level is defined here
+  --> $DIR/doc-attr.rs:2:9
+   |
+LL | #![deny(unused_attributes)]
+   |         ^^^^^^^^^^^^^^^^^
+   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
 
 error: unknown `doc` attribute `as_ptr`
-  --> $DIR/doc-attr.rs:2:8
+  --> $DIR/doc-attr.rs:4:8
    |
 LL | #![doc(as_ptr)]
    |        ^^^^^^
+   |
+   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/attributes/doc-attr.rs b/src/test/ui/attributes/doc-attr.rs
index 37c69a214b8..3519b5707b3 100644
--- a/src/test/ui/attributes/doc-attr.rs
+++ b/src/test/ui/attributes/doc-attr.rs
@@ -1,5 +1,11 @@
 #![crate_type = "lib"]
-#![doc(as_ptr)] //~ ERROR
+#![deny(unused_attributes)]
+//~^ NOTE lint level is defined here
+#![doc(as_ptr)]
+//~^ ERROR unknown `doc` attribute
+//~| WARNING will become a hard error in a future release
 
-#[doc(as_ptr)] //~ ERROR
+#[doc(as_ptr)]
+//~^ ERROR unknown `doc` attribute
+//~| WARNING will become a hard error in a future release
 pub fn foo() {}
diff --git a/src/test/ui/attributes/doc-attr.stderr b/src/test/ui/attributes/doc-attr.stderr
index 17bc3d6a45a..9666db2b10e 100644
--- a/src/test/ui/attributes/doc-attr.stderr
+++ b/src/test/ui/attributes/doc-attr.stderr
@@ -1,14 +1,23 @@
 error: unknown `doc` attribute `as_ptr`
-  --> $DIR/doc-attr.rs:4:7
+  --> $DIR/doc-attr.rs:8:7
    |
 LL | #[doc(as_ptr)]
    |       ^^^^^^
+   |
+note: the lint level is defined here
+  --> $DIR/doc-attr.rs:2:9
+   |
+LL | #![deny(unused_attributes)]
+   |         ^^^^^^^^^^^^^^^^^
+   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
 
 error: unknown `doc` attribute `as_ptr`
-  --> $DIR/doc-attr.rs:2:8
+  --> $DIR/doc-attr.rs:4:8
    |
 LL | #![doc(as_ptr)]
    |        ^^^^^^
+   |
+   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
 
 error: aborting due to 2 previous errors