Rollup merge of #124240 - matthiaskrgr:tests_sunday, r=compiler-errors
add a couple tests for fixed ICEs. Fixes https://github.com/rust-lang/rust/issues/121413 Fixes https://github.com/rust-lang/rust/issues/121463 Fixes https://github.com/rust-lang/rust/issues/114463
This commit is contained in:
commit
3cd56f3bda
@ -0,0 +1,12 @@
|
||||
// issue rust-lang/rust#121463
|
||||
// ICE non-ADT in struct pattern
|
||||
#![feature(box_patterns)]
|
||||
|
||||
fn main() {
|
||||
let mut a = E::StructVar { boxed: Box::new(5_i32) };
|
||||
//~^ ERROR failed to resolve: use of undeclared type `E`
|
||||
match a {
|
||||
E::StructVar { box boxed } => { }
|
||||
//~^ ERROR failed to resolve: use of undeclared type `E`
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
error[E0433]: failed to resolve: use of undeclared type `E`
|
||||
--> $DIR/non-ADT-struct-pattern-box-pattern-ice-121463.rs:6:17
|
||||
|
|
||||
LL | let mut a = E::StructVar { boxed: Box::new(5_i32) };
|
||||
| ^
|
||||
| |
|
||||
| use of undeclared type `E`
|
||||
| help: a trait with a similar name exists: `Eq`
|
||||
|
||||
error[E0433]: failed to resolve: use of undeclared type `E`
|
||||
--> $DIR/non-ADT-struct-pattern-box-pattern-ice-121463.rs:9:9
|
||||
|
|
||||
LL | E::StructVar { box boxed } => { }
|
||||
| ^
|
||||
| |
|
||||
| use of undeclared type `E`
|
||||
| help: a trait with a similar name exists: `Eq`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0433`.
|
@ -0,0 +1,10 @@
|
||||
// issue: rust-lang/rust#114463
|
||||
// ICE cannot convert `ReFree ..` to a region vid
|
||||
#![feature(generic_const_exprs)]
|
||||
//~^ WARN the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||
fn bug<'a>() {
|
||||
[(); (|_: &'a u8| (), 0).1];
|
||||
//~^ ERROR cannot capture late-bound lifetime in constant
|
||||
}
|
||||
|
||||
pub fn main() {}
|
@ -0,0 +1,19 @@
|
||||
warning: the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||
--> $DIR/cannot-convert-refree-ice-114463.rs:3:12
|
||||
|
|
||||
LL | #![feature(generic_const_exprs)]
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #76560 <https://github.com/rust-lang/rust/issues/76560> for more information
|
||||
= note: `#[warn(incomplete_features)]` on by default
|
||||
|
||||
error: cannot capture late-bound lifetime in constant
|
||||
--> $DIR/cannot-convert-refree-ice-114463.rs:6:16
|
||||
|
|
||||
LL | fn bug<'a>() {
|
||||
| -- lifetime defined here
|
||||
LL | [(); (|_: &'a u8| (), 0).1];
|
||||
| ^^
|
||||
|
||||
error: aborting due to 1 previous error; 1 warning emitted
|
||||
|
16
tests/ui/consts/const_refs_to_static-ice-121413.rs
Normal file
16
tests/ui/consts/const_refs_to_static-ice-121413.rs
Normal file
@ -0,0 +1,16 @@
|
||||
// ICE: ImmTy { imm: Scalar(alloc1), ty: *const dyn Sync } input to a fat-to-thin cast (*const dyn Sync -> *const usize
|
||||
// or with -Zextra-const-ub-checks: expected wide pointer extra data (e.g. slice length or trait object vtable)
|
||||
// issue: rust-lang/rust#121413
|
||||
//@ compile-flags: -Zextra-const-ub-checks
|
||||
// ignore-tidy-linelength
|
||||
#![feature(const_refs_to_static)]
|
||||
const REF_INTERIOR_MUT: &usize = {
|
||||
static FOO: Sync = AtomicUsize::new(0);
|
||||
//~^ ERROR failed to resolve: use of undeclared type `AtomicUsize`
|
||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
||||
//~| ERROR the size for values of type `(dyn Sync + 'static)` cannot be known at compilation time
|
||||
//~| ERROR the size for values of type `(dyn Sync + 'static)` cannot be known at compilation time
|
||||
//~| WARN this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
||||
unsafe { &*(&FOO as *const _ as *const usize) }
|
||||
};
|
||||
pub fn main() {}
|
46
tests/ui/consts/const_refs_to_static-ice-121413.stderr
Normal file
46
tests/ui/consts/const_refs_to_static-ice-121413.stderr
Normal file
@ -0,0 +1,46 @@
|
||||
error[E0433]: failed to resolve: use of undeclared type `AtomicUsize`
|
||||
--> $DIR/const_refs_to_static-ice-121413.rs:8:24
|
||||
|
|
||||
LL | static FOO: Sync = AtomicUsize::new(0);
|
||||
| ^^^^^^^^^^^ use of undeclared type `AtomicUsize`
|
||||
|
|
||||
help: consider importing this struct
|
||||
|
|
||||
LL + use std::sync::atomic::AtomicUsize;
|
||||
|
|
||||
|
||||
warning: trait objects without an explicit `dyn` are deprecated
|
||||
--> $DIR/const_refs_to_static-ice-121413.rs:8:17
|
||||
|
|
||||
LL | static FOO: Sync = AtomicUsize::new(0);
|
||||
| ^^^^
|
||||
|
|
||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
||||
= note: `#[warn(bare_trait_objects)]` on by default
|
||||
help: if this is an object-safe trait, use `dyn`
|
||||
|
|
||||
LL | static FOO: dyn Sync = AtomicUsize::new(0);
|
||||
| +++
|
||||
|
||||
error[E0277]: the size for values of type `(dyn Sync + 'static)` cannot be known at compilation time
|
||||
--> $DIR/const_refs_to_static-ice-121413.rs:8:17
|
||||
|
|
||||
LL | static FOO: Sync = AtomicUsize::new(0);
|
||||
| ^^^^ doesn't have a size known at compile-time
|
||||
|
|
||||
= help: the trait `Sized` is not implemented for `(dyn Sync + 'static)`
|
||||
|
||||
error[E0277]: the size for values of type `(dyn Sync + 'static)` cannot be known at compilation time
|
||||
--> $DIR/const_refs_to_static-ice-121413.rs:8:24
|
||||
|
|
||||
LL | static FOO: Sync = AtomicUsize::new(0);
|
||||
| ^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
|
||||
|
|
||||
= help: the trait `Sized` is not implemented for `(dyn Sync + 'static)`
|
||||
= note: constant expressions must have a statically known size
|
||||
|
||||
error: aborting due to 3 previous errors; 1 warning emitted
|
||||
|
||||
Some errors have detailed explanations: E0277, E0433.
|
||||
For more information about an error, try `rustc --explain E0277`.
|
Loading…
Reference in New Issue
Block a user