summaryrefslogtreecommitdiffstats
path: root/src/test/ui/issues/issue-24805-dropck-itemless.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/issues/issue-24805-dropck-itemless.rs')
-rw-r--r--src/test/ui/issues/issue-24805-dropck-itemless.rs77
1 files changed, 0 insertions, 77 deletions
diff --git a/src/test/ui/issues/issue-24805-dropck-itemless.rs b/src/test/ui/issues/issue-24805-dropck-itemless.rs
deleted file mode 100644
index 45761b61c..000000000
--- a/src/test/ui/issues/issue-24805-dropck-itemless.rs
+++ /dev/null
@@ -1,77 +0,0 @@
-// run-pass
-
-// Check that item-less traits do not cause dropck to inject extra
-// region constraints.
-
-#![allow(non_camel_case_types)]
-
-#![feature(dropck_eyepatch)]
-
-trait UserDefined { }
-
-impl UserDefined for i32 { }
-impl<'a, T> UserDefined for &'a T { }
-
-// e.g., `impl_drop!(Send, D_Send)` expands to:
-// ```rust
-// struct D_Send<T:Send>(T);
-// impl<T:Send> Drop for D_Send<T> { fn drop(&mut self) { } }
-// ```
-macro_rules! impl_drop {
- ($Bound:ident, $Id:ident) => {
- struct $Id<T: $Bound>(#[allow(unused_tuple_struct_fields)] T);
- unsafe impl <#[may_dangle] T: $Bound> Drop for $Id<T> {
- fn drop(&mut self) { }
- }
- }
-}
-
-impl_drop!{Send, D_Send}
-impl_drop!{Sized, D_Sized}
-
-// See note below regarding Issue 24895
-// impl_drop!{Copy, D_Copy}
-
-impl_drop!{Sync, D_Sync}
-impl_drop!{UserDefined, D_UserDefined}
-
-macro_rules! body {
- ($id:ident) => { {
- // `_d` and `d1` are assigned the *same* lifetime by region inference ...
- let (_d, d1);
-
- d1 = $id(1);
- // ... we store a reference to `d1` within `_d` ...
- _d = $id(&d1);
-
- // ... a *conservative* dropck will thus complain, because it
- // thinks Drop of _d could access the already dropped `d1`.
- } }
-}
-
-fn f_send() { body!(D_Send) }
-fn f_sized() { body!(D_Sized) }
-fn f_sync() { body!(D_Sync) }
-
-// Issue 24895: Copy: Clone implies `impl<T:Copy> Drop for ...` can
-// access a user-defined clone() method, which causes this test case
-// to fail.
-//
-// If 24895 is resolved by removing the `Copy: Clone` relationship,
-// then this definition and the call below should be uncommented. If
-// it is resolved by deciding to keep the `Copy: Clone` relationship,
-// then this comment and the associated bits of code can all be
-// removed.
-
-// fn f_copy() { body!(D_Copy) }
-
-fn f_userdefined() { body!(D_UserDefined) }
-
-fn main() {
- f_send();
- f_sized();
- // See note above regarding Issue 24895.
- // f_copy();
- f_sync();
- f_userdefined();
-}