//@ check-pass | |
#![feature(return_type_notation)] | |
trait Foo { | |
fn borrow(&mut self) -> impl Sized + '_; | |
} | |
fn live_past_borrow<T: Foo<borrow(..): 'static>>(mut t: T) { | |
let x = t.borrow(); | |
drop(t); | |
drop(x); | |
} | |
// Test that the `'_` item bound in `borrow` does not cause us to | |
// overlook the `'static` RTN bound. | |
fn overlapping_mut<T: Foo<borrow(..): 'static>>(mut t: T) { | |
let x = t.borrow(); | |
let x = t.borrow(); | |
} | |
fn main() {} |