about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-04-07 09:48:12 +0000
committerbors <bors@rust-lang.org>2019-04-07 09:48:12 +0000
commit4fb888bf04d2f1913e78e9eae51ac5695df1dc01 (patch)
tree514cc7638f219d6113118c4df39fda52e08f5c44 /src/test
parentdec0a98c4b392b5fd153ba8b944c496218717813 (diff)
parent1691e06db661a19a5e25276c18cd165386f027bb (diff)
downloadrust-4fb888bf04d2f1913e78e9eae51ac5695df1dc01.tar.gz
rust-4fb888bf04d2f1913e78e9eae51ac5695df1dc01.zip
Auto merge of #59119 - cramertj:cx-back, r=withoutboats
Future-proof the Futures API

cc https://github.com/rust-lang/rust/issues/59113, @carllerche, @rust-lang/libs

r? @withoutboats
Diffstat (limited to 'src/test')
-rw-r--r--src/test/compile-fail/must_use-in-stdlib-traits.rs4
-rw-r--r--src/test/run-pass/async-await.rs15
-rw-r--r--src/test/run-pass/auxiliary/arc_wake.rs14
-rw-r--r--src/test/run-pass/futures-api.rs17
4 files changed, 25 insertions, 25 deletions
diff --git a/src/test/compile-fail/must_use-in-stdlib-traits.rs b/src/test/compile-fail/must_use-in-stdlib-traits.rs
index b4f07ab3321..503b39e181a 100644
--- a/src/test/compile-fail/must_use-in-stdlib-traits.rs
+++ b/src/test/compile-fail/must_use-in-stdlib-traits.rs
@@ -4,7 +4,7 @@
 use std::iter::Iterator;
 use std::future::Future;
 
-use std::task::{Poll, Waker};
+use std::task::{Context, Poll};
 use std::pin::Pin;
 use std::unimplemented;
 
@@ -13,7 +13,7 @@ struct MyFuture;
 impl Future for MyFuture {
    type Output = u32;
 
-   fn poll(self: Pin<&mut Self>, waker: &Waker) -> Poll<u32> {
+   fn poll(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<u32> {
       Poll::Pending
    }
 }
diff --git a/src/test/run-pass/async-await.rs b/src/test/run-pass/async-await.rs
index 72af5162992..4f5f7724ad0 100644
--- a/src/test/run-pass/async-await.rs
+++ b/src/test/run-pass/async-await.rs
@@ -1,7 +1,7 @@
 // edition:2018
 // aux-build:arc_wake.rs
 
-#![feature(arbitrary_self_types, async_await, await_macro, futures_api)]
+#![feature(async_await, await_macro, futures_api)]
 
 extern crate arc_wake;
 
@@ -11,9 +11,7 @@ use std::sync::{
     Arc,
     atomic::{self, AtomicUsize},
 };
-use std::task::{
-    Poll, Waker,
-};
+use std::task::{Context, Poll};
 use arc_wake::ArcWake;
 
 struct Counter {
@@ -32,11 +30,11 @@ fn wake_and_yield_once() -> WakeOnceThenComplete { WakeOnceThenComplete(false) }
 
 impl Future for WakeOnceThenComplete {
     type Output = ();
-    fn poll(mut self: Pin<&mut Self>, waker: &Waker) -> Poll<()> {
+    fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<()> {
         if self.0 {
             Poll::Ready(())
         } else {
-            waker.wake();
+            cx.waker().wake();
             self.0 = true;
             Poll::Pending
         }
@@ -146,10 +144,11 @@ where
     let mut fut = Box::pin(f(9));
     let counter = Arc::new(Counter { wakes: AtomicUsize::new(0) });
     let waker = ArcWake::into_waker(counter.clone());
+    let mut cx = Context::from_waker(&waker);
     assert_eq!(0, counter.wakes.load(atomic::Ordering::SeqCst));
-    assert_eq!(Poll::Pending, fut.as_mut().poll(&waker));
+    assert_eq!(Poll::Pending, fut.as_mut().poll(&mut cx));
     assert_eq!(1, counter.wakes.load(atomic::Ordering::SeqCst));
-    assert_eq!(Poll::Ready(9), fut.as_mut().poll(&waker));
+    assert_eq!(Poll::Ready(9), fut.as_mut().poll(&mut cx));
 }
 
 fn main() {
diff --git a/src/test/run-pass/auxiliary/arc_wake.rs b/src/test/run-pass/auxiliary/arc_wake.rs
index 034e378af7f..74ec56f5517 100644
--- a/src/test/run-pass/auxiliary/arc_wake.rs
+++ b/src/test/run-pass/auxiliary/arc_wake.rs
@@ -1,19 +1,19 @@
 // edition:2018
 
-#![feature(arbitrary_self_types, futures_api)]
+#![feature(futures_api)]
 
 use std::sync::Arc;
 use std::task::{
-    Poll, Waker, RawWaker, RawWakerVTable,
+    Waker, RawWaker, RawWakerVTable,
 };
 
 macro_rules! waker_vtable {
     ($ty:ident) => {
-        &RawWakerVTable {
-            clone: clone_arc_raw::<$ty>,
-            drop: drop_arc_raw::<$ty>,
-            wake: wake_arc_raw::<$ty>,
-        }
+        &RawWakerVTable::new(
+            clone_arc_raw::<$ty>,
+            wake_arc_raw::<$ty>,
+            drop_arc_raw::<$ty>,
+        )
     };
 }
 
diff --git a/src/test/run-pass/futures-api.rs b/src/test/run-pass/futures-api.rs
index fd4b585d345..5d0b0db510f 100644
--- a/src/test/run-pass/futures-api.rs
+++ b/src/test/run-pass/futures-api.rs
@@ -1,7 +1,6 @@
 // aux-build:arc_wake.rs
 
-#![feature(arbitrary_self_types, futures_api)]
-#![allow(unused)]
+#![feature(futures_api)]
 
 extern crate arc_wake;
 
@@ -12,7 +11,7 @@ use std::sync::{
     atomic::{self, AtomicUsize},
 };
 use std::task::{
-    Poll, Waker,
+    Context, Poll,
 };
 use arc_wake::ArcWake;
 
@@ -30,8 +29,9 @@ struct MyFuture;
 
 impl Future for MyFuture {
     type Output = ();
-    fn poll(self: Pin<&mut Self>, waker: &Waker) -> Poll<Self::Output> {
+    fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
         // Wake twice
+        let waker = cx.waker();
         waker.wake();
         waker.wake();
         Poll::Ready(())
@@ -44,10 +44,11 @@ fn test_waker() {
     });
     let waker = ArcWake::into_waker(counter.clone());
     assert_eq!(2, Arc::strong_count(&counter));
-
-    assert_eq!(Poll::Ready(()), Pin::new(&mut MyFuture).poll(&waker));
-    assert_eq!(2, counter.wakes.load(atomic::Ordering::SeqCst));
-
+    {
+        let mut context = Context::from_waker(&waker);
+        assert_eq!(Poll::Ready(()), Pin::new(&mut MyFuture).poll(&mut context));
+        assert_eq!(2, counter.wakes.load(atomic::Ordering::SeqCst));
+    }
     drop(waker);
     assert_eq!(1, Arc::strong_count(&counter));
 }