From 5ae392f3c6786d6aba065bcf94baedf5017a66c3 Mon Sep 17 00:00:00 2001 From: Jesus Rubio Date: Thu, 18 Feb 2021 06:53:01 +0100 Subject: [PATCH 1/4] Add long explanation for E0549 --- compiler/rustc_error_codes/src/error_codes.rs | 4 +- .../src/error_codes/E0549.md | 37 +++++++++++++++++++ .../stability-attribute-sanity.stderr | 2 +- 3 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 compiler/rustc_error_codes/src/error_codes/E0549.md diff --git a/compiler/rustc_error_codes/src/error_codes.rs b/compiler/rustc_error_codes/src/error_codes.rs index 8944711f38f4f..c4330694504c3 100644 --- a/compiler/rustc_error_codes/src/error_codes.rs +++ b/compiler/rustc_error_codes/src/error_codes.rs @@ -290,6 +290,7 @@ E0543: include_str!("./error_codes/E0543.md"), E0545: include_str!("./error_codes/E0545.md"), E0546: include_str!("./error_codes/E0546.md"), E0547: include_str!("./error_codes/E0547.md"), +E0549: include_str!("./error_codes/E0549.md"), E0550: include_str!("./error_codes/E0550.md"), E0551: include_str!("./error_codes/E0551.md"), E0552: include_str!("./error_codes/E0552.md"), @@ -608,9 +609,6 @@ E0781: include_str!("./error_codes/E0781.md"), // E0540, // multiple rustc_deprecated attributes E0544, // multiple stability levels // E0548, // replaced with a generic attribute input check - // rustc_deprecated attribute must be paired with either stable or unstable - // attribute - E0549, E0553, // multiple rustc_const_unstable attributes // E0555, // replaced with a generic attribute input check // E0558, // replaced with a generic attribute input check diff --git a/compiler/rustc_error_codes/src/error_codes/E0549.md b/compiler/rustc_error_codes/src/error_codes/E0549.md new file mode 100644 index 0000000000000..a5728dc20c8b8 --- /dev/null +++ b/compiler/rustc_error_codes/src/error_codes/E0549.md @@ -0,0 +1,37 @@ +The `rustc_deprecated` attribute must be paired with either `stable` or +`unstable`. + +Erroneous code example: + +```compile_fail,E0549 +#![feature(staged_api)] +#![stable(since = "1.0.0", feature = "test")] + +#[rustc_deprecated( + since = "1.0.1", + reason = "explanation for deprecation" +)] // invalid +fn _deprecated_fn() {} +``` + +To fix this issue, you need to add also an attribute `stable` or `unstable`. +Example: + +``` +#![feature(staged_api)] +#![stable(since = "1.0.0", feature = "test")] + +#[stable(since = "1.0.0", feature = "test")] +#[rustc_deprecated( + since = "1.0.1", + reason = "explanation for deprecation" +)] // ok! +fn _deprecated_fn() {} +``` + +See the [How Rust is Made and “Nightly Rust”][how-rust-made-nightly] appendix +of the Book and the [Stability attributes][stability-attributes] section of the +Rustc Dev Guide for more details. + +[how-rust-made-nightly]: https://doc.rust-lang.org/book/appendix-07-nightly-rust.html +[stability-attributes]: https://rustc-dev-guide.rust-lang.org/stability.html diff --git a/src/test/ui/stability-attribute/stability-attribute-sanity.stderr b/src/test/ui/stability-attribute/stability-attribute-sanity.stderr index 715eb00974ee2..03fb80bb90abc 100644 --- a/src/test/ui/stability-attribute/stability-attribute-sanity.stderr +++ b/src/test/ui/stability-attribute/stability-attribute-sanity.stderr @@ -116,5 +116,5 @@ LL | #[rustc_deprecated(since = "a", reason = "text")] error: aborting due to 19 previous errors -Some errors have detailed explanations: E0539, E0541, E0542, E0543, E0546, E0547, E0550. +Some errors have detailed explanations: E0539, E0541, E0542, E0543, E0546, E0547, E0549, E0550. For more information about an error, try `rustc --explain E0539`. From 5112cf0282e339af3e2f3bbe872fd32dfd69df56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Rubio?= Date: Thu, 18 Feb 2021 09:23:21 +0100 Subject: [PATCH 2/4] Update compiler/rustc_error_codes/src/error_codes/E0549.md Co-authored-by: Guillaume Gomez --- compiler/rustc_error_codes/src/error_codes/E0549.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/rustc_error_codes/src/error_codes/E0549.md b/compiler/rustc_error_codes/src/error_codes/E0549.md index a5728dc20c8b8..0ae7b0a377fbc 100644 --- a/compiler/rustc_error_codes/src/error_codes/E0549.md +++ b/compiler/rustc_error_codes/src/error_codes/E0549.md @@ -1,5 +1,5 @@ -The `rustc_deprecated` attribute must be paired with either `stable` or -`unstable`. +A `rustc_deprecated` attribute wasn't be paired with a `stable`/`unstable` +attribute. Erroneous code example: From 0e01c41c02d7d8ec4217e5ca9fa55281accd99a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Rubio?= Date: Thu, 18 Feb 2021 09:38:42 +0100 Subject: [PATCH 3/4] Update compiler/rustc_error_codes/src/error_codes/E0549.md Co-authored-by: Guillaume Gomez --- compiler/rustc_error_codes/src/error_codes/E0549.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/rustc_error_codes/src/error_codes/E0549.md b/compiler/rustc_error_codes/src/error_codes/E0549.md index 0ae7b0a377fbc..3337b0964faeb 100644 --- a/compiler/rustc_error_codes/src/error_codes/E0549.md +++ b/compiler/rustc_error_codes/src/error_codes/E0549.md @@ -1,4 +1,4 @@ -A `rustc_deprecated` attribute wasn't be paired with a `stable`/`unstable` +A `rustc_deprecated` attribute wasn't paired with a `stable`/`unstable` attribute. Erroneous code example: From 3c4fe1e3dbc1f060d10c2dc974d2c496db4ed74d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Rubio?= Date: Thu, 18 Feb 2021 10:03:01 +0100 Subject: [PATCH 4/4] Update compiler/rustc_error_codes/src/error_codes/E0549.md Co-authored-by: Guillaume Gomez --- compiler/rustc_error_codes/src/error_codes/E0549.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/rustc_error_codes/src/error_codes/E0549.md b/compiler/rustc_error_codes/src/error_codes/E0549.md index 3337b0964faeb..d4b78e7e0d668 100644 --- a/compiler/rustc_error_codes/src/error_codes/E0549.md +++ b/compiler/rustc_error_codes/src/error_codes/E0549.md @@ -1,5 +1,5 @@ A `rustc_deprecated` attribute wasn't paired with a `stable`/`unstable` -attribute. +attribute. Erroneous code example: