rust/tests/ui/issues/issue-16048.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

31 lines
701 B
Rust
Raw Normal View History

2014-10-16 19:40:21 +00:00
trait NoLifetime {
fn get<'p, T : Test<'p>>(&self) -> T;
//~^ NOTE lifetimes in impl do not match this method in trait
2014-10-16 19:40:21 +00:00
}
trait Test<'p> {
fn new(buf: &'p mut [u8]) -> Self;
}
struct Foo<'a> {
buf: &'a mut [u8],
}
impl<'a> Test<'a> for Foo<'a> {
fn new(buf: &'a mut [u8]) -> Foo<'a> {
Foo { buf: buf }
}
}
impl<'a> NoLifetime for Foo<'a> {
fn get<'p, T: Test<'a> + From<Foo<'a>>>(&self) -> T {
//~^ ERROR E0195
//~| NOTE lifetimes do not match method in trait
2015-04-14 12:23:02 +00:00
return *self as T;
//~^ ERROR non-primitive cast: `Foo<'a>` as `T`
//~| NOTE an `as` expression can only be used to convert between primitive types
2014-10-16 19:40:21 +00:00
}
}
fn main() {}