@@ -37,6 +37,7 @@ use crate::{
3737 RecordFieldPat , RecordLitField , Statement ,
3838 } ,
3939 item_scope:: BuiltinShadowMode ,
40+ item_tree:: ItemTree ,
4041 lang_item:: LangItem ,
4142 path:: { GenericArgs , Path } ,
4243 type_ref:: { Mutability , Rawness , TypeRef } ,
@@ -888,16 +889,24 @@ impl ExprCollector<'_> {
888889 fn collect_block_ (
889890 & mut self ,
890891 block : ast:: BlockExpr ,
891- mk_block : impl FnOnce ( BlockId , Box < [ Statement ] > , Option < ExprId > ) -> Expr ,
892+ mk_block : impl FnOnce ( Option < BlockId > , Box < [ Statement ] > , Option < ExprId > ) -> Expr ,
892893 ) -> ExprId {
893894 let file_local_id = self . ast_id_map . ast_id ( & block) ;
894895 let ast_id = AstId :: new ( self . expander . current_file_id , file_local_id) ;
895- let block_loc =
896- BlockLoc { ast_id, module : self . expander . def_map . module_id ( self . expander . module ) } ;
897- let block_id = self . db . intern_block ( block_loc) ;
898896
899- let ( module, def_map) = match self . db . block_def_map ( block_id) {
900- Some ( def_map) => {
897+ let block_id = if ItemTree :: block_has_items ( self . db , ast_id. file_id , & block) {
898+ Some ( self . db . intern_block ( BlockLoc {
899+ ast_id,
900+ module : self . expander . def_map . module_id ( self . expander . module ) ,
901+ } ) )
902+ } else {
903+ None
904+ } ;
905+
906+ let ( module, def_map) = match block_id
907+ . and_then ( |block_id| self . db . block_def_map ( block_id) . zip ( Some ( block_id) ) )
908+ {
909+ Some ( ( def_map, block_id) ) => {
901910 self . body . block_scopes . push ( block_id) ;
902911 ( def_map. root ( ) , def_map)
903912 }
0 commit comments