]>
Commit | Line | Data |
---|---|---|
1a4d82fc JJ |
1 | #![feature(box_syntax)] |
2 | ||
3 | trait X { | |
4 | fn get_i(&self) -> isize; | |
5 | } | |
6 | ||
7 | ||
8 | struct B { | |
9 | i: isize | |
10 | } | |
11 | ||
12 | impl X for B { | |
13 | fn get_i(&self) -> isize { | |
14 | self.i | |
15 | } | |
16 | } | |
17 | ||
18 | struct A<'a> { | |
dc9dc135 | 19 | p: &'a (dyn X + 'a) |
1a4d82fc JJ |
20 | } |
21 | ||
dc9dc135 | 22 | fn make_a<'a>(p: &'a dyn X) -> A<'a> { |
1a4d82fc JJ |
23 | A { p: p } |
24 | } | |
25 | ||
26 | fn make_make_a<'a>() -> A<'a> { | |
27 | let b: Box<B> = box B {i:1}; | |
48663c56 XL |
28 | let bb: &B = &*b; |
29 | make_a(bb) //~ ERROR cannot return value referencing local data `*b` | |
1a4d82fc JJ |
30 | } |
31 | ||
32 | fn main() { | |
33 | let _a = make_make_a(); | |
34 | } |