diff --git a/crates/hir_ty/src/tests/traits.rs b/crates/hir_ty/src/tests/traits.rs index fb13e3ac5d..33689e0819 100644 --- a/crates/hir_ty/src/tests/traits.rs +++ b/crates/hir_ty/src/tests/traits.rs @@ -6,10 +6,10 @@ use super::{check_infer, check_infer_with_mismatches, check_types}; 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; - } - } -} "#, ); } diff --git a/crates/test_utils/src/minicore.rs b/crates/test_utils/src/minicore.rs index 8c0d122dc8..127d06e597 100644 --- a/crates/test_utils/src/minicore.rs +++ b/crates/test_utils/src/minicore.rs @@ -14,6 +14,8 @@ //! unsize: sized //! deref: sized //! coerce_unsized: unsize +//! pin: +//! future: pin pub mod marker { // region:sized @@ -113,6 +115,41 @@ pub mod slice { } // endregion:slice +// region:pin +pub mod pin { + #[lang = "pin"] + #[fundamental] + pub struct Pin
{
+ 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