diff options
Diffstat (limited to 'tests/ui/regions/issue-12470.rs')
-rw-r--r-- | tests/ui/regions/issue-12470.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/ui/regions/issue-12470.rs b/tests/ui/regions/issue-12470.rs new file mode 100644 index 000000000..d8f2abb0c --- /dev/null +++ b/tests/ui/regions/issue-12470.rs @@ -0,0 +1,34 @@ +trait X { + fn get_i(&self) -> isize; +} + + + + +struct B { + i: isize +} + +impl X for B { + fn get_i(&self) -> isize { + self.i + } +} + +struct A<'a> { + p: &'a (dyn X + 'a) +} + +fn make_a<'a>(p: &'a dyn X) -> A<'a> { + A { p: p } +} + +fn make_make_a<'a>() -> A<'a> { + let b: Box<B> = Box::new(B { i: 1 }); + let bb: &B = &*b; + make_a(bb) //~ ERROR cannot return value referencing local data `*b` +} + +fn main() { + let _a = make_make_a(); +} |