diff options
Diffstat (limited to 'src/test/ui/span/issue-24805-dropck-child-has-items-via-parent.rs')
-rw-r--r-- | src/test/ui/span/issue-24805-dropck-child-has-items-via-parent.rs | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/src/test/ui/span/issue-24805-dropck-child-has-items-via-parent.rs b/src/test/ui/span/issue-24805-dropck-child-has-items-via-parent.rs deleted file mode 100644 index 9c772052f..000000000 --- a/src/test/ui/span/issue-24805-dropck-child-has-items-via-parent.rs +++ /dev/null @@ -1,37 +0,0 @@ -// Check that child trait who only has items via its *parent* trait -// does cause dropck to inject extra region constraints. - -#![allow(non_camel_case_types)] - -trait Parent { fn foo(&self); } -trait Child: Parent { } - -impl Parent for i32 { fn foo(&self) { } } -impl<'a> Parent for &'a D_Child<i32> { - fn foo(&self) { - println!("accessing child value: {}", self.0); - } -} - -impl Child for i32 { } -impl<'a> Child for &'a D_Child<i32> { } - -struct D_Child<T:Child>(T); -impl <T:Child> Drop for D_Child<T> { fn drop(&mut self) { self.0.foo() } } - -fn f_child() { - // `_d` and `d1` are assigned the *same* lifetime by region inference ... - let (_d, d1); - - d1 = D_Child(1); - // ... we store a reference to `d1` within `_d` ... - _d = D_Child(&d1); - //~^ ERROR `d1` does not live long enough - - // ... dropck *should* complain, because Drop of _d could (and - // does) access the already dropped `d1` via the `foo` method. -} - -fn main() { - f_child(); -} |