@@ -966,59 +966,58 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
966966 DropKind :: Value ,
967967 ) ;
968968
969- if let Some ( arg) = arg_opt {
970- let pat = match tcx. hir ( ) . get ( arg. pat . hir_id ) {
971- Node :: Pat ( pat) | Node :: Binding ( pat) => pat,
972- node => bug ! ( "pattern became {:?}" , node) ,
973- } ;
974- let pattern = pat_from_hir ( tcx, self . param_env , self . typeck_results , pat) ;
975- let original_source_scope = self . source_scope ;
976- let span = pattern. span ;
977- self . set_correct_source_scope_for_arg ( arg. hir_id , original_source_scope, span) ;
978- match * pattern. kind {
979- // Don't introduce extra copies for simple bindings
980- PatKind :: Binding {
981- mutability,
982- var,
983- mode : BindingMode :: ByValue ,
984- subpattern : None ,
985- ..
986- } => {
987- self . local_decls [ local] . mutability = mutability;
988- self . local_decls [ local] . source_info . scope = self . source_scope ;
989- self . local_decls [ local] . local_info = if let Some ( kind) = self_binding {
990- Some ( Box :: new ( LocalInfo :: User ( ClearCrossCrate :: Set (
991- BindingForm :: ImplicitSelf ( * kind) ,
992- ) ) ) )
993- } else {
994- let binding_mode = ty:: BindingMode :: BindByValue ( mutability) ;
995- Some ( Box :: new ( LocalInfo :: User ( ClearCrossCrate :: Set ( BindingForm :: Var (
996- VarBindingForm {
997- binding_mode,
998- opt_ty_info,
999- opt_match_place : Some ( ( Some ( place) , span) ) ,
1000- pat_span : span,
1001- } ,
1002- ) ) ) ) )
1003- } ;
1004- self . var_indices . insert ( var, LocalsForNode :: One ( local) ) ;
1005- }
1006- _ => {
1007- scope = self . declare_bindings (
1008- scope,
1009- expr. span ,
1010- & pattern,
1011- matches:: ArmHasGuard ( false ) ,
1012- Some ( ( Some ( & place) , span) ) ,
1013- ) ;
1014- let place_builder = PlaceBuilder :: from ( local) ;
1015- unpack ! (
1016- block = self . place_into_pattern( block, pattern, place_builder, false )
1017- ) ;
1018- }
969+ let Some ( arg) = arg_opt else {
970+ continue ;
971+ } ;
972+ let pat = match tcx. hir ( ) . get ( arg. pat . hir_id ) {
973+ Node :: Pat ( pat) | Node :: Binding ( pat) => pat,
974+ node => bug ! ( "pattern became {:?}" , node) ,
975+ } ;
976+ let pattern = pat_from_hir ( tcx, self . param_env , self . typeck_results , pat) ;
977+ let original_source_scope = self . source_scope ;
978+ let span = pattern. span ;
979+ self . set_correct_source_scope_for_arg ( arg. hir_id , original_source_scope, span) ;
980+ match * pattern. kind {
981+ // Don't introduce extra copies for simple bindings
982+ PatKind :: Binding {
983+ mutability,
984+ var,
985+ mode : BindingMode :: ByValue ,
986+ subpattern : None ,
987+ ..
988+ } => {
989+ self . local_decls [ local] . mutability = mutability;
990+ self . local_decls [ local] . source_info . scope = self . source_scope ;
991+ self . local_decls [ local] . local_info = if let Some ( kind) = self_binding {
992+ Some ( Box :: new ( LocalInfo :: User ( ClearCrossCrate :: Set (
993+ BindingForm :: ImplicitSelf ( * kind) ,
994+ ) ) ) )
995+ } else {
996+ let binding_mode = ty:: BindingMode :: BindByValue ( mutability) ;
997+ Some ( Box :: new ( LocalInfo :: User ( ClearCrossCrate :: Set ( BindingForm :: Var (
998+ VarBindingForm {
999+ binding_mode,
1000+ opt_ty_info,
1001+ opt_match_place : Some ( ( Some ( place) , span) ) ,
1002+ pat_span : span,
1003+ } ,
1004+ ) ) ) ) )
1005+ } ;
1006+ self . var_indices . insert ( var, LocalsForNode :: One ( local) ) ;
1007+ }
1008+ _ => {
1009+ scope = self . declare_bindings (
1010+ scope,
1011+ expr. span ,
1012+ & pattern,
1013+ matches:: ArmHasGuard ( false ) ,
1014+ Some ( ( Some ( & place) , span) ) ,
1015+ ) ;
1016+ let place_builder = PlaceBuilder :: from ( local) ;
1017+ unpack ! ( block = self . place_into_pattern( block, pattern, place_builder, false ) ) ;
10191018 }
1020- self . source_scope = original_source_scope;
10211019 }
1020+ self . source_scope = original_source_scope;
10221021 }
10231022
10241023 // Enter the argument pattern bindings source scope, if it exists.
0 commit comments