From d314dd326a26df1dcf9268a2b2aff2af160b7705 Mon Sep 17 00:00:00 2001 From: Lokathor Date: Tue, 11 Dec 2018 23:23:15 -0700 Subject: [PATCH 1/6] Make the getter for NonZero types into a const fn --- src/libcore/num/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index 13b422162f3d6..1cfb48e2d3118 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -87,7 +87,7 @@ assert_eq!(size_of::>(), size_of::<", st /// Returns the value as a primitive type. #[stable(feature = "nonzero", since = "1.28.0")] #[inline] - pub fn get(self) -> $Int { + pub const fn get(self) -> $Int { self.0 .0 } From f2f32fe066d59f62e4120806080db396ccf37711 Mon Sep 17 00:00:00 2001 From: Lokathor Date: Wed, 12 Dec 2018 15:18:56 -0700 Subject: [PATCH 2/6] Add the approrpiate test --- src/test/ui/consts/const-nonzero.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/test/ui/consts/const-nonzero.rs diff --git a/src/test/ui/consts/const-nonzero.rs b/src/test/ui/consts/const-nonzero.rs new file mode 100644 index 0000000000000..19078a11ea64b --- /dev/null +++ b/src/test/ui/consts/const-nonzero.rs @@ -0,0 +1,11 @@ +// compile-pass + +#![feature(const_nonzero_methods)] + +use std::num::NonZeroU8; + +const X: NonZeroU8 = unsafe { NonZeroU8::new_unchecked(5) }; +const Y: u8 = X.get(); + +fn main() { +} \ No newline at end of file From 6a023058bfd7e1fafad24db57e347087e48e7d25 Mon Sep 17 00:00:00 2001 From: Lokathor Date: Wed, 12 Dec 2018 15:28:22 -0700 Subject: [PATCH 3/6] Added the appropriate feature gate and feature use --- src/libcore/num/mod.rs | 1 + src/librustc/lib.rs | 1 + src/librustc_data_structures/lib.rs | 1 + src/librustc_mir/lib.rs | 1 + 4 files changed, 4 insertions(+) diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index 1cfb48e2d3118..351e91a70147f 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -86,6 +86,7 @@ assert_eq!(size_of::>(), size_of::<", st /// Returns the value as a primitive type. #[stable(feature = "nonzero", since = "1.28.0")] + #[rustc_const_unstable(feature = "const_nonzero_methods")] #[inline] pub const fn get(self) -> $Int { self.0 .0 diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs index 4324cfc7b5f10..0b0ff5ec2a525 100644 --- a/src/librustc/lib.rs +++ b/src/librustc/lib.rs @@ -69,6 +69,7 @@ #![feature(in_band_lifetimes)] #![feature(crate_visibility_modifier)] #![feature(transpose_result)] +#![feature(const_nonzero_methods)] #![recursion_limit="512"] diff --git a/src/librustc_data_structures/lib.rs b/src/librustc_data_structures/lib.rs index 8e0ecb70c6896..1ab802ef9ab2a 100644 --- a/src/librustc_data_structures/lib.rs +++ b/src/librustc_data_structures/lib.rs @@ -30,6 +30,7 @@ #![feature(allow_internal_unstable)] #![feature(vec_resize_with)] #![feature(hash_raw_entry)] +#![feature(const_nonzero_methods)] #![cfg_attr(unix, feature(libc))] #![cfg_attr(test, feature(test))] diff --git a/src/librustc_mir/lib.rs b/src/librustc_mir/lib.rs index 1a35f4da20bf1..0019124f1204e 100644 --- a/src/librustc_mir/lib.rs +++ b/src/librustc_mir/lib.rs @@ -38,6 +38,7 @@ Rust MIR: a lowered representation of Rust. Also: an experiment! #![feature(try_from)] #![feature(reverse_bits)] #![feature(underscore_imports)] +#![feature(const_nonzero_methods)] #![recursion_limit="256"] From 55593eb858c1d18254dd9be84bf0586346d201dc Mon Sep 17 00:00:00 2001 From: Lokathor Date: Wed, 12 Dec 2018 17:04:30 -0700 Subject: [PATCH 4/6] added the trailing newline as demanded by tidy --- src/test/ui/consts/const-nonzero.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/ui/consts/const-nonzero.rs b/src/test/ui/consts/const-nonzero.rs index 19078a11ea64b..4c14f3b47856b 100644 --- a/src/test/ui/consts/const-nonzero.rs +++ b/src/test/ui/consts/const-nonzero.rs @@ -8,4 +8,4 @@ const X: NonZeroU8 = unsafe { NonZeroU8::new_unchecked(5) }; const Y: u8 = X.get(); fn main() { -} \ No newline at end of file +} From f341d71129b8a24dd6cb4a56d3d809d4c395f4f0 Mon Sep 17 00:00:00 2001 From: Lokathor Date: Thu, 20 Dec 2018 17:39:05 -0700 Subject: [PATCH 5/6] prep-commit for insta-stable --- src/libcore/num/mod.rs | 1 - src/librustc/lib.rs | 1 - src/librustc_data_structures/lib.rs | 1 - src/librustc_mir/lib.rs | 1 - 4 files changed, 4 deletions(-) diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index 351e91a70147f..1cfb48e2d3118 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -86,7 +86,6 @@ assert_eq!(size_of::>(), size_of::<", st /// Returns the value as a primitive type. #[stable(feature = "nonzero", since = "1.28.0")] - #[rustc_const_unstable(feature = "const_nonzero_methods")] #[inline] pub const fn get(self) -> $Int { self.0 .0 diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs index 0b0ff5ec2a525..4324cfc7b5f10 100644 --- a/src/librustc/lib.rs +++ b/src/librustc/lib.rs @@ -69,7 +69,6 @@ #![feature(in_band_lifetimes)] #![feature(crate_visibility_modifier)] #![feature(transpose_result)] -#![feature(const_nonzero_methods)] #![recursion_limit="512"] diff --git a/src/librustc_data_structures/lib.rs b/src/librustc_data_structures/lib.rs index 1ab802ef9ab2a..8e0ecb70c6896 100644 --- a/src/librustc_data_structures/lib.rs +++ b/src/librustc_data_structures/lib.rs @@ -30,7 +30,6 @@ #![feature(allow_internal_unstable)] #![feature(vec_resize_with)] #![feature(hash_raw_entry)] -#![feature(const_nonzero_methods)] #![cfg_attr(unix, feature(libc))] #![cfg_attr(test, feature(test))] diff --git a/src/librustc_mir/lib.rs b/src/librustc_mir/lib.rs index 0019124f1204e..1a35f4da20bf1 100644 --- a/src/librustc_mir/lib.rs +++ b/src/librustc_mir/lib.rs @@ -38,7 +38,6 @@ Rust MIR: a lowered representation of Rust. Also: an experiment! #![feature(try_from)] #![feature(reverse_bits)] #![feature(underscore_imports)] -#![feature(const_nonzero_methods)] #![recursion_limit="256"] From 566cf713a35a40bde18c54d0aba79a9443a5360f Mon Sep 17 00:00:00 2001 From: Lokathor Date: Sun, 23 Dec 2018 09:15:31 -0700 Subject: [PATCH 6/6] no feature gate required --- src/test/ui/consts/const-nonzero.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/ui/consts/const-nonzero.rs b/src/test/ui/consts/const-nonzero.rs index 4c14f3b47856b..c06ab227f6463 100644 --- a/src/test/ui/consts/const-nonzero.rs +++ b/src/test/ui/consts/const-nonzero.rs @@ -1,7 +1,5 @@ // compile-pass -#![feature(const_nonzero_methods)] - use std::num::NonZeroU8; const X: NonZeroU8 = unsafe { NonZeroU8::new_unchecked(5) };