diff options
| author | Zalathar <Zalathar@users.noreply.github.com> | 2023-12-19 22:17:10 +1100 |
|---|---|---|
| committer | Zalathar <Zalathar@users.noreply.github.com> | 2023-12-20 18:48:04 +1100 |
| commit | 4ae792036e2207aff742df30ab1955b1a6cb97e2 (patch) | |
| tree | 3d4bf5b2e0e95cb63938a8c7ea4b35b4f0f73251 /tests/coverage/async_block.coverage | |
| parent | 5810deef6941025e6f60bb9a5f7b2a6ca8a9bf76 (diff) | |
| download | rust-4ae792036e2207aff742df30ab1955b1a6cb97e2.tar.gz rust-4ae792036e2207aff742df30ab1955b1a6cb97e2.zip | |
coverage: Add a test for `async` blocks
We have coverage tests that use async functions, but none that use async blocks.
Diffstat (limited to 'tests/coverage/async_block.coverage')
| -rw-r--r-- | tests/coverage/async_block.coverage | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/coverage/async_block.coverage b/tests/coverage/async_block.coverage new file mode 100644 index 00000000000..297397ca26c --- /dev/null +++ b/tests/coverage/async_block.coverage @@ -0,0 +1,37 @@ + LL| |#![feature(coverage_attribute)] + LL| |#![feature(noop_waker)] + LL| |// edition: 2021 + LL| | + LL| 1|fn main() { + LL| 17| for i in 0..16 { + ^16 + LL| 16| let future = async { + LL| 16| if i >= 12 { + LL| 4| println!("big"); + LL| 12| } else { + LL| 12| println!("small"); + LL| 12| } + LL| 16| }; + LL| 16| executor::block_on(future); + LL| 16| } + LL| 1|} + LL| | + LL| |mod executor { + LL| | use core::future::Future; + LL| | use core::pin::pin; + LL| | use core::task::{Context, Poll, Waker}; + LL| | + LL| | #[coverage(off)] + LL| | pub fn block_on<F: Future>(mut future: F) -> F::Output { + LL| | let mut future = pin!(future); + LL| | let waker = Waker::noop(); + LL| | let mut context = Context::from_waker(&waker); + LL| | + LL| | loop { + LL| | if let Poll::Ready(val) = future.as_mut().poll(&mut context) { + LL| | break val; + LL| | } + LL| | } + LL| | } + LL| |} + |
