Skip to content

Commit

Permalink
Rollup merge of rust-lang#72572 - JohnTitor:add-tests, r=matthewjasper
Browse files Browse the repository at this point in the history
Add some regression tests

Closes rust-lang#68532
Closes rust-lang#70121
Closes rust-lang#71042
CC rust-lang#56445

r? @matthewjasper since they (except for rust-lang#71042) are related to rust-lang#72362.
  • Loading branch information
Dylan-DPC authored May 29, 2020
2 parents bc61a5f + 6315d0c commit 5109c96
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/test/ui/impl-trait/issue-56445.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Regression test for https://github.com/rust-lang/rust/issues/56445#issuecomment-629426939
// check-pass

#![crate_type = "lib"]

use std::marker::PhantomData;

pub struct S<'a>
{
pub m1: PhantomData<&'a u8>,
pub m2: [u8; S::size()],
}

impl<'a> S<'a>
{
pub const fn size() -> usize { 1 }

pub fn new() -> Self
{
Self
{
m1: PhantomData,
m2: [0; Self::size()],
}
}
}
13 changes: 13 additions & 0 deletions src/test/ui/impl-trait/issue-68532.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// check-pass

pub struct A<'a>(&'a ());

impl<'a> A<'a> {
const N: usize = 68;

pub fn foo(&self) {
let _b = [0; Self::N];
}
}

fn main() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#![feature(impl_trait_in_bindings)]
#![allow(incomplete_features)]

fn main() {
const C: impl Copy = 0;
match C {
C | _ => {} //~ ERROR: opaque types cannot be used in patterns
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
error: opaque types cannot be used in patterns
--> $DIR/issue-71042-opaquely-typed-constant-used-in-pattern.rs:7:9
|
LL | C | _ => {}
| ^

error: aborting due to previous error

23 changes: 23 additions & 0 deletions src/test/ui/type-alias-impl-trait/issue-70121.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// check-pass

#![feature(type_alias_impl_trait)]

pub type Successors<'a> = impl Iterator<Item = &'a ()>;

pub fn f<'a>() -> Successors<'a> {
None.into_iter()
}

pub trait Tr {
type Item;
}

impl<'a> Tr for &'a () {
type Item = Successors<'a>;
}

pub fn kazusa<'a>() -> <&'a () as Tr>::Item {
None.into_iter()
}

fn main() {}

0 comments on commit 5109c96

Please sign in to comment.