Unnamed repository; edit this file 'description' to name the repository.
Provide `Future::Output` and `Iterator` lang items
Chayim Refael Friedman 2024-08-25
parent 3712bb7 · commit 34920dd
-rw-r--r--crates/hir-def/src/lang_item.rs2
-rw-r--r--crates/ide/src/hover/tests.rs6
-rw-r--r--crates/intern/src/symbol/symbols.rs2
-rw-r--r--crates/test-utils/src/minicore.rs2
4 files changed, 9 insertions, 3 deletions
diff --git a/crates/hir-def/src/lang_item.rs b/crates/hir-def/src/lang_item.rs
index f7c7f72139..cdcd7208f3 100644
--- a/crates/hir-def/src/lang_item.rs
+++ b/crates/hir-def/src/lang_item.rs
@@ -461,6 +461,7 @@ language_item_table! {
Context, sym::Context, context, Target::Struct, GenericRequirement::None;
FuturePoll, sym::poll, future_poll_fn, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
+ FutureOutput, sym::future_output, future_output, Target::TypeAlias, GenericRequirement::None;
Option, sym::Option, option_type, Target::Enum, GenericRequirement::None;
OptionSome, sym::Some, option_some_variant, Target::Variant, GenericRequirement::None;
@@ -475,6 +476,7 @@ language_item_table! {
IntoFutureIntoFuture, sym::into_future, into_future_fn, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
IntoIterIntoIter, sym::into_iter, into_iter_fn, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
IteratorNext, sym::next, next_fn, Target::Method(MethodKind::Trait { body: false}), GenericRequirement::None;
+ Iterator, sym::iterator, iterator, Target::Trait, GenericRequirement::None;
PinNewUnchecked, sym::new_unchecked, new_unchecked_fn, Target::Method(MethodKind::Inherent), GenericRequirement::None;
diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs
index 8b60e562d7..9585bdbe4c 100644
--- a/crates/ide/src/hover/tests.rs
+++ b/crates/ide/src/hover/tests.rs
@@ -8465,7 +8465,7 @@ impl Iterator for S {
file_id: FileId(
1,
),
- full_range: 7800..8008,
+ full_range: 7800..8042,
focus_range: 7865..7871,
name: "Future",
kind: Trait,
@@ -8479,8 +8479,8 @@ impl Iterator for S {
file_id: FileId(
1,
),
- full_range: 8638..9104,
- focus_range: 8682..8690,
+ full_range: 8672..9171,
+ focus_range: 8749..8757,
name: "Iterator",
kind: Trait,
container_name: "iterator",
diff --git a/crates/intern/src/symbol/symbols.rs b/crates/intern/src/symbol/symbols.rs
index 2feca32ff8..7eb8e4a5e2 100644
--- a/crates/intern/src/symbol/symbols.rs
+++ b/crates/intern/src/symbol/symbols.rs
@@ -239,6 +239,7 @@ define_symbols! {
fundamental,
future_trait,
future,
+ future_output,
Future,
ge,
get_context,
@@ -273,6 +274,7 @@ define_symbols! {
iter_mut,
iter,
Iterator,
+ iterator,
keyword,
lang,
le,
diff --git a/crates/test-utils/src/minicore.rs b/crates/test-utils/src/minicore.rs
index 2d615c34a3..7dbc498ead 100644
--- a/crates/test-utils/src/minicore.rs
+++ b/crates/test-utils/src/minicore.rs
@@ -1195,6 +1195,7 @@ pub mod future {
#[doc(notable_trait)]
#[lang = "future_trait"]
pub trait Future {
+ #[lang = "future_output"]
type Output;
#[lang = "poll"]
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>;
@@ -1292,6 +1293,7 @@ pub mod iter {
mod traits {
mod iterator {
#[doc(notable_trait)]
+ #[lang = "iterator"]
pub trait Iterator {
type Item;
#[lang = "next"]