summaryrefslogtreecommitdiffstats
path: root/tests/ui/dropck/transitive-outlives.rs
blob: d071664abdeb6b07d15750585ed7aa7283494d0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 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>
where
    'a: 'c,
    //[bad]~^ ERROR `Drop` impl requires `'a: 'c`
{
    fn drop(&mut self) {}
}

fn main() {}