Skip to content

Commit

Permalink
fix async-fn test
Browse files Browse the repository at this point in the history
  • Loading branch information
RalfJung committed Feb 15, 2019
1 parent 15722fa commit e630175
Showing 1 changed file with 17 additions and 11 deletions.
28 changes: 17 additions & 11 deletions tests/run-pass/async-fn.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
futures_api,
)]

use std::{future::Future, pin::Pin, task::Poll};
use std::{future::Future, pin::Pin, task::Poll, ptr};
use std::task::{Waker, RawWaker, RawWakerVTable};

// See if we can run a basic `async fn`
pub async fn foo(x: &u32, y: u32) -> u32 {
Expand All @@ -17,18 +18,23 @@ pub async fn foo(x: &u32, y: u32) -> u32 {
*x + y + *a
}

fn main() {
use std::{sync::Arc, task::{Wake, local_waker}};
fn raw_waker_clone(_this: *const ()) -> RawWaker {
panic!("unimplemented");
}
fn raw_waker_wake(_this: *const ()) {
panic!("unimplemented");
}
fn raw_waker_drop(_this: *const ()) {}

struct NoWake;
impl Wake for NoWake {
fn wake(_arc_self: &Arc<Self>) {
panic!();
}
}
static RAW_WAKER: RawWakerVTable = RawWakerVTable {
clone: raw_waker_clone,
wake: raw_waker_wake,
drop: raw_waker_drop,
};

let lw = unsafe { local_waker(Arc::new(NoWake)) };
fn main() {
let x = 5;
let mut fut = foo(&x, 7);
assert_eq!(unsafe { Pin::new_unchecked(&mut fut) }.poll(&lw), Poll::Ready(31));
let waker = unsafe { Waker::new_unchecked(RawWaker::new(ptr::null(), &RAW_WAKER)) };
assert_eq!(unsafe { Pin::new_unchecked(&mut fut) }.poll(&waker), Poll::Ready(31));
}

0 comments on commit e630175

Please sign in to comment.