diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-02-06 10:43:50 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-06 10:43:50 +0100 |
| commit | 9f4559c3452239205015a02f2695ae1ec7d5c0f2 (patch) | |
| tree | 69750cace21cee68a12bdf7abad08ae4c01ca6a5 /src/test/ui | |
| parent | e069a711084b5617aecda7a5c8e88406ca12ed65 (diff) | |
| parent | 1911eb8b6180f513a666372baf6e56f78b82dcd8 (diff) | |
| download | rust-9f4559c3452239205015a02f2695ae1ec7d5c0f2.tar.gz rust-9f4559c3452239205015a02f2695ae1ec7d5c0f2.zip | |
Rollup merge of #90998 - jhpratt:require-const-stability, r=oli-obk
Require const stability attribute on all stable functions that are `const` This PR requires all stable functions (of all kinds) that are `const fn` to have a `#[rustc_const_stable]` or `#[rustc_const_unstable]` attribute. Stability was previously implied if omitted; a follow-up PR is planned to change the fallback to be unstable.
Diffstat (limited to 'src/test/ui')
| -rw-r--r-- | src/test/ui/stability-attribute/missing-const-stability.rs | 26 | ||||
| -rw-r--r-- | src/test/ui/stability-attribute/missing-const-stability.stderr | 10 |
2 files changed, 28 insertions, 8 deletions
diff --git a/src/test/ui/stability-attribute/missing-const-stability.rs b/src/test/ui/stability-attribute/missing-const-stability.rs index 7d499c611a4..57e64737d0f 100644 --- a/src/test/ui/stability-attribute/missing-const-stability.rs +++ b/src/test/ui/stability-attribute/missing-const-stability.rs @@ -1,12 +1,26 @@ #![feature(staged_api)] +#![feature(const_trait_impl)] +#![stable(feature = "stable", since = "1.0.0")] -#![stable(feature = "rust1", since = "1.0.0")] +#[stable(feature = "stable", since = "1.0.0")] +pub const fn foo() {} //~ ERROR function has missing const stability attribute -#[stable(feature = "foo", since = "1.0.0")] -pub const fn foo() {} -//~^ ERROR rustc_const_stable +#[unstable(feature = "unstable", issue = "none")] +pub const fn bar() {} // ok because function is unstable -#[unstable(feature = "bar", issue = "none")] -pub const fn bar() {} // ok +#[stable(feature = "stable", since = "1.0.0")] +pub struct Foo; +impl Foo { + #[stable(feature = "stable", since = "1.0.0")] + pub const fn foo() {} //~ ERROR associated function has missing const stability attribute + + #[unstable(feature = "unstable", issue = "none")] + pub const fn bar() {} // ok because function is unstable +} + +// FIXME Once #![feature(const_trait_impl)] is allowed to be stable, add a test +// for const trait impls. Right now, a "trait methods cannot be stable const fn" +// error is emitted. This occurs prior to the lint being tested here, such that +// the lint cannot currently be tested on this use case. fn main() {} diff --git a/src/test/ui/stability-attribute/missing-const-stability.stderr b/src/test/ui/stability-attribute/missing-const-stability.stderr index 450a5303fd8..7eba99a477a 100644 --- a/src/test/ui/stability-attribute/missing-const-stability.stderr +++ b/src/test/ui/stability-attribute/missing-const-stability.stderr @@ -1,8 +1,14 @@ -error: `#[stable]` const functions must also be either `#[rustc_const_stable]` or `#[rustc_const_unstable]` +error: function has missing const stability attribute --> $DIR/missing-const-stability.rs:6:1 | LL | pub const fn foo() {} | ^^^^^^^^^^^^^^^^^^^^^ -error: aborting due to previous error +error: associated function has missing const stability attribute + --> $DIR/missing-const-stability.rs:15:5 + | +LL | pub const fn foo() {} + | ^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to 2 previous errors |
