Skip to content

Commit 993b436

Browse files
Add missing interner lang items
1 parent adef948 commit 993b436

4 files changed

Lines changed: 35 additions & 11 deletions

File tree

crates/hir-def/src/lang_item.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@ language_item_table! { LangItems =>
324324

325325
Drop, sym::drop, TraitId;
326326
Destruct, sym::destruct, TraitId;
327+
BikeshedGuaranteedNoDrop,sym::bikeshed_guaranteed_no_drop, TraitId;
327328

328329
CoerceUnsized, sym::coerce_unsized, TraitId;
329330
DispatchFromDyn, sym::dispatch_from_dyn, TraitId;
@@ -373,6 +374,8 @@ language_item_table! { LangItems =>
373374
AsyncFn, sym::async_fn, TraitId;
374375
AsyncFnMut, sym::async_fn_mut, TraitId;
375376
AsyncFnOnce, sym::async_fn_once, TraitId;
377+
AsyncFnKindHelper, sym::async_fn_kind_helper,TraitId;
378+
AsyncFnKindUpvars, sym::async_fn_kind_upvars,TypeAliasId;
376379

377380
CallRefFuture, sym::call_ref_future, TypeAliasId;
378381
CallOnceFuture, sym::call_once_future, TypeAliasId;
@@ -489,6 +492,8 @@ language_item_table! { LangItems =>
489492
IntoIterIntoIter, sym::into_iter, FunctionId;
490493
IteratorNext, sym::next, FunctionId;
491494
Iterator, sym::iterator, TraitId;
495+
FusedIterator, sym::fused_iterator, TraitId;
496+
AsyncIterator, sym::async_iterator, TraitId;
492497

493498
PinNewUnchecked, sym::new_unchecked, FunctionId;
494499

@@ -509,6 +514,10 @@ language_item_table! { LangItems =>
509514
CStr, sym::CStr, StructId;
510515
Ordering, sym::Ordering, EnumId;
511516

517+
Field, sym::field, TraitId;
518+
FieldBase, sym::field_base, TypeAliasId;
519+
FieldType, sym::field_type, TypeAliasId;
520+
512521
@non_lang_core_traits:
513522
core::default, Default;
514523
core::fmt, Debug;

crates/hir-ty/src/next_solver/interner.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1487,7 +1487,7 @@ impl<'db> Interner for DbInterner<'db> {
14871487
fn require_lang_item(self, lang_item: SolverLangItem) -> Self::DefId {
14881488
let lang_items = self.lang_items();
14891489
let lang_item = match lang_item {
1490-
SolverLangItem::AsyncFnKindUpvars => unimplemented!(),
1490+
SolverLangItem::AsyncFnKindUpvars => lang_items.AsyncFnKindUpvars,
14911491
SolverLangItem::AsyncFnOnceOutput => lang_items.AsyncFnOnceOutput,
14921492
SolverLangItem::CallOnceFuture => lang_items.CallOnceFuture,
14931493
SolverLangItem::CallRefFuture => lang_items.CallRefFuture,
@@ -1498,8 +1498,8 @@ impl<'db> Interner for DbInterner<'db> {
14981498
SolverLangItem::DynMetadata => {
14991499
return lang_items.DynMetadata.expect("Lang item required but not found.").into();
15001500
}
1501-
SolverLangItem::FieldBase => unimplemented!(),
1502-
SolverLangItem::FieldType => unimplemented!(),
1501+
SolverLangItem::FieldBase => lang_items.FieldBase,
1502+
SolverLangItem::FieldType => lang_items.FieldType,
15031503
};
15041504
lang_item.expect("Lang item required but not found.").into()
15051505
}
@@ -1508,13 +1508,13 @@ impl<'db> Interner for DbInterner<'db> {
15081508
let lang_items = self.lang_items();
15091509
let lang_item = match lang_item {
15101510
SolverTraitLangItem::AsyncFn => lang_items.AsyncFn,
1511-
SolverTraitLangItem::AsyncFnKindHelper => unimplemented!(),
1511+
SolverTraitLangItem::AsyncFnKindHelper => lang_items.AsyncFnKindHelper,
15121512
SolverTraitLangItem::AsyncFnMut => lang_items.AsyncFnMut,
15131513
SolverTraitLangItem::AsyncFnOnce => lang_items.AsyncFnOnce,
15141514
SolverTraitLangItem::AsyncFnOnceOutput => unimplemented!(
15151515
"This is incorrectly marked as `SolverTraitLangItem`, and is not used by the solver."
15161516
),
1517-
SolverTraitLangItem::AsyncIterator => unimplemented!(),
1517+
SolverTraitLangItem::AsyncIterator => lang_items.AsyncIterator,
15181518
SolverTraitLangItem::Clone => lang_items.Clone,
15191519
SolverTraitLangItem::Copy => lang_items.Copy,
15201520
SolverTraitLangItem::Coroutine => lang_items.Coroutine,
@@ -1525,7 +1525,7 @@ impl<'db> Interner for DbInterner<'db> {
15251525
SolverTraitLangItem::FnMut => lang_items.FnMut,
15261526
SolverTraitLangItem::FnOnce => lang_items.FnOnce,
15271527
SolverTraitLangItem::FnPtrTrait => lang_items.FnPtrTrait,
1528-
SolverTraitLangItem::FusedIterator => unimplemented!(),
1528+
SolverTraitLangItem::FusedIterator => lang_items.FusedIterator,
15291529
SolverTraitLangItem::Future => lang_items.Future,
15301530
SolverTraitLangItem::Iterator => lang_items.Iterator,
15311531
SolverTraitLangItem::PointeeTrait => lang_items.PointeeTrait,
@@ -1536,11 +1536,9 @@ impl<'db> Interner for DbInterner<'db> {
15361536
SolverTraitLangItem::Tuple => lang_items.Tuple,
15371537
SolverTraitLangItem::Unpin => lang_items.Unpin,
15381538
SolverTraitLangItem::Unsize => lang_items.Unsize,
1539-
SolverTraitLangItem::BikeshedGuaranteedNoDrop => {
1540-
unimplemented!()
1541-
}
1539+
SolverTraitLangItem::BikeshedGuaranteedNoDrop => lang_items.BikeshedGuaranteedNoDrop,
15421540
SolverTraitLangItem::TrivialClone => lang_items.TrivialClone,
1543-
SolverTraitLangItem::Field => unimplemented!(),
1541+
SolverTraitLangItem::Field => lang_items.Field,
15441542
};
15451543
lang_item.expect("Lang item required but not found.").into()
15461544
}

crates/intern/src/symbol/symbols.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,9 @@ define_symbols! {
199199
derive,
200200
discriminant_kind,
201201
discriminant_type,
202-
dispatch_from_dyn,destruct,
202+
dispatch_from_dyn,
203+
destruct,
204+
bikeshed_guaranteed_no_drop,
203205
div_assign,
204206
div,
205207
doc,
@@ -232,6 +234,8 @@ define_symbols! {
232234
async_fn_once_output,
233235
async_fn_mut,
234236
async_fn,
237+
async_fn_kind_helper,
238+
async_fn_kind_upvars,
235239
call_ref_future,
236240
call_once_future,
237241
fn_ptr_addr,
@@ -297,6 +301,8 @@ define_symbols! {
297301
iter,
298302
Iterator,
299303
iterator,
304+
fused_iterator,
305+
async_iterator,
300306
keyword,
301307
lang,
302308
lang_items,
@@ -568,4 +574,7 @@ define_symbols! {
568574
contracts_internals,
569575
freeze_impls,
570576
unsized_fn_params,
577+
field,
578+
field_base,
579+
field_type,
571580
}

crates/test-utils/src/minicore.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -936,6 +936,14 @@ pub mod ops {
936936
}
937937
}
938938
}
939+
940+
mod internal_implementation_detail {
941+
#[lang = "async_fn_kind_helper"]
942+
trait AsyncFnKindHelper<GoalKind> {
943+
#[lang = "async_fn_kind_upvars"]
944+
type Upvars<'closure_env, Inputs, Upvars, BorrowedUpvarsAsFnPtr>;
945+
}
946+
}
939947
}
940948
pub use self::async_function::{AsyncFn, AsyncFnMut, AsyncFnOnce};
941949
// endregion:async_fn

0 commit comments

Comments
 (0)