@@ -353,8 +353,9 @@ impl Body {
353353 let _p = profile:: span ( "body_with_source_map_query" ) ;
354354 let mut params = None ;
355355
356- let ( file_id, module, body) = match def {
356+ let ( file_id, module, body, is_async_fn ) = match def {
357357 DefWithBodyId :: FunctionId ( f) => {
358+ let data = db. function_data ( f) ;
358359 let f = f. lookup ( db) ;
359360 let src = f. source ( db) ;
360361 params = src. value . param_list ( ) . map ( |param_list| {
@@ -371,27 +372,33 @@ impl Body {
371372 } ) ,
372373 )
373374 } ) ;
374- ( src. file_id , f. module ( db) , src. value . body ( ) . map ( ast:: Expr :: from) )
375+ (
376+ src. file_id ,
377+ f. module ( db) ,
378+ src. value . body ( ) . map ( ast:: Expr :: from) ,
379+ data. has_async_kw ( ) ,
380+ )
375381 }
376382 DefWithBodyId :: ConstId ( c) => {
377383 let c = c. lookup ( db) ;
378384 let src = c. source ( db) ;
379- ( src. file_id , c. module ( db) , src. value . body ( ) )
385+ ( src. file_id , c. module ( db) , src. value . body ( ) , false )
380386 }
381387 DefWithBodyId :: StaticId ( s) => {
382388 let s = s. lookup ( db) ;
383389 let src = s. source ( db) ;
384- ( src. file_id , s. module ( db) , src. value . body ( ) )
390+ ( src. file_id , s. module ( db) , src. value . body ( ) , false )
385391 }
386392 DefWithBodyId :: VariantId ( v) => {
387393 let e = v. parent . lookup ( db) ;
388394 let src = v. parent . child_source ( db) ;
389395 let variant = & src. value [ v. local_id ] ;
390- ( src. file_id , e. container , variant. expr ( ) )
396+ ( src. file_id , e. container , variant. expr ( ) , false )
391397 }
392398 } ;
393399 let expander = Expander :: new ( db, file_id, module) ;
394- let ( mut body, source_map) = Body :: new ( db, expander, params, body, module. krate ) ;
400+ let ( mut body, source_map) =
401+ Body :: new ( db, expander, params, body, module. krate , is_async_fn) ;
395402 body. shrink_to_fit ( ) ;
396403
397404 ( Arc :: new ( body) , Arc :: new ( source_map) )
@@ -421,8 +428,9 @@ impl Body {
421428 params : Option < ( ast:: ParamList , impl Iterator < Item = bool > ) > ,
422429 body : Option < ast:: Expr > ,
423430 krate : CrateId ,
431+ is_async_fn : bool ,
424432 ) -> ( Body , BodySourceMap ) {
425- lower:: lower ( db, expander, params, body, krate)
433+ lower:: lower ( db, expander, params, body, krate, is_async_fn )
426434 }
427435
428436 fn shrink_to_fit ( & mut self ) {
0 commit comments