diff options
Diffstat (limited to 'tests/ui/generator/issue-57017.rs')
-rw-r--r-- | tests/ui/generator/issue-57017.rs | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/tests/ui/generator/issue-57017.rs b/tests/ui/generator/issue-57017.rs deleted file mode 100644 index bb2d6679b..000000000 --- a/tests/ui/generator/issue-57017.rs +++ /dev/null @@ -1,55 +0,0 @@ -// build-pass -#![feature(generators, negative_impls)] -#![allow(dropping_references, dropping_copy_types)] - -macro_rules! type_combinations { - ( - $( $name:ident => { $( $tt:tt )* } );* - ) => { $( - mod $name { - pub mod unsync { - $( $tt )* - - impl !Sync for Client {} - } - pub mod unsend { - $( $tt )* - - impl !Send for Client {} - } - } - - // This is the same bug as issue 57017, but using yield instead of await - { - let g = move || match drop(&$name::unsync::Client::default()) { - _status => yield, - }; - assert_send(g); - } - - // This tests that `Client` is properly considered to be dropped after moving it into the - // function. - { - let g = move || match drop($name::unsend::Client::default()) { - _status => yield, - }; - assert_send(g); - } - )* } -} - -fn assert_send<T: Send>(_thing: T) {} - -fn main() { - type_combinations!( - copy => { #[derive(Copy, Clone, Default)] pub struct Client; }; - derived_drop => { #[derive(Default)] pub struct Client { pub nickname: String } }; - significant_drop => { - #[derive(Default)] - pub struct Client; - impl Drop for Client { - fn drop(&mut self) {} - } - } - ); -} |