]> git.lizzy.rs Git - rust.git/commitdiff
internal: add future to minicore
authorAleksey Kladov <aleksey.kladov@gmail.com>
Tue, 15 Jun 2021 19:49:00 +0000 (22:49 +0300)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Tue, 15 Jun 2021 19:49:00 +0000 (22:49 +0300)
crates/hir_ty/src/tests/traits.rs
crates/test_utils/src/minicore.rs

index fb13e3ac5ddd98a439728bdc823547b5ed1189da..33689e08192b62ddf8fb8803201dc3981da0b62b 100644 (file)
@@ -6,10 +6,10 @@
 fn infer_await() {
     check_types(
         r#"
-//- /main.rs crate:main deps:core
+//- minicore: future
 struct IntFuture;
 
-impl Future for IntFuture {
+impl core::future::Future for IntFuture {
     type Output = u64;
 }
 
@@ -18,16 +18,6 @@ fn test() {
     let v = r.await;
     v;
 } //^ u64
-
-//- /core.rs crate:core
-pub mod prelude {
-    pub mod rust_2018 {
-        #[lang = "future_trait"]
-        pub trait Future {
-            type Output;
-        }
-    }
-}
 "#,
     );
 }
index 8c0d122dc83c35c8007858f02141b916a7049195..127d06e59715b57f88e1a4a709c911388efdb4d8 100644 (file)
@@ -14,6 +14,8 @@
 //!     unsize: sized
 //!     deref: sized
 //!     coerce_unsized: unsize
+//!     pin:
+//!     future: pin
 
 pub mod marker {
     // region:sized
@@ -113,6 +115,41 @@ pub fn len(&self) -> usize {
 }
 // endregion:slice
 
+// region:pin
+pub mod pin {
+    #[lang = "pin"]
+    #[fundamental]
+    pub struct Pin<P> {
+        pointer: P,
+    }
+}
+// endregion:pin
+
+// region:future
+pub mod future {
+    use crate::{pin::Pin, task::{Poll, Context}};
+
+    #[lang = "future_trait"]
+    pub trait Future {
+        type Output;
+        #[lang = "poll"]
+        fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>;
+    }
+}
+pub mod task {
+    pub enum Poll<T> {
+        #[lang = "Ready"]
+        Ready(T),
+        #[lang = "Pending"]
+        Pending,
+    }
+
+    pub struct Context<'a> {
+        waker: &'a (),
+    }
+}
+// endregion:future
+
 pub mod prelude {
     pub mod v1 {
         pub use crate::marker::Sized; // :sized