Unnamed repository; edit this file 'description' to name the repository.
Add missing interner lang items
Chayim Refael Friedman 5 weeks ago
parent adef948 · commit 993b436
-rw-r--r--crates/hir-def/src/lang_item.rs9
-rw-r--r--crates/hir-ty/src/next_solver/interner.rs18
-rw-r--r--crates/intern/src/symbol/symbols.rs11
-rw-r--r--crates/test-utils/src/minicore.rs8
4 files changed, 35 insertions, 11 deletions
diff --git a/crates/hir-def/src/lang_item.rs b/crates/hir-def/src/lang_item.rs
index fef92c89b1..dd8705e89f 100644
--- a/crates/hir-def/src/lang_item.rs
+++ b/crates/hir-def/src/lang_item.rs
@@ -324,6 +324,7 @@ language_item_table! { LangItems =>
Drop, sym::drop, TraitId;
Destruct, sym::destruct, TraitId;
+ BikeshedGuaranteedNoDrop,sym::bikeshed_guaranteed_no_drop, TraitId;
CoerceUnsized, sym::coerce_unsized, TraitId;
DispatchFromDyn, sym::dispatch_from_dyn, TraitId;
@@ -373,6 +374,8 @@ language_item_table! { LangItems =>
AsyncFn, sym::async_fn, TraitId;
AsyncFnMut, sym::async_fn_mut, TraitId;
AsyncFnOnce, sym::async_fn_once, TraitId;
+ AsyncFnKindHelper, sym::async_fn_kind_helper,TraitId;
+ AsyncFnKindUpvars, sym::async_fn_kind_upvars,TypeAliasId;
CallRefFuture, sym::call_ref_future, TypeAliasId;
CallOnceFuture, sym::call_once_future, TypeAliasId;
@@ -489,6 +492,8 @@ language_item_table! { LangItems =>
IntoIterIntoIter, sym::into_iter, FunctionId;
IteratorNext, sym::next, FunctionId;
Iterator, sym::iterator, TraitId;
+ FusedIterator, sym::fused_iterator, TraitId;
+ AsyncIterator, sym::async_iterator, TraitId;
PinNewUnchecked, sym::new_unchecked, FunctionId;
@@ -509,6 +514,10 @@ language_item_table! { LangItems =>
CStr, sym::CStr, StructId;
Ordering, sym::Ordering, EnumId;
+ Field, sym::field, TraitId;
+ FieldBase, sym::field_base, TypeAliasId;
+ FieldType, sym::field_type, TypeAliasId;
+
@non_lang_core_traits:
core::default, Default;
core::fmt, Debug;
diff --git a/crates/hir-ty/src/next_solver/interner.rs b/crates/hir-ty/src/next_solver/interner.rs
index 1078a6af42..3fe713f2fe 100644
--- a/crates/hir-ty/src/next_solver/interner.rs
+++ b/crates/hir-ty/src/next_solver/interner.rs
@@ -1487,7 +1487,7 @@ impl<'db> Interner for DbInterner<'db> {
fn require_lang_item(self, lang_item: SolverLangItem) -> Self::DefId {
let lang_items = self.lang_items();
let lang_item = match lang_item {
- SolverLangItem::AsyncFnKindUpvars => unimplemented!(),
+ SolverLangItem::AsyncFnKindUpvars => lang_items.AsyncFnKindUpvars,
SolverLangItem::AsyncFnOnceOutput => lang_items.AsyncFnOnceOutput,
SolverLangItem::CallOnceFuture => lang_items.CallOnceFuture,
SolverLangItem::CallRefFuture => lang_items.CallRefFuture,
@@ -1498,8 +1498,8 @@ impl<'db> Interner for DbInterner<'db> {
SolverLangItem::DynMetadata => {
return lang_items.DynMetadata.expect("Lang item required but not found.").into();
}
- SolverLangItem::FieldBase => unimplemented!(),
- SolverLangItem::FieldType => unimplemented!(),
+ SolverLangItem::FieldBase => lang_items.FieldBase,
+ SolverLangItem::FieldType => lang_items.FieldType,
};
lang_item.expect("Lang item required but not found.").into()
}
@@ -1508,13 +1508,13 @@ impl<'db> Interner for DbInterner<'db> {
let lang_items = self.lang_items();
let lang_item = match lang_item {
SolverTraitLangItem::AsyncFn => lang_items.AsyncFn,
- SolverTraitLangItem::AsyncFnKindHelper => unimplemented!(),
+ SolverTraitLangItem::AsyncFnKindHelper => lang_items.AsyncFnKindHelper,
SolverTraitLangItem::AsyncFnMut => lang_items.AsyncFnMut,
SolverTraitLangItem::AsyncFnOnce => lang_items.AsyncFnOnce,
SolverTraitLangItem::AsyncFnOnceOutput => unimplemented!(
"This is incorrectly marked as `SolverTraitLangItem`, and is not used by the solver."
),
- SolverTraitLangItem::AsyncIterator => unimplemented!(),
+ SolverTraitLangItem::AsyncIterator => lang_items.AsyncIterator,
SolverTraitLangItem::Clone => lang_items.Clone,
SolverTraitLangItem::Copy => lang_items.Copy,
SolverTraitLangItem::Coroutine => lang_items.Coroutine,
@@ -1525,7 +1525,7 @@ impl<'db> Interner for DbInterner<'db> {
SolverTraitLangItem::FnMut => lang_items.FnMut,
SolverTraitLangItem::FnOnce => lang_items.FnOnce,
SolverTraitLangItem::FnPtrTrait => lang_items.FnPtrTrait,
- SolverTraitLangItem::FusedIterator => unimplemented!(),
+ SolverTraitLangItem::FusedIterator => lang_items.FusedIterator,
SolverTraitLangItem::Future => lang_items.Future,
SolverTraitLangItem::Iterator => lang_items.Iterator,
SolverTraitLangItem::PointeeTrait => lang_items.PointeeTrait,
@@ -1536,11 +1536,9 @@ impl<'db> Interner for DbInterner<'db> {
SolverTraitLangItem::Tuple => lang_items.Tuple,
SolverTraitLangItem::Unpin => lang_items.Unpin,
SolverTraitLangItem::Unsize => lang_items.Unsize,
- SolverTraitLangItem::BikeshedGuaranteedNoDrop => {
- unimplemented!()
- }
+ SolverTraitLangItem::BikeshedGuaranteedNoDrop => lang_items.BikeshedGuaranteedNoDrop,
SolverTraitLangItem::TrivialClone => lang_items.TrivialClone,
- SolverTraitLangItem::Field => unimplemented!(),
+ SolverTraitLangItem::Field => lang_items.Field,
};
lang_item.expect("Lang item required but not found.").into()
}
diff --git a/crates/intern/src/symbol/symbols.rs b/crates/intern/src/symbol/symbols.rs
index 4be1f79fb5..e39506280f 100644
--- a/crates/intern/src/symbol/symbols.rs
+++ b/crates/intern/src/symbol/symbols.rs
@@ -199,7 +199,9 @@ define_symbols! {
derive,
discriminant_kind,
discriminant_type,
- dispatch_from_dyn,destruct,
+ dispatch_from_dyn,
+ destruct,
+ bikeshed_guaranteed_no_drop,
div_assign,
div,
doc,
@@ -232,6 +234,8 @@ define_symbols! {
async_fn_once_output,
async_fn_mut,
async_fn,
+ async_fn_kind_helper,
+ async_fn_kind_upvars,
call_ref_future,
call_once_future,
fn_ptr_addr,
@@ -297,6 +301,8 @@ define_symbols! {
iter,
Iterator,
iterator,
+ fused_iterator,
+ async_iterator,
keyword,
lang,
lang_items,
@@ -568,4 +574,7 @@ define_symbols! {
contracts_internals,
freeze_impls,
unsized_fn_params,
+ field,
+ field_base,
+ field_type,
}
diff --git a/crates/test-utils/src/minicore.rs b/crates/test-utils/src/minicore.rs
index 86fb080732..a51698aca8 100644
--- a/crates/test-utils/src/minicore.rs
+++ b/crates/test-utils/src/minicore.rs
@@ -936,6 +936,14 @@ pub mod ops {
}
}
}
+
+ mod internal_implementation_detail {
+ #[lang = "async_fn_kind_helper"]
+ trait AsyncFnKindHelper<GoalKind> {
+ #[lang = "async_fn_kind_upvars"]
+ type Upvars<'closure_env, Inputs, Upvars, BorrowedUpvarsAsFnPtr>;
+ }
+ }
}
pub use self::async_function::{AsyncFn, AsyncFnMut, AsyncFnOnce};
// endregion:async_fn