@@ -57,6 +57,7 @@ impl<'ast, 'tcx> LanguageItemCollector<'ast, 'tcx> {
5757 & mut self ,
5858 actual_target : Target ,
5959 def_id : LocalDefId ,
60+ cor_def_id : Option < LocalDefId > ,
6061 attrs : & ' ast [ ast:: Attribute ] ,
6162 item_span : Span ,
6263 generics : Option < & ' ast ast:: Generics > ,
@@ -73,6 +74,18 @@ impl<'ast, 'tcx> LanguageItemCollector<'ast, 'tcx> {
7374 generics,
7475 actual_target,
7576 ) ;
77+ // We need to register LangItem::AsyncDropInPlacePoll
78+ // for async_drop_in_place<T>::{closure}
79+ if cor_def_id. is_some ( ) && lang_item == LangItem :: AsyncDropInPlace {
80+ self . collect_item_extended (
81+ LangItem :: AsyncDropInPlacePoll ,
82+ cor_def_id. unwrap ( ) ,
83+ item_span,
84+ attr_span,
85+ generics,
86+ actual_target,
87+ ) ;
88+ }
7689 }
7790 // Known lang item with attribute on incorrect target.
7891 Some ( lang_item) => {
@@ -288,10 +301,18 @@ impl<'ast, 'tcx> visit::Visitor<'ast> for LanguageItemCollector<'ast, 'tcx> {
288301 unreachable ! ( "macros should have been expanded" )
289302 }
290303 } ;
304+ let cor_def_id = if let ast:: ItemKind :: Fn ( box ast:: Fn { sig, .. } ) = & i. kind
305+ && let Some ( kind) = sig. header . coroutine_kind
306+ {
307+ self . resolver . node_id_to_def_id . get ( & kind. closure_id ( ) ) . copied ( )
308+ } else {
309+ None
310+ } ;
291311
292312 self . check_for_lang (
293313 target,
294314 self . resolver . node_id_to_def_id [ & i. id ] ,
315+ cor_def_id,
295316 & i. attrs ,
296317 i. span ,
297318 i. opt_generics ( ) ,
@@ -307,6 +328,7 @@ impl<'ast, 'tcx> visit::Visitor<'ast> for LanguageItemCollector<'ast, 'tcx> {
307328 self . check_for_lang (
308329 Target :: Variant ,
309330 self . resolver . node_id_to_def_id [ & variant. id ] ,
331+ None ,
310332 & variant. attrs ,
311333 variant. span ,
312334 None ,
@@ -349,6 +371,7 @@ impl<'ast, 'tcx> visit::Visitor<'ast> for LanguageItemCollector<'ast, 'tcx> {
349371 self . check_for_lang (
350372 target,
351373 self . resolver . node_id_to_def_id [ & i. id ] ,
374+ None ,
352375 & i. attrs ,
353376 i. span ,
354377 generics,
0 commit comments