Add missing const stability attributes

This commit is contained in:
Jacob Pratt 2021-11-17 21:08:16 -05:00
parent 41f84c258a
commit 1911eb8b61
No known key found for this signature in database
GPG Key ID: B80E19E4662B5AA4
7 changed files with 14 additions and 7 deletions

View File

@ -512,6 +512,7 @@ impl<T, const N: usize> [T; N] {
/// Returns a slice containing the entire array. Equivalent to `&s[..]`. /// Returns a slice containing the entire array. Equivalent to `&s[..]`.
#[stable(feature = "array_as_slice", since = "1.57.0")] #[stable(feature = "array_as_slice", since = "1.57.0")]
#[rustc_const_stable(feature = "array_as_slice", since = "1.57.0")]
pub const fn as_slice(&self) -> &[T] { pub const fn as_slice(&self) -> &[T] {
self self
} }

View File

@ -1959,6 +1959,7 @@ impl<T: ?Sized> UnsafeCell<T> {
/// ``` /// ```
#[inline(always)] #[inline(always)]
#[stable(feature = "unsafe_cell_raw_get", since = "1.56.0")] #[stable(feature = "unsafe_cell_raw_get", since = "1.56.0")]
#[rustc_const_stable(feature = "unsafe_cell_raw_get", since = "1.56.0")]
pub const fn raw_get(this: *const Self) -> *mut T { pub const fn raw_get(this: *const Self) -> *mut T {
// We can just cast the pointer from `UnsafeCell<T>` to `T` because of // We can just cast the pointer from `UnsafeCell<T>` to `T` because of
// #[repr(transparent)]. This exploits libstd's special status, there is // #[repr(transparent)]. This exploits libstd's special status, there is

View File

@ -1064,6 +1064,7 @@ macro_rules! int_impl {
/// ///
/// ``` /// ```
#[stable(feature = "saturating_div", since = "1.58.0")] #[stable(feature = "saturating_div", since = "1.58.0")]
#[rustc_const_stable(feature = "saturating_div", since = "1.58.0")]
#[must_use = "this returns the result of the operation, \ #[must_use = "this returns the result of the operation, \
without modifying the original"] without modifying the original"]
#[inline] #[inline]

View File

@ -972,6 +972,7 @@ macro_rules! nonzero_unsigned_is_power_of_two {
/// ``` /// ```
#[must_use] #[must_use]
#[stable(feature = "nonzero_is_power_of_two", since = "1.59.0")] #[stable(feature = "nonzero_is_power_of_two", since = "1.59.0")]
#[rustc_const_stable(feature = "nonzero_is_power_of_two", since = "1.59.0")]
#[inline] #[inline]
pub const fn is_power_of_two(self) -> bool { pub const fn is_power_of_two(self) -> bool {
// LLVM 11 normalizes `unchecked_sub(x, 1) & x == 0` to the implementation seen here. // LLVM 11 normalizes `unchecked_sub(x, 1) & x == 0` to the implementation seen here.

View File

@ -1132,6 +1132,7 @@ macro_rules! uint_impl {
/// ///
/// ``` /// ```
#[stable(feature = "saturating_div", since = "1.58.0")] #[stable(feature = "saturating_div", since = "1.58.0")]
#[rustc_const_stable(feature = "saturating_div", since = "1.58.0")]
#[must_use = "this returns the result of the operation, \ #[must_use = "this returns the result of the operation, \
without modifying the original"] without modifying the original"]
#[inline] #[inline]

View File

@ -1,11 +1,12 @@
#![feature(staged_api)] #![feature(staged_api)]
#![feature(const_trait_impl)]
#![stable(feature = "stable", since = "1.0.0")] #![stable(feature = "stable", since = "1.0.0")]
#[stable(feature = "stable", since = "1.0.0")] #[stable(feature = "stable", since = "1.0.0")]
pub const fn foo() {} //~ ERROR function has missing const stability attribute pub const fn foo() {} //~ ERROR function has missing const stability attribute
#[unstable(feature = "unstable", issue = "none")] #[unstable(feature = "unstable", issue = "none")]
pub const fn bar() {} // ok for now pub const fn bar() {} // ok because function is unstable
#[stable(feature = "stable", since = "1.0.0")] #[stable(feature = "stable", since = "1.0.0")]
pub struct Foo; pub struct Foo;
@ -14,11 +15,12 @@ impl Foo {
pub const fn foo() {} //~ ERROR associated function has missing const stability attribute pub const fn foo() {} //~ ERROR associated function has missing const stability attribute
#[unstable(feature = "unstable", issue = "none")] #[unstable(feature = "unstable", issue = "none")]
pub const fn bar() {} // ok for now pub const fn bar() {} // ok because function is unstable
} }
// FIXME When #![feature(const_trait_impl)] is stabilized, add tests for const // FIXME Once #![feature(const_trait_impl)] is allowed to be stable, add a test
// trait impls. Right now, a "trait methods cannot be stable const fn" error is // for const trait impls. Right now, a "trait methods cannot be stable const fn"
// emitted, but that's not in the scope of this test. // 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() {} fn main() {}

View File

@ -1,11 +1,11 @@
error: function has missing const stability attribute error: function has missing const stability attribute
--> $DIR/missing-const-stability.rs:5:1 --> $DIR/missing-const-stability.rs:6:1
| |
LL | pub const fn foo() {} LL | pub const fn foo() {}
| ^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^
error: associated function has missing const stability attribute error: associated function has missing const stability attribute
--> $DIR/missing-const-stability.rs:14:5 --> $DIR/missing-const-stability.rs:15:5
| |
LL | pub const fn foo() {} LL | pub const fn foo() {}
| ^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^