Skip to content

Commit

Permalink
Rollup merge of rust-lang#60627 - matklad:test, r=estebank
Browse files Browse the repository at this point in the history
test for rust-lang#50518

It was fixed somewhere between 1.28.0 and 1.31.1

closes rust-lang#50518

r? @estebank

Where's the best place to add this test? I *think* we want "compile-pass" for this test (no need to run a binary, and not running saves us a millisecond of process creation) , but there's no compile-pass anymore.

Should this be UI test with empty stdout, stderr and zero return code?
  • Loading branch information
Centril committed May 8, 2019
2 parents b04f87f + c87d2cc commit d20b692
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions src/test/ui/issues/issue-50518.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// compile-pass
use std::marker::PhantomData;

struct Meta<A> {
value: i32,
type_: PhantomData<A>
}

trait MetaTrait {
fn get_value(&self) -> i32;
}

impl<A> MetaTrait for Meta<A> {
fn get_value(&self) -> i32 { self.value }
}

trait Bar {
fn get_const(&self) -> &dyn MetaTrait;
}

struct Foo<A> {
_value: A
}

impl<A: 'static> Foo<A> {
const CONST: &'static dyn MetaTrait = &Meta::<Self> {
value: 10,
type_: PhantomData
};
}

impl<A: 'static> Bar for Foo<A> {
fn get_const(&self) -> &dyn MetaTrait { Self::CONST }
}

fn main() {
let foo = Foo::<i32> { _value: 10 };
let bar: &dyn Bar = &foo;
println!("const {}", bar.get_const().get_value());
}

0 comments on commit d20b692

Please sign in to comment.