@@ -58,6 +58,7 @@ impl<'ast, 'tcx> LanguageItemCollector<'ast, 'tcx> {
5858 & mut self ,
5959 actual_target : Target ,
6060 def_id : LocalDefId ,
61+ cor_def_id : Option < LocalDefId > ,
6162 attrs : & ' ast [ ast:: Attribute ] ,
6263 item_span : Span ,
6364 generics : Option < & ' ast ast:: Generics > ,
@@ -74,6 +75,18 @@ impl<'ast, 'tcx> LanguageItemCollector<'ast, 'tcx> {
7475 generics,
7576 actual_target,
7677 ) ;
78+ // We need to register LangItem::AsyncDropInPlacePoll
79+ // for async_drop_in_place<T>::{closure}
80+ if cor_def_id. is_some ( ) && lang_item == LangItem :: AsyncDropInPlace {
81+ self . collect_item_extended (
82+ LangItem :: AsyncDropInPlacePoll ,
83+ cor_def_id. unwrap ( ) ,
84+ item_span,
85+ attr_span,
86+ generics,
87+ actual_target,
88+ ) ;
89+ }
7790 }
7891 // Known lang item with attribute on incorrect target.
7992 Some ( lang_item) => {
@@ -289,10 +302,18 @@ impl<'ast, 'tcx> visit::Visitor<'ast> for LanguageItemCollector<'ast, 'tcx> {
289302 unreachable ! ( "macros should have been expanded" )
290303 }
291304 } ;
305+ let cor_def_id = if let ast:: ItemKind :: Fn ( box ast:: Fn { sig, .. } ) = & i. kind
306+ && let Some ( kind) = sig. header . coroutine_kind
307+ {
308+ self . resolver . node_id_to_def_id . get ( & kind. closure_id ( ) ) . copied ( )
309+ } else {
310+ None
311+ } ;
292312
293313 self . check_for_lang (
294314 target,
295315 self . resolver . node_id_to_def_id [ & i. id ] ,
316+ cor_def_id,
296317 & i. attrs ,
297318 i. span ,
298319 i. opt_generics ( ) ,
@@ -308,6 +329,7 @@ impl<'ast, 'tcx> visit::Visitor<'ast> for LanguageItemCollector<'ast, 'tcx> {
308329 self . check_for_lang (
309330 Target :: Variant ,
310331 self . resolver . node_id_to_def_id [ & variant. id ] ,
332+ None ,
311333 & variant. attrs ,
312334 variant. span ,
313335 None ,
@@ -350,6 +372,7 @@ impl<'ast, 'tcx> visit::Visitor<'ast> for LanguageItemCollector<'ast, 'tcx> {
350372 self . check_for_lang (
351373 target,
352374 self . resolver . node_id_to_def_id [ & i. id ] ,
375+ None ,
353376 & i. attrs ,
354377 i. span ,
355378 generics,
0 commit comments