//@ revisions: good bad | |
//@[good] check-pass | |
use std::marker::PhantomData; | |
use std::ops::Drop; | |
struct DropMe<'a, 'b: 'a, 'c: 'b>(PhantomData<&'a ()>, PhantomData<&'b ()>, PhantomData<&'c ()>); | |
#[cfg(good)] | |
impl<'a, 'b, 'c> Drop for DropMe<'a, 'b, 'c> | |
where | |
'c: 'a, | |
{ | |
fn drop(&mut self) {} | |
} | |
#[cfg(bad)] | |
impl<'a, 'b, 'c> Drop for DropMe<'a, 'b, 'c> | |
//[bad]~^ ERROR `Drop` impl requires `'a: 'c` | |
where | |
'a: 'c, | |
{ | |
fn drop(&mut self) {} | |
} | |
fn main() {} |