Skip to content

Commit

Permalink
Unrolled build for rust-lang#124408
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#124408 - matthiaskrgr:loltest, r=jieyouxu

crashes: add more tests
  • Loading branch information
rust-timer authored Apr 27, 2024
2 parents aa6a8ee + 60c0fa1 commit 3ebac65
Show file tree
Hide file tree
Showing 9 changed files with 102 additions and 0 deletions.
5 changes: 5 additions & 0 deletions tests/crashes/124262.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
//@ known-bug: #124262
//@ edition:2021

struct Foo(<&[fn()] as ::core::ops::Deref>::Target);
const _: *const Foo = 0 as _;
17 changes: 17 additions & 0 deletions tests/crashes/124340.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//@ known-bug: #124340
#![feature(anonymous_lifetime_in_impl_trait)]

trait Producer {
type Output;
fn produce(self) -> Self::Output;
}

trait SomeTrait<'a> {}

fn force_same_lifetime<'a>(_x: &'a i32, _y: impl SomeTrait<'a>) {
unimplemented!()
}

fn foo<'a>(s: &'a i32, producer: impl Producer<Output: SomeTrait<'_>>) {
force_same_lifetime(s, producer.produce());
}
6 changes: 6 additions & 0 deletions tests/crashes/124342.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
//@ known-bug: #124342
trait Trait2 : Trait {
reuse <() as Trait>::async {
(async || {}).await;
};
}
4 changes: 4 additions & 0 deletions tests/crashes/124347.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
//@ known-bug: #124347
trait Trait: ToReuse {
reuse Trait::lolno { &self.0 };
}
7 changes: 7 additions & 0 deletions tests/crashes/124348.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
//@ known-bug: #124348
enum Eek {
TheConst,
UnusedByTheConst(Sum),
}

const EEK_ZERO: &[Eek] = &[];
17 changes: 17 additions & 0 deletions tests/crashes/124350.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//@ known-bug: #124350

struct Node<const D: usize> {}

impl Node<D>
where
SmallVec<{ D * 2 }>:,
{
fn new() -> Self {
let mut node = Node::new();
(&a, 0)();

node
}
}

struct SmallVec<T1, T2> {}
4 changes: 4 additions & 0 deletions tests/crashes/124352.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
//@ known-bug: #124352
#![rustc_never_type_options(: Unsize<U> = "hi")]

fn main() {}
11 changes: 11 additions & 0 deletions tests/crashes/124375.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
//@ known-bug: #124375
//@ compile-flags: -Zmir-opt-level=0
//@ only-x86_64
#![crate_type = "lib"]
#![feature(naked_functions)]
use std::arch::asm;

#[naked]
pub unsafe extern "C" fn naked_with_args_and_return(a: isize, b: isize) -> isize {
asm!("lea rax, [rdi + rsi]", "ret", options(noreturn));
}
31 changes: 31 additions & 0 deletions tests/crashes/92470.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
//@ known-bug: #92470
fn main() {
encode(&mut EncoderImpl);
}

pub trait Encoder {
type W;

fn writer(&self) -> Self::W;
}

fn encode<E: Encoder>(mut encoder: E) {
encoder.writer();
encode(&mut encoder);
}

struct EncoderImpl;

impl Encoder for EncoderImpl {
type W = ();

fn writer(&self) {}
}

impl<'a, T: Encoder> Encoder for &'a mut T {
type W = T::W;

fn writer(&self) -> Self::W {
panic!()
}
}

0 comments on commit 3ebac65

Please sign in to comment.