diff options
| author | bors <bors@rust-lang.org> | 2022-05-19 22:43:00 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-05-19 22:43:00 +0000 |
| commit | a09d36deae2e25f2eb4a0ee5d95519042ebd66a2 (patch) | |
| tree | 0b8d32d306bf518a31f92226418a1f786343ac6d /src | |
| parent | c0672870491e84362f76ddecd50fa229f9b06dff (diff) | |
| parent | 1fb9be0cee828d29cfe38fa61c6b3f1c21424f1c (diff) | |
| download | rust-a09d36deae2e25f2eb4a0ee5d95519042ebd66a2.tar.gz rust-a09d36deae2e25f2eb4a0ee5d95519042ebd66a2.zip | |
Auto merge of #97180 - Dylan-DPC:rollup-aa5j2yw, r=Dylan-DPC
Rollup of 6 pull requests Successful merges: - #96539 (Add release notes for 1.61.0) - #97142 (move processing of `source_scope_data` into `MutVisitor`'s impl of `Integrator` when inline) - #97155 (Fix doc typo) - #97169 (Improve `u32 as char` cast diagnostic) - #97170 (Remove unnecessay .report() on ExitCode) - #97171 (Add regression test for #88119) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/const-generics/issues/issue-88119.rs | 35 | ||||
| -rw-r--r-- | src/test/ui/error-codes/E0604.stderr | 9 | ||||
| -rw-r--r-- | src/test/ui/error-festival.stderr | 9 | ||||
| -rw-r--r-- | src/test/ui/mismatched_types/cast-rfc0401.stderr | 9 |
4 files changed, 44 insertions, 18 deletions
diff --git a/src/test/ui/const-generics/issues/issue-88119.rs b/src/test/ui/const-generics/issues/issue-88119.rs new file mode 100644 index 00000000000..70dfa7f708b --- /dev/null +++ b/src/test/ui/const-generics/issues/issue-88119.rs @@ -0,0 +1,35 @@ +// check-pass + +#![allow(incomplete_features)] +#![feature(const_trait_impl, generic_const_exprs)] + +trait ConstName { + const NAME_BYTES: &'static [u8]; +} + +impl const ConstName for u8 { + const NAME_BYTES: &'static [u8] = b"u8"; +} + +const fn name_len<T: ?Sized + ConstName>() -> usize { + T::NAME_BYTES.len() +} + +impl<T: ?Sized + ConstName> const ConstName for &T +where + [(); name_len::<T>()]:, +{ + const NAME_BYTES: &'static [u8] = b"&T"; +} + +impl<T: ?Sized + ConstName> const ConstName for &mut T +where + [(); name_len::<T>()]:, +{ + const NAME_BYTES: &'static [u8] = b"&mut T"; +} + +pub const ICE_1: &'static [u8] = <&&mut u8 as ConstName>::NAME_BYTES; +pub const ICE_2: &'static [u8] = <&mut &u8 as ConstName>::NAME_BYTES; + +fn main() {} diff --git a/src/test/ui/error-codes/E0604.stderr b/src/test/ui/error-codes/E0604.stderr index d715d28b73c..68da03928b7 100644 --- a/src/test/ui/error-codes/E0604.stderr +++ b/src/test/ui/error-codes/E0604.stderr @@ -2,13 +2,10 @@ error[E0604]: only `u8` can be cast as `char`, not `u32` --> $DIR/E0604.rs:2:5 | LL | 1u32 as char; - | ^^^^^^^^^^^^ invalid cast - | -help: try `char::from_u32` instead - --> $DIR/E0604.rs:2:5 - | -LL | 1u32 as char; | ^^^^^^^^^^^^ + | | + | invalid cast + | help: try `char::from_u32` instead: `char::from_u32(1u32)` error: aborting due to previous error diff --git a/src/test/ui/error-festival.stderr b/src/test/ui/error-festival.stderr index 0ddb6fc99b0..81aa268cacc 100644 --- a/src/test/ui/error-festival.stderr +++ b/src/test/ui/error-festival.stderr @@ -57,13 +57,10 @@ error[E0604]: only `u8` can be cast as `char`, not `u32` --> $DIR/error-festival.rs:25:5 | LL | 0u32 as char; - | ^^^^^^^^^^^^ invalid cast - | -help: try `char::from_u32` instead - --> $DIR/error-festival.rs:25:5 - | -LL | 0u32 as char; | ^^^^^^^^^^^^ + | | + | invalid cast + | help: try `char::from_u32` instead: `char::from_u32(0u32)` error[E0605]: non-primitive cast: `u8` as `Vec<u8>` --> $DIR/error-festival.rs:29:5 diff --git a/src/test/ui/mismatched_types/cast-rfc0401.stderr b/src/test/ui/mismatched_types/cast-rfc0401.stderr index 84220ea172a..3a508459cc0 100644 --- a/src/test/ui/mismatched_types/cast-rfc0401.stderr +++ b/src/test/ui/mismatched_types/cast-rfc0401.stderr @@ -98,13 +98,10 @@ error[E0604]: only `u8` can be cast as `char`, not `u32` --> $DIR/cast-rfc0401.rs:41:13 | LL | let _ = 0x61u32 as char; - | ^^^^^^^^^^^^^^^ invalid cast - | -help: try `char::from_u32` instead - --> $DIR/cast-rfc0401.rs:41:13 - | -LL | let _ = 0x61u32 as char; | ^^^^^^^^^^^^^^^ + | | + | invalid cast + | help: try `char::from_u32` instead: `char::from_u32(0x61u32)` error[E0606]: casting `bool` as `f32` is invalid --> $DIR/cast-rfc0401.rs:43:13 |
