From b21024f7b9e7e1c5b55d96bb34ac3f10a73e2ddf Mon Sep 17 00:00:00 2001 From: Chris Midgley Date: Mon, 26 Jul 2021 22:13:32 +0100 Subject: [PATCH] Add long explanation for E0544. --- compiler/rustc_error_codes/src/error_codes.rs | 2 +- .../src/error_codes/E0544.md | 29 +++++++++++++++++++ .../stability-attribute-sanity.stderr | 2 +- 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 compiler/rustc_error_codes/src/error_codes/E0544.md diff --git a/compiler/rustc_error_codes/src/error_codes.rs b/compiler/rustc_error_codes/src/error_codes.rs index 1aa5f995974..6f65d386f0d 100644 --- a/compiler/rustc_error_codes/src/error_codes.rs +++ b/compiler/rustc_error_codes/src/error_codes.rs @@ -287,6 +287,7 @@ E0541: include_str!("./error_codes/E0541.md"), E0542: include_str!("./error_codes/E0542.md"), E0543: include_str!("./error_codes/E0543.md"), +E0544: include_str!("./error_codes/E0544.md"), E0545: include_str!("./error_codes/E0545.md"), E0546: include_str!("./error_codes/E0546.md"), E0547: include_str!("./error_codes/E0547.md"), @@ -610,7 +611,6 @@ E0523, // E0526, // shuffle indices are not constant // E0540, // multiple rustc_deprecated attributes - E0544, // multiple stability levels // E0548, // replaced with a generic attribute input check // E0553, // multiple rustc_const_unstable attributes // E0555, // replaced with a generic attribute input check diff --git a/compiler/rustc_error_codes/src/error_codes/E0544.md b/compiler/rustc_error_codes/src/error_codes/E0544.md new file mode 100644 index 00000000000..2227e2a06bf --- /dev/null +++ b/compiler/rustc_error_codes/src/error_codes/E0544.md @@ -0,0 +1,29 @@ +Multiple stability attributes were declared on the same item. + +Erroneous code example: + +```compile_fail,E0544 +#![feature(staged_api)] +#![stable(since = "1.0.0", feature = "rust1")] + +#[stable(feature = "rust1", since = "1.0.0")] +#[stable(feature = "test", since = "2.0.0")] // invalid +fn foo() {} +``` + +To fix this issue, ensure that each item has at most one stability attribute. + +``` +#![feature(staged_api)] +#![stable(since = "1.0.0", feature = "rust1")] + +#[stable(feature = "test", since = "2.0.0")] // ok! +fn foo() {} +``` + +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 ddf65f3a7ee..4dc68662033 100644 --- a/src/test/ui/stability-attribute/stability-attribute-sanity.stderr +++ b/src/test/ui/stability-attribute/stability-attribute-sanity.stderr @@ -122,5 +122,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, E0549, E0550. +Some errors have detailed explanations: E0539, E0541, E0542, E0543, E0544, E0546, E0547, E0549, E0550. For more information about an error, try `rustc --explain E0539`.