forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#125539 - matthiaskrgr:cräsh, r=jieyouxu
crashes: increment the number of tracked ones r? `@jieyouxu`
- Loading branch information
Showing
15 changed files
with
304 additions
and
1 deletion.
There are no files selected for viewing
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,13 @@ | ||
//@ known-bug: rust-lang/rust#123255 | ||
//@ edition:2021 | ||
#![crate_type = "lib"] | ||
|
||
pub fn a() {} | ||
|
||
mod handlers { | ||
pub struct C(&()); | ||
pub fn c() -> impl Fn() -> C { | ||
let a1 = (); | ||
|| C((crate::a(), a1).into()) | ||
} | ||
} |
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,25 @@ | ||
//@ known-bug: rust-lang/rust#123276 | ||
//@ edition:2021 | ||
|
||
async fn create_task() { | ||
_ = Some(async { bind(documentation_filter()) }); | ||
} | ||
|
||
async fn bind<Fut, F: Filter<Future = Fut>>(_: F) {} | ||
|
||
fn documentation_filter() -> impl Filter { | ||
AndThen | ||
} | ||
|
||
trait Filter { | ||
type Future; | ||
} | ||
|
||
struct AndThen; | ||
|
||
impl Filter for AndThen | ||
where | ||
Foo: Filter, | ||
{ | ||
type Future = (); | ||
} |
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#123887 | ||
//@ compile-flags: -Clink-dead-code | ||
|
||
#![feature(extern_types)] | ||
#![feature(unsized_fn_params)] | ||
|
||
extern "C" { | ||
pub type ExternType; | ||
} | ||
|
||
impl ExternType { | ||
pub fn f(self) {} | ||
} | ||
|
||
pub fn main() {} |
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,5 @@ | ||
//@ known-bug: rust-lang/rust#125013 | ||
//@ edition:2021 | ||
use io::{self as std}; | ||
use std::ops::Deref::{self as io}; | ||
pub fn main() {} |
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,16 @@ | ||
//@ known-bug: rust-lang/rust#125013 | ||
//@ edition:2021 | ||
mod a { | ||
pub mod b { | ||
pub mod c { | ||
pub trait D {} | ||
} | ||
} | ||
} | ||
|
||
use a::*; | ||
|
||
use e as b; | ||
use b::c::D as e; | ||
|
||
fn main() { } |
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,17 @@ | ||
//@ known-bug: rust-lang/rust#125014 | ||
//@ compile-flags: -Znext-solver=coherence | ||
#![feature(specialization)] | ||
|
||
trait Foo {} | ||
|
||
impl Foo for <u16 as Assoc>::Output {} | ||
|
||
impl Foo for u32 {} | ||
|
||
trait Assoc { | ||
type Output; | ||
} | ||
impl Output for u32 {} | ||
impl Assoc for <u16 as Assoc>::Output { | ||
default type Output = bool; | ||
} |
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,12 @@ | ||
//@ known-bug: rust-lang/rust#125059 | ||
#![feature(deref_patterns)] | ||
#![allow(incomplete_features)] | ||
|
||
fn simple_vec(vec: Vec<u32>) -> u32 { | ||
(|| match Vec::<u32>::new() { | ||
deref!([]) => 100, | ||
_ => 2000, | ||
})() | ||
} | ||
|
||
fn main() {} |
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,6 @@ | ||
//@ known-bug: rust-lang/rust#125323 | ||
fn main() { | ||
for _ in 0..0 { | ||
[(); loop {}]; | ||
} | ||
} |
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,3 @@ | ||
//@ known-bug: rust-lang/rust#125476 | ||
pub struct Data([u8; usize::MAX >> 16]); | ||
const _: &'static [Data] = &[]; |
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,10 @@ | ||
//@ known-bug: rust-lang/rust#125512 | ||
//@ edition:2021 | ||
#![feature(object_safe_for_dispatch)] | ||
trait B { | ||
fn f(a: A) -> A; | ||
} | ||
trait A { | ||
fn concrete(b: B) -> B; | ||
} | ||
fn main() {} |
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