about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-09-23 10:09:22 +0000
committerbors <bors@rust-lang.org>2018-09-23 10:09:22 +0000
commit2287a7a6e293cfcb3bbbdaf3ce2dca5dd2d3184a (patch)
tree34343382fd1ed94d646423f0c2106df0ce33d0ab /src/test
parent317ae05a7e4ee5324cc006eda877eb8f2eb57898 (diff)
parent1b00f0b9fa92daa489510b8718ce56130420795f (diff)
downloadrust-2287a7a6e293cfcb3bbbdaf3ce2dca5dd2d3184a.tar.gz
rust-2287a7a6e293cfcb3bbbdaf3ce2dca5dd2d3184a.zip
Auto merge of #54339 - cramertj:no-cx, r=aturon
Remove spawning from task::Context

r? @aturon

cc https://github.com/rust-lang-nursery/wg-net/issues/56
Diffstat (limited to 'src/test')
-rw-r--r--src/test/run-pass/async-await.rs22
-rw-r--r--src/test/run-pass/futures-api.rs34
2 files changed, 15 insertions, 41 deletions
diff --git a/src/test/run-pass/async-await.rs b/src/test/run-pass/async-await.rs
index 3301e6a4637..0cd9bad03af 100644
--- a/src/test/run-pass/async-await.rs
+++ b/src/test/run-pass/async-await.rs
@@ -18,10 +18,8 @@ use std::sync::{
     Arc,
     atomic::{self, AtomicUsize},
 };
-use std::future::FutureObj;
 use std::task::{
-    Context, Poll, Wake,
-    Spawn, SpawnObjError,
+    LocalWaker, Poll, Wake,
     local_waker_from_nonlocal,
 };
 
@@ -35,24 +33,17 @@ impl Wake for Counter {
     }
 }
 
-struct NoopSpawner;
-impl Spawn for NoopSpawner {
-    fn spawn_obj(&mut self, _: FutureObj<'static, ()>) -> Result<(), SpawnObjError> {
-        Ok(())
-    }
-}
-
 struct WakeOnceThenComplete(bool);
 
 fn wake_and_yield_once() -> WakeOnceThenComplete { WakeOnceThenComplete(false) }
 
 impl Future for WakeOnceThenComplete {
     type Output = ();
-    fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll<()> {
+    fn poll(mut self: Pin<&mut Self>, lw: &LocalWaker) -> Poll<()> {
         if self.0 {
             Poll::Ready(())
         } else {
-            cx.waker().wake();
+            lw.wake();
             self.0 = true;
             Poll::Pending
         }
@@ -150,13 +141,10 @@ where
     let mut fut = Box::pinned(f(9));
     let counter = Arc::new(Counter { wakes: AtomicUsize::new(0) });
     let waker = local_waker_from_nonlocal(counter.clone());
-    let spawner = &mut NoopSpawner;
-    let cx = &mut Context::new(&waker, spawner);
-
     assert_eq!(0, counter.wakes.load(atomic::Ordering::SeqCst));
-    assert_eq!(Poll::Pending, fut.as_mut().poll(cx));
+    assert_eq!(Poll::Pending, fut.as_mut().poll(&waker));
     assert_eq!(1, counter.wakes.load(atomic::Ordering::SeqCst));
-    assert_eq!(Poll::Ready(9), fut.as_mut().poll(cx));
+    assert_eq!(Poll::Ready(9), fut.as_mut().poll(&waker));
 }
 
 fn main() {
diff --git a/src/test/run-pass/futures-api.rs b/src/test/run-pass/futures-api.rs
index 6e757fb4f9a..18865e4a076 100644
--- a/src/test/run-pass/futures-api.rs
+++ b/src/test/run-pass/futures-api.rs
@@ -18,11 +18,8 @@ use std::sync::{
     Arc,
     atomic::{self, AtomicUsize},
 };
-use std::future::FutureObj;
 use std::task::{
-    Context, Poll,
-    Wake, Waker, LocalWaker,
-    Spawn, SpawnObjError,
+    Poll, Wake, Waker, LocalWaker,
     local_waker, local_waker_from_nonlocal,
 };
 
@@ -41,24 +38,17 @@ impl Wake for Counter {
     }
 }
 
-struct NoopSpawner;
-
-impl Spawn for NoopSpawner {
-    fn spawn_obj(&mut self, _: FutureObj<'static, ()>) -> Result<(), SpawnObjError> {
-        Ok(())
-    }
-}
-
 struct MyFuture;
 
 impl Future for MyFuture {
     type Output = ();
-    fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
-        // Ensure all the methods work appropriately
-        cx.waker().wake();
-        cx.waker().wake();
-        cx.local_waker().wake();
-        cx.spawner().spawn_obj(Box::pinned(MyFuture).into()).unwrap();
+    fn poll(self: Pin<&mut Self>, lw: &LocalWaker) -> Poll<Self::Output> {
+        // Wake once locally
+        lw.wake();
+        // Wake twice non-locally
+        let waker = lw.clone().into_waker();
+        waker.wake();
+        waker.wake();
         Poll::Ready(())
     }
 }
@@ -69,9 +59,7 @@ fn test_local_waker() {
         nonlocal_wakes: AtomicUsize::new(0),
     });
     let waker = unsafe { local_waker(counter.clone()) };
-    let spawner = &mut NoopSpawner;
-    let cx = &mut Context::new(&waker, spawner);
-    assert_eq!(Poll::Ready(()), Pin::new(&mut MyFuture).poll(cx));
+    assert_eq!(Poll::Ready(()), Pin::new(&mut MyFuture).poll(&waker));
     assert_eq!(1, counter.local_wakes.load(atomic::Ordering::SeqCst));
     assert_eq!(2, counter.nonlocal_wakes.load(atomic::Ordering::SeqCst));
 }
@@ -82,9 +70,7 @@ fn test_local_as_nonlocal_waker() {
         nonlocal_wakes: AtomicUsize::new(0),
     });
     let waker: LocalWaker = local_waker_from_nonlocal(counter.clone());
-    let spawner = &mut NoopSpawner;
-    let cx = &mut Context::new(&waker, spawner);
-    assert_eq!(Poll::Ready(()), Pin::new(&mut MyFuture).poll(cx));
+    assert_eq!(Poll::Ready(()), Pin::new(&mut MyFuture).poll(&waker));
     assert_eq!(0, counter.local_wakes.load(atomic::Ordering::SeqCst));
     assert_eq!(3, counter.nonlocal_wakes.load(atomic::Ordering::SeqCst));
 }