about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJacob Pratt <jacob@jhpratt.dev>2021-01-13 04:57:28 -0500
committerJacob Pratt <jacob@jhpratt.dev>2021-01-13 04:57:28 -0500
commit265e03332bfe66ec3f376f81b09810e7a5c780a4 (patch)
tree68186451e3dd417545a1a17db243be653220d971
parent7a9b552cb1621c9c57898d147228aab32b65a7c3 (diff)
downloadrust-265e03332bfe66ec3f376f81b09810e7a5c780a4.tar.gz
rust-265e03332bfe66ec3f376f81b09810e7a5c780a4.zip
Stabilize remaining integer methods as `const fn`
This includes the following functions:
- i*::checked_div
- i*::checked_div_euclid
- i*::checked_rem
- i*::checked_rem_euclid
- i*::div_euclid
- i*::overflowing_div
- i*::overflowing_div_euclid
- i*::overflowing_rem
- i*::overflowing_rem_euclid
- i*::rem_euclid
- i*::wrapping_div
- i*::wrapping_div_euclid
- i*::wrapping_rem
- i*::wrapping_rem_euclid
- u*::checked_div
- u*::checked_div_euclid
- u*::checked_rem
- u*::checked_rem_euclid
- u*::div_euclid
- u*::overflowing_div
- u*::overflowing_div_euclid
- u*::overflowing_rem
- u*::overflowing_rem_euclid
- u*::rem_euclid
- u*::wrapping_div
- u*::wrapping_div_euclid
- u*::wrapping_rem
- u*::wrapping_rem_euclid
-rw-r--r--library/core/src/lib.rs3
-rw-r--r--library/core/src/num/int_macros.rs30
-rw-r--r--library/core/src/num/uint_macros.rs30
-rw-r--r--src/test/ui/consts/const-int-arithmetic.rs5
4 files changed, 32 insertions, 36 deletions
diff --git a/library/core/src/lib.rs b/library/core/src/lib.rs
index df8d9ff371f..157d26725c5 100644
--- a/library/core/src/lib.rs
+++ b/library/core/src/lib.rs
@@ -73,11 +73,8 @@
 #![feature(const_discriminant)]
 #![feature(const_cell_into_inner)]
 #![feature(const_intrinsic_copy)]
-#![feature(const_checked_int_methods)]
-#![feature(const_euclidean_int_methods)]
 #![feature(const_float_classify)]
 #![feature(const_float_bits_conv)]
-#![feature(const_overflowing_int_methods)]
 #![feature(const_int_unchecked_arith)]
 #![feature(const_mut_refs)]
 #![feature(const_cttz)]
diff --git a/library/core/src/num/int_macros.rs b/library/core/src/num/int_macros.rs
index 162ed7d1b8d..810ca9b357e 100644
--- a/library/core/src/num/int_macros.rs
+++ b/library/core/src/num/int_macros.rs
@@ -513,7 +513,8 @@ macro_rules! int_impl {
         #[doc = concat!("assert_eq!((1", stringify!($SelfT), ").checked_div(0), None);")]
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
-        #[rustc_const_unstable(feature = "const_checked_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_checked_int_methods", since = "1.51.0")]
+        #[rustc_allow_const_fn_unstable(const_int_unchecked_arith)]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -539,7 +540,7 @@ macro_rules! int_impl {
         #[doc = concat!("assert_eq!((1", stringify!($SelfT), ").checked_div_euclid(0), None);")]
         /// ```
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -565,7 +566,8 @@ macro_rules! int_impl {
         #[doc = concat!("assert_eq!(", stringify!($SelfT), "::MIN.checked_rem(-1), None);")]
         /// ```
         #[stable(feature = "wrapping", since = "1.7.0")]
-        #[rustc_const_unstable(feature = "const_checked_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_checked_int_methods", since = "1.51.0")]
+        #[rustc_allow_const_fn_unstable(const_int_unchecked_arith)]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -591,7 +593,7 @@ macro_rules! int_impl {
         #[doc = concat!("assert_eq!(", stringify!($SelfT), "::MIN.checked_rem_euclid(-1), None);")]
         /// ```
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -949,7 +951,7 @@ macro_rules! int_impl {
         /// assert_eq!((-128i8).wrapping_div(-1), -128);
         /// ```
         #[stable(feature = "num_wrapping", since = "1.2.0")]
-        #[rustc_const_unstable(feature = "const_wrapping_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_wrapping_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -977,7 +979,7 @@ macro_rules! int_impl {
         /// assert_eq!((-128i8).wrapping_div_euclid(-1), -128);
         /// ```
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -1005,7 +1007,7 @@ macro_rules! int_impl {
         /// assert_eq!((-128i8).wrapping_rem(-1), 0);
         /// ```
         #[stable(feature = "num_wrapping", since = "1.2.0")]
-        #[rustc_const_unstable(feature = "const_wrapping_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_wrapping_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -1032,7 +1034,7 @@ macro_rules! int_impl {
         /// assert_eq!((-128i8).wrapping_rem_euclid(-1), 0);
         /// ```
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -1299,7 +1301,7 @@ macro_rules! int_impl {
         /// ```
         #[inline]
         #[stable(feature = "wrapping", since = "1.7.0")]
-        #[rustc_const_unstable(feature = "const_overflowing_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_overflowing_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         pub const fn overflowing_div(self, rhs: Self) -> (Self, bool) {
@@ -1329,7 +1331,7 @@ macro_rules! int_impl {
         /// ```
         #[inline]
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         pub const fn overflowing_div_euclid(self, rhs: Self) -> (Self, bool) {
@@ -1360,7 +1362,7 @@ macro_rules! int_impl {
         /// ```
         #[inline]
         #[stable(feature = "wrapping", since = "1.7.0")]
-        #[rustc_const_unstable(feature = "const_overflowing_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_overflowing_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         pub const fn overflowing_rem(self, rhs: Self) -> (Self, bool) {
@@ -1390,7 +1392,7 @@ macro_rules! int_impl {
         #[doc = concat!("assert_eq!(", stringify!($SelfT), "::MIN.overflowing_rem_euclid(-1), (0, true));")]
         /// ```
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -1615,7 +1617,7 @@ macro_rules! int_impl {
         /// assert_eq!((-a).div_euclid(-b), 2); // -7 >= -4 * 2
         /// ```
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -1653,7 +1655,7 @@ macro_rules! int_impl {
         /// assert_eq!((-a).rem_euclid(-b), 1);
         /// ```
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
diff --git a/library/core/src/num/uint_macros.rs b/library/core/src/num/uint_macros.rs
index 8f141a3ff9e..89b16342d95 100644
--- a/library/core/src/num/uint_macros.rs
+++ b/library/core/src/num/uint_macros.rs
@@ -522,7 +522,8 @@ macro_rules! uint_impl {
         #[doc = concat!("assert_eq!(1", stringify!($SelfT), ".checked_div(0), None);")]
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
-        #[rustc_const_unstable(feature = "const_checked_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_checked_int_methods", since = "1.51.0")]
+        #[rustc_allow_const_fn_unstable(const_int_unchecked_arith)]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -548,7 +549,7 @@ macro_rules! uint_impl {
         #[doc = concat!("assert_eq!(1", stringify!($SelfT), ".checked_div_euclid(0), None);")]
         /// ```
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -573,7 +574,8 @@ macro_rules! uint_impl {
         #[doc = concat!("assert_eq!(5", stringify!($SelfT), ".checked_rem(0), None);")]
         /// ```
         #[stable(feature = "wrapping", since = "1.7.0")]
-        #[rustc_const_unstable(feature = "const_checked_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_checked_int_methods", since = "1.51.0")]
+        #[rustc_allow_const_fn_unstable(const_int_unchecked_arith)]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -599,7 +601,7 @@ macro_rules! uint_impl {
         #[doc = concat!("assert_eq!(5", stringify!($SelfT), ".checked_rem_euclid(0), None);")]
         /// ```
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -876,7 +878,7 @@ macro_rules! uint_impl {
         #[doc = concat!("assert_eq!(100", stringify!($SelfT), ".wrapping_div(10), 10);")]
         /// ```
         #[stable(feature = "num_wrapping", since = "1.2.0")]
-        #[rustc_const_unstable(feature = "const_wrapping_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_wrapping_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -901,7 +903,7 @@ macro_rules! uint_impl {
         #[doc = concat!("assert_eq!(100", stringify!($SelfT), ".wrapping_div_euclid(10), 10);")]
         /// ```
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -924,7 +926,7 @@ macro_rules! uint_impl {
         #[doc = concat!("assert_eq!(100", stringify!($SelfT), ".wrapping_rem(10), 0);")]
         /// ```
         #[stable(feature = "num_wrapping", since = "1.2.0")]
-        #[rustc_const_unstable(feature = "const_wrapping_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_wrapping_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -950,7 +952,7 @@ macro_rules! uint_impl {
         #[doc = concat!("assert_eq!(100", stringify!($SelfT), ".wrapping_rem_euclid(10), 0);")]
         /// ```
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -1185,7 +1187,7 @@ macro_rules! uint_impl {
         /// ```
         #[inline]
         #[stable(feature = "wrapping", since = "1.7.0")]
-        #[rustc_const_unstable(feature = "const_overflowing_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_overflowing_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         pub const fn overflowing_div(self, rhs: Self) -> (Self, bool) {
@@ -1215,7 +1217,7 @@ macro_rules! uint_impl {
         /// ```
         #[inline]
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         pub const fn overflowing_div_euclid(self, rhs: Self) -> (Self, bool) {
@@ -1242,7 +1244,7 @@ macro_rules! uint_impl {
         /// ```
         #[inline]
         #[stable(feature = "wrapping", since = "1.7.0")]
-        #[rustc_const_unstable(feature = "const_overflowing_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_overflowing_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         pub const fn overflowing_rem(self, rhs: Self) -> (Self, bool) {
@@ -1272,7 +1274,7 @@ macro_rules! uint_impl {
         /// ```
         #[inline]
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         pub const fn overflowing_rem_euclid(self, rhs: Self) -> (Self, bool) {
@@ -1456,7 +1458,7 @@ macro_rules! uint_impl {
         #[doc = concat!("assert_eq!(7", stringify!($SelfT), ".div_euclid(4), 1); // or any other integer type")]
         /// ```
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
@@ -1484,7 +1486,7 @@ macro_rules! uint_impl {
         #[doc = concat!("assert_eq!(7", stringify!($SelfT), ".rem_euclid(4), 3); // or any other integer type")]
         /// ```
         #[stable(feature = "euclidean_division", since = "1.38.0")]
-        #[rustc_const_unstable(feature = "const_euclidean_int_methods", issue = "53718")]
+        #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.51.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[inline]
diff --git a/src/test/ui/consts/const-int-arithmetic.rs b/src/test/ui/consts/const-int-arithmetic.rs
index e0d722ede94..b9096648f92 100644
--- a/src/test/ui/consts/const-int-arithmetic.rs
+++ b/src/test/ui/consts/const-int-arithmetic.rs
@@ -1,10 +1,5 @@
 // run-pass
 
-#![feature(const_checked_int_methods)]
-#![feature(const_euclidean_int_methods)]
-#![feature(const_overflowing_int_methods)]
-#![feature(const_wrapping_int_methods)]
-
 macro_rules! suite {
     ($(
         $fn:ident -> $ty:ty { $( $label:ident : $expr:expr, $result:expr; )* }