@@ -10,7 +10,7 @@ use hir_expand::{
1010use ra_arena:: Arena ;
1111use ra_syntax:: {
1212 ast:: {
13- self , ArgListOwner , ArrayExprKind , LiteralKind , LoopBodyOwner , ModuleItemOwner , NameOwner ,
13+ self , ArgListOwner , ArrayExprKind , LiteralKind , LoopBodyOwner , NameOwner ,
1414 SlicePatComponents ,
1515 } ,
1616 AstNode , AstPtr ,
@@ -601,14 +601,20 @@ impl ExprCollector<'_> {
601601 self . collect_block_items ( & block) ;
602602 let statements = block
603603 . statements ( )
604- . map ( |s| match s {
605- ast:: Stmt :: LetStmt ( stmt) => {
606- let pat = self . collect_pat_opt ( stmt. pat ( ) ) ;
607- let type_ref = stmt. ty ( ) . map ( |it| TypeRef :: from_ast ( & self . ctx ( ) , it) ) ;
608- let initializer = stmt. initializer ( ) . map ( |e| self . collect_expr ( e) ) ;
609- Statement :: Let { pat, type_ref, initializer }
610- }
611- ast:: Stmt :: ExprStmt ( stmt) => Statement :: Expr ( self . collect_expr_opt ( stmt. expr ( ) ) ) ,
604+ . filter_map ( |s| {
605+ let stmt = match s {
606+ ast:: Stmt :: LetStmt ( stmt) => {
607+ let pat = self . collect_pat_opt ( stmt. pat ( ) ) ;
608+ let type_ref = stmt. ty ( ) . map ( |it| TypeRef :: from_ast ( & self . ctx ( ) , it) ) ;
609+ let initializer = stmt. initializer ( ) . map ( |e| self . collect_expr ( e) ) ;
610+ Statement :: Let { pat, type_ref, initializer }
611+ }
612+ ast:: Stmt :: ExprStmt ( stmt) => {
613+ Statement :: Expr ( self . collect_expr_opt ( stmt. expr ( ) ) )
614+ }
615+ ast:: Stmt :: Item ( _) => return None ,
616+ } ;
617+ Some ( stmt)
612618 } )
613619 . collect ( ) ;
614620 let tail = block. expr ( ) . map ( |e| self . collect_expr ( e) ) ;
@@ -620,7 +626,11 @@ impl ExprCollector<'_> {
620626 let container = ContainerId :: DefWithBodyId ( self . def ) ;
621627
622628 let items = block
623- . items ( )
629+ . statements ( )
630+ . filter_map ( |stmt| match stmt {
631+ ast:: Stmt :: Item ( it) => Some ( it) ,
632+ ast:: Stmt :: LetStmt ( _) | ast:: Stmt :: ExprStmt ( _) => None ,
633+ } )
624634 . filter_map ( |item| {
625635 let ( def, name) : ( ModuleDefId , Option < ast:: Name > ) = match item {
626636 ast:: Item :: Fn ( def) => {
0 commit comments