From: Delan Azabani Date: Fri, 12 Jul 2019 04:54:52 +0000 (+1000) Subject: test `unsafe fn` and `async unsafe fn` calls in `unsafe { async || }` X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=5f8d0a1920de9973f980423cd29dbed2eed0b92c;p=rust.git test `unsafe fn` and `async unsafe fn` calls in `unsafe { async || }` --- diff --git a/src/test/ui/async-await/async-await.rs b/src/test/ui/async-await/async-await.rs index dbcba812a40..5ec99c5d183 100644 --- a/src/test/ui/async-await/async-await.rs +++ b/src/test/ui/async-await/async-await.rs @@ -3,7 +3,7 @@ // edition:2018 // aux-build:arc_wake.rs -#![feature(async_await, async_closure)] +#![feature(async_await)] extern crate arc_wake; @@ -70,7 +70,7 @@ fn async_nonmove_block(x: u8) -> impl Future { } } -// see async-closure.rs for async_closure +// see async-closure.rs for async_closure + async_closure_in_unsafe_block async fn async_fn(x: u8) -> u8 { wake_and_yield_once().await; diff --git a/src/test/ui/async-await/async-closure.rs b/src/test/ui/async-await/async-closure.rs index f5dc9e24d2d..925b54b3985 100644 --- a/src/test/ui/async-await/async-closure.rs +++ b/src/test/ui/async-await/async-closure.rs @@ -53,6 +53,21 @@ fn async_closure(x: u8) -> impl Future { })(x) } +fn async_closure_in_unsafe_block(x: u8) -> impl Future { + (unsafe { + async move |x: u8| unsafe_fn(unsafe_async_fn(x).await) + })(x) +} + +async unsafe fn unsafe_async_fn(x: u8) -> u8 { + wake_and_yield_once().await; + x +} + +unsafe fn unsafe_fn(x: u8) -> u8 { + x +} + fn test_future_yields_once_then_returns(f: F) where F: FnOnce(u8) -> Fut, @@ -77,5 +92,6 @@ macro_rules! test { test! { async_closure, + async_closure_in_unsafe_block, } } diff --git a/src/test/ui/async-await/await-macro.rs b/src/test/ui/async-await/await-macro.rs index 9ac0ab7c6c7..b9cd3903513 100644 --- a/src/test/ui/async-await/await-macro.rs +++ b/src/test/ui/async-await/await-macro.rs @@ -77,6 +77,12 @@ fn async_closure(x: u8) -> impl Future { })(x) } +fn async_closure_in_unsafe_block(x: u8) -> impl Future { + (unsafe { + async move |x: u8| unsafe_fn(await!(unsafe_async_fn(x))) + })(x) +} + async fn async_fn(x: u8) -> u8 { await!(wake_and_yield_once()); x @@ -193,6 +199,7 @@ macro_rules! test_with_borrow { async_block, async_nonmove_block, async_closure, + async_closure_in_unsafe_block, async_fn, generic_async_fn, async_fn_with_internal_borrow,