@@ -966,59 +966,58 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
966
966
DropKind :: Value ,
967
967
) ;
968
968
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 ) ) ;
1019
1018
}
1020
- self . source_scope = original_source_scope;
1021
1019
}
1020
+ self . source_scope = original_source_scope;
1022
1021
}
1023
1022
1024
1023
// Enter the argument pattern bindings source scope, if it exists.
0 commit comments