mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-01 19:23:50 +00:00
72b721f48e
When one of these tests fails, any compiler warnings will be printed to the console, which makes it harder to track down the actual reason for failure. (The outstanding warnings were found by temporarily adding `-Dwarnings` to the compiler arguments for `RunCoverage` in `src/tools/compiletest/src/runtest.rs`.)
111 lines
4.7 KiB
Plaintext
111 lines
4.7 KiB
Plaintext
LL| |// compile-flags: --edition=2018
|
|
LL| |
|
|
LL| 1|fn non_async_func() {
|
|
LL| 1| println!("non_async_func was covered");
|
|
LL| 1| let b = true;
|
|
LL| 1| if b {
|
|
LL| 1| println!("non_async_func println in block");
|
|
LL| 1| }
|
|
^0
|
|
LL| 1|}
|
|
LL| |
|
|
LL| |
|
|
LL| |
|
|
LL| |
|
|
LL| 1|async fn async_func() {
|
|
LL| 1| println!("async_func was covered");
|
|
LL| 1| let b = true;
|
|
LL| 1| if b {
|
|
LL| 1| println!("async_func println in block");
|
|
LL| 1| }
|
|
^0
|
|
LL| 1|}
|
|
LL| |
|
|
LL| |
|
|
LL| |
|
|
LL| |
|
|
LL| 1|async fn async_func_just_println() {
|
|
LL| 1| println!("async_func_just_println was covered");
|
|
LL| 1|}
|
|
LL| |
|
|
LL| 1|fn main() {
|
|
LL| 1| println!("codecovsample::main");
|
|
LL| 1|
|
|
LL| 1| non_async_func();
|
|
LL| 1|
|
|
LL| 1| executor::block_on(async_func());
|
|
LL| 1| executor::block_on(async_func_just_println());
|
|
LL| 1|}
|
|
LL| |
|
|
LL| |mod executor {
|
|
LL| | use core::{
|
|
LL| | future::Future,
|
|
LL| | pin::Pin,
|
|
LL| | task::{Context, Poll, RawWaker, RawWakerVTable, Waker},
|
|
LL| | };
|
|
LL| |
|
|
LL| 2| pub fn block_on<F: Future>(mut future: F) -> F::Output {
|
|
LL| 2| let mut future = unsafe { Pin::new_unchecked(&mut future) };
|
|
LL| 2| use std::hint::unreachable_unchecked;
|
|
LL| 2| static VTABLE: RawWakerVTable = RawWakerVTable::new(
|
|
LL| 2| |_| unsafe { unreachable_unchecked() }, // clone
|
|
^0
|
|
LL| 2| |_| unsafe { unreachable_unchecked() }, // wake
|
|
^0
|
|
LL| 2| |_| unsafe { unreachable_unchecked() }, // wake_by_ref
|
|
^0
|
|
LL| 2| |_| (),
|
|
LL| 2| );
|
|
LL| 2| let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &VTABLE)) };
|
|
LL| 2| let mut context = Context::from_waker(&waker);
|
|
LL| |
|
|
LL| | loop {
|
|
LL| 2| if let Poll::Ready(val) = future.as_mut().poll(&mut context) {
|
|
LL| 2| break val;
|
|
LL| 0| }
|
|
LL| | }
|
|
LL| 2| }
|
|
------------------
|
|
| async2::executor::block_on::<async2::async_func::{closure#0}>:
|
|
| LL| 1| pub fn block_on<F: Future>(mut future: F) -> F::Output {
|
|
| LL| 1| let mut future = unsafe { Pin::new_unchecked(&mut future) };
|
|
| LL| 1| use std::hint::unreachable_unchecked;
|
|
| LL| 1| static VTABLE: RawWakerVTable = RawWakerVTable::new(
|
|
| LL| 1| |_| unsafe { unreachable_unchecked() }, // clone
|
|
| LL| 1| |_| unsafe { unreachable_unchecked() }, // wake
|
|
| LL| 1| |_| unsafe { unreachable_unchecked() }, // wake_by_ref
|
|
| LL| 1| |_| (),
|
|
| LL| 1| );
|
|
| LL| 1| let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &VTABLE)) };
|
|
| LL| 1| let mut context = Context::from_waker(&waker);
|
|
| LL| |
|
|
| LL| | loop {
|
|
| LL| 1| if let Poll::Ready(val) = future.as_mut().poll(&mut context) {
|
|
| LL| 1| break val;
|
|
| LL| 0| }
|
|
| LL| | }
|
|
| LL| 1| }
|
|
------------------
|
|
| async2::executor::block_on::<async2::async_func_just_println::{closure#0}>:
|
|
| LL| 1| pub fn block_on<F: Future>(mut future: F) -> F::Output {
|
|
| LL| 1| let mut future = unsafe { Pin::new_unchecked(&mut future) };
|
|
| LL| 1| use std::hint::unreachable_unchecked;
|
|
| LL| 1| static VTABLE: RawWakerVTable = RawWakerVTable::new(
|
|
| LL| 1| |_| unsafe { unreachable_unchecked() }, // clone
|
|
| LL| 1| |_| unsafe { unreachable_unchecked() }, // wake
|
|
| LL| 1| |_| unsafe { unreachable_unchecked() }, // wake_by_ref
|
|
| LL| 1| |_| (),
|
|
| LL| 1| );
|
|
| LL| 1| let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &VTABLE)) };
|
|
| LL| 1| let mut context = Context::from_waker(&waker);
|
|
| LL| |
|
|
| LL| | loop {
|
|
| LL| 1| if let Poll::Ready(val) = future.as_mut().poll(&mut context) {
|
|
| LL| 1| break val;
|
|
| LL| 0| }
|
|
| LL| | }
|
|
| LL| 1| }
|
|
------------------
|
|
LL| |}
|
|
|