diff options
| author | bors <bors@rust-lang.org> | 2019-09-24 10:58:41 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-09-24 10:58:41 +0000 |
| commit | 6ef275e6c3cb1384ec78128eceeb4963ff788dca (patch) | |
| tree | e2e776a76307c183bb2a762a2b1f630b71339b68 /src/test | |
| parent | 7fdea7a72abb9f5a58fdc19c0a298042291c53b2 (diff) | |
| parent | 7767e7fb165d527f1991175809a361f2d2313b80 (diff) | |
| download | rust-6ef275e6c3cb1384ec78128eceeb4963ff788dca.tar.gz rust-6ef275e6c3cb1384ec78128eceeb4963ff788dca.zip | |
Auto merge of #63770 - oli-obk:allow_internal_unstable, r=Centril
Stabilize `str::len`, `[T]::len` and `str::as_bytes` as const fn r? @Centril cc @RalfJung This also introduces a scheme for making certain feature gates legal in stabilized const fns
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/consts/const-eval/strlen.rs | 12 | ||||
| -rw-r--r-- | src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.rs | 2 | ||||
| -rw-r--r-- | src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.stderr | 8 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-52060.rs | 1 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-52060.stderr | 10 |
5 files changed, 16 insertions, 17 deletions
diff --git a/src/test/ui/consts/const-eval/strlen.rs b/src/test/ui/consts/const-eval/strlen.rs index 6a5cad82c3a..7b14a523543 100644 --- a/src/test/ui/consts/const-eval/strlen.rs +++ b/src/test/ui/consts/const-eval/strlen.rs @@ -1,9 +1,11 @@ // run-pass -#![feature(const_str_len, const_str_as_bytes)] - const S: &str = "foo"; pub const B: &[u8] = S.as_bytes(); +pub const C: usize = B.len(); +pub const D: bool = B.is_empty(); +pub const E: bool = S.is_empty(); +pub const F: usize = S.len(); pub fn foo() -> [u8; S.len()] { let mut buf = [0; S.len()]; @@ -20,4 +22,10 @@ fn main() { assert_eq!(LEN, S.len()); assert_eq!(B, foo()); assert_eq!(B, b"foo"); + assert_eq!(C, 3); + assert_eq!(F, 3); + assert!(!D); + assert!(!E); + const EMPTY: bool = "".is_empty(); + assert!(EMPTY); } diff --git a/src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.rs b/src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.rs index 4281874a031..0b1ab1c34ff 100644 --- a/src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.rs +++ b/src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.rs @@ -12,5 +12,5 @@ fn main() {} const unsafe fn no_union() { union Foo { x: (), y: () } Foo { x: () }.y - //~^ unions in const fn + //~^ accessing union fields is unstable } diff --git a/src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.stderr b/src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.stderr index 9de0e732f33..2a4c627438d 100644 --- a/src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.stderr +++ b/src/test/ui/consts/min_const_fn/min_const_fn_unsafe_bad.stderr @@ -25,14 +25,14 @@ LL | const unsafe fn bad_const_unsafe_deref_raw_ref(x: *mut usize) -> &'static u = note: for more information, see https://github.com/rust-lang/rust/issues/51911 = help: add `#![feature(const_raw_ptr_deref)]` to the crate attributes to enable -error[E0658]: unions in const fn are unstable +error[E0723]: accessing union fields is unstable --> $DIR/min_const_fn_unsafe_bad.rs:14:5 | LL | Foo { x: () }.y | ^^^^^^^^^^^^^^^ | - = note: for more information, see https://github.com/rust-lang/rust/issues/51909 - = help: add `#![feature(const_fn_union)]` to the crate attributes to enable + = note: for more information, see issue https://github.com/rust-lang/rust/issues/57563 + = help: add `#![feature(const_fn)]` to the crate attributes to enable error[E0133]: dereference of raw pointer is unsafe and requires unsafe function or block --> $DIR/min_const_fn_unsafe_bad.rs:1:77 @@ -44,5 +44,5 @@ LL | const fn bad_const_fn_deref_raw(x: *mut usize) -> &'static usize { unsafe { error: aborting due to 5 previous errors -Some errors have detailed explanations: E0133, E0658. +Some errors have detailed explanations: E0133, E0658, E0723. For more information about an error, try `rustc --explain E0133`. diff --git a/src/test/ui/issues/issue-52060.rs b/src/test/ui/issues/issue-52060.rs index 54eff228934..13b914c0331 100644 --- a/src/test/ui/issues/issue-52060.rs +++ b/src/test/ui/issues/issue-52060.rs @@ -3,6 +3,5 @@ static A: &'static [u32] = &[1]; static B: [u32; 1] = [0; A.len()]; //~^ ERROR [E0013] -//~| ERROR `core::slice::<impl [T]>::len` is not yet stable as a const fn fn main() {} diff --git a/src/test/ui/issues/issue-52060.stderr b/src/test/ui/issues/issue-52060.stderr index 7c3f7695549..2f90f7f9e03 100644 --- a/src/test/ui/issues/issue-52060.stderr +++ b/src/test/ui/issues/issue-52060.stderr @@ -4,14 +4,6 @@ error[E0013]: constants cannot refer to statics, use a constant instead LL | static B: [u32; 1] = [0; A.len()]; | ^ -error: `core::slice::<impl [T]>::len` is not yet stable as a const fn - --> $DIR/issue-52060.rs:4:26 - | -LL | static B: [u32; 1] = [0; A.len()]; - | ^^^^^^^ - | - = help: add `#![feature(const_slice_len)]` to the crate attributes to enable - -error: aborting due to 2 previous errors +error: aborting due to previous error For more information about this error, try `rustc --explain E0013`. |
