-
Notifications
You must be signed in to change notification settings - Fork 13k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
remove fixed crashes, add fixed crashes to tests, add new cashed foun…
…d in the meantime
- Loading branch information
1 parent
e5d1003
commit bae9452
Showing
9 changed files
with
183 additions
and
50 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
//@ known-bug: rust-lang/rust#125476 | ||
//@ only-x86_64 | ||
pub struct Data([u8; usize::MAX >> 16]); | ||
const _: &'static [Data] = &[]; |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
//@ known-bug: rust-lang/rust#125553 | ||
//@ edition:2021 | ||
|
||
#[derive(Copy, Clone)] | ||
struct Foo((u32, u32)); | ||
|
||
fn main() { | ||
type T = impl Copy(Copy, Clone) | ||
let foo: T = Foo((1u32, 1u32)); | ||
let x = move || { | ||
let derive = move || { | ||
let Foo((a, b)) = foo; | ||
}; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
//@ known-bug: rust-lang/rust#125556 | ||
//@ compile-flags: -Znext-solver=coherence | ||
|
||
#![feature(generic_const_exprs)] | ||
|
||
pub struct A<const z: [usize; x]> {} | ||
|
||
impl A<2> { | ||
pub const fn B() {} | ||
} | ||
|
||
impl A<2> { | ||
pub const fn B() {} | ||
} |
27 changes: 27 additions & 0 deletions
27
tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
// issue: rust-lang/rust#125520 | ||
#![feature(generic_const_exprs)] | ||
//~^ WARN the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes | ||
|
||
struct Outer<const A: i64, const B: i64>(); | ||
impl<const A: usize, const B: usize> Outer<A, B> | ||
//~^ ERROR the constant `A` is not of type `i64` | ||
//~| ERROR the constant `B` is not of type `i64` | ||
//~| ERROR mismatched types | ||
//~| ERROR mismatched types | ||
where | ||
[(); A + (B * 2)]:, | ||
{ | ||
fn i() -> Self { | ||
//~^ ERROR the constant `A` is not of type `i64` | ||
//~| ERROR the constant `B` is not of type `i64` | ||
Self | ||
//~^ ERROR mismatched types | ||
//~| ERROR the constant `A` is not of type `i64` | ||
//~| ERROR the constant `B` is not of type `i64` | ||
} | ||
} | ||
|
||
fn main() { | ||
Outer::<1, 1>::o(); | ||
//~^ ERROR no function or associated item named `o` found for struct `Outer` in the current scope | ||
} |
125 changes: 125 additions & 0 deletions
125
...s/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
warning: the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:2: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: the constant `A` is not of type `i64` | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:6:38 | ||
| | ||
LL | impl<const A: usize, const B: usize> Outer<A, B> | ||
| ^^^^^^^^^^^ expected `i64`, found `usize` | ||
| | ||
note: required by a bound in `Outer` | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:14 | ||
| | ||
LL | struct Outer<const A: i64, const B: i64>(); | ||
| ^^^^^^^^^^^^ required by this bound in `Outer` | ||
|
||
error: the constant `B` is not of type `i64` | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:6:38 | ||
| | ||
LL | impl<const A: usize, const B: usize> Outer<A, B> | ||
| ^^^^^^^^^^^ expected `i64`, found `usize` | ||
| | ||
note: required by a bound in `Outer` | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:28 | ||
| | ||
LL | struct Outer<const A: i64, const B: i64>(); | ||
| ^^^^^^^^^^^^ required by this bound in `Outer` | ||
|
||
error: the constant `A` is not of type `i64` | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:14:15 | ||
| | ||
LL | fn i() -> Self { | ||
| ^^^^ expected `i64`, found `usize` | ||
| | ||
note: required by a bound in `Outer` | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:14 | ||
| | ||
LL | struct Outer<const A: i64, const B: i64>(); | ||
| ^^^^^^^^^^^^ required by this bound in `Outer` | ||
|
||
error: the constant `B` is not of type `i64` | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:14:15 | ||
| | ||
LL | fn i() -> Self { | ||
| ^^^^ expected `i64`, found `usize` | ||
| | ||
note: required by a bound in `Outer` | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:28 | ||
| | ||
LL | struct Outer<const A: i64, const B: i64>(); | ||
| ^^^^^^^^^^^^ required by this bound in `Outer` | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:17:9 | ||
| | ||
LL | struct Outer<const A: i64, const B: i64>(); | ||
| ---------------------------------------- `Outer` defines a struct constructor here, which should be called | ||
... | ||
LL | fn i() -> Self { | ||
| ---- expected `Outer<A, B>` because of return type | ||
... | ||
LL | Self | ||
| ^^^^ expected `Outer<A, B>`, found struct constructor | ||
| | ||
= note: expected struct `Outer<A, B>` | ||
found struct constructor `fn() -> Outer<A, B> {Outer::<A, B>}` | ||
help: use parentheses to construct this tuple struct | ||
| | ||
LL | Self() | ||
| ++ | ||
|
||
error: the constant `A` is not of type `i64` | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:17:9 | ||
| | ||
LL | Self | ||
| ^^^^ expected `i64`, found `usize` | ||
| | ||
note: required by a bound in `Outer` | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:14 | ||
| | ||
LL | struct Outer<const A: i64, const B: i64>(); | ||
| ^^^^^^^^^^^^ required by this bound in `Outer` | ||
|
||
error: the constant `B` is not of type `i64` | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:17:9 | ||
| | ||
LL | Self | ||
| ^^^^ expected `i64`, found `usize` | ||
| | ||
note: required by a bound in `Outer` | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:28 | ||
| | ||
LL | struct Outer<const A: i64, const B: i64>(); | ||
| ^^^^^^^^^^^^ required by this bound in `Outer` | ||
|
||
error[E0599]: no function or associated item named `o` found for struct `Outer` in the current scope | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:25:20 | ||
| | ||
LL | struct Outer<const A: i64, const B: i64>(); | ||
| ---------------------------------------- function or associated item `o` not found for this struct | ||
... | ||
LL | Outer::<1, 1>::o(); | ||
| ^ function or associated item not found in `Outer<1, 1>` | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:6:44 | ||
| | ||
LL | impl<const A: usize, const B: usize> Outer<A, B> | ||
| ^ expected `i64`, found `usize` | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:6:47 | ||
| | ||
LL | impl<const A: usize, const B: usize> Outer<A, B> | ||
| ^ expected `i64`, found `usize` | ||
|
||
error: aborting due to 10 previous errors; 1 warning emitted | ||
|
||
Some errors have detailed explanations: E0308, E0599. | ||
For more information about an error, try `rustc --explain E0308`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters