@@ -74,29 +74,6 @@ impl<'hir> LoweringContext<'_, 'hir> {
7474 } )
7575 }
7676
77- fn lower_ast_generics (
78- & mut self ,
79- item_id : NodeId ,
80- span : Span ,
81- generics : & DelegationGenerics < Generics > ,
82- ) -> DelegationGenerics < & ' hir hir:: Generics < ' hir > > {
83- let mut process_params = |generics : & Option < Generics > | {
84- generics
85- . as_ref ( )
86- . map ( |g| self . lower_delegation_generic_params ( item_id, span, g. params . clone ( ) ) )
87- } ;
88-
89- match generics {
90- DelegationGenerics :: UserSpecified => DelegationGenerics :: UserSpecified ,
91- DelegationGenerics :: Default ( generics) => {
92- DelegationGenerics :: Default ( process_params ( generics) )
93- }
94- DelegationGenerics :: SelfAndUserSpecified ( generics) => {
95- DelegationGenerics :: SelfAndUserSpecified ( process_params ( generics) )
96- }
97- }
98- }
99-
10077 fn lower_delegation_generic_params (
10178 & mut self ,
10279 item_id : NodeId ,
@@ -378,9 +355,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
378355 } ;
379356
380357 if add_self {
381- generics = Some ( generics. unwrap_or ( Generics :: default ( ) ) ) ;
382-
383- generics. as_mut ( ) . unwrap ( ) . params . insert (
358+ generics. get_or_insert_default ( ) . params . insert (
384359 0 ,
385360 GenericParam {
386361 id : self . next_node_id ( ) ,
@@ -411,23 +386,39 @@ impl<'hir> HirOrAstGenerics<'hir> {
411386 span : Span ,
412387 ) -> & mut Self {
413388 match self {
414- HirOrAstGenerics :: Ast ( delegation_generics) => {
415- * self = Self :: Hir ( ctx. lower_ast_generics ( item_id, span, delegation_generics) ) ;
389+ HirOrAstGenerics :: Ast ( generics) => {
390+ let mut process_params = |generics : & Option < Generics > | {
391+ generics. as_ref ( ) . map ( |g| {
392+ ctx. lower_delegation_generic_params ( item_id, span, g. params . clone ( ) )
393+ } )
394+ } ;
395+
396+ let hir_generics = match generics {
397+ DelegationGenerics :: UserSpecified => DelegationGenerics :: UserSpecified ,
398+ DelegationGenerics :: Default ( generics) => {
399+ DelegationGenerics :: Default ( process_params ( generics) )
400+ }
401+ DelegationGenerics :: SelfAndUserSpecified ( generics) => {
402+ DelegationGenerics :: SelfAndUserSpecified ( process_params ( generics) )
403+ }
404+ } ;
405+
406+ * self = Self :: Hir ( hir_generics) ;
416407 }
417- HirOrAstGenerics :: Hir ( _) => { }
408+ Self :: Hir ( _) => { }
418409 }
419410
420411 self
421412 }
422413
423414 fn hir_generics_or_empty ( & self ) -> & ' hir hir:: Generics < ' hir > {
424415 match self {
425- HirOrAstGenerics :: Ast ( _) => hir:: Generics :: empty ( ) ,
426- HirOrAstGenerics :: Hir ( hir_generics) => match hir_generics {
416+ Self :: Ast ( _) => hir:: Generics :: empty ( ) ,
417+ Self :: Hir ( hir_generics) => match hir_generics {
427418 DelegationGenerics :: UserSpecified => hir:: Generics :: empty ( ) ,
428419 DelegationGenerics :: Default ( generics)
429420 | DelegationGenerics :: SelfAndUserSpecified ( generics) => {
430- generics. as_ref ( ) . unwrap_or ( & hir:: Generics :: empty ( ) )
421+ generics. unwrap_or ( hir:: Generics :: empty ( ) )
431422 }
432423 } ,
433424 }
@@ -440,8 +431,8 @@ impl<'hir> HirOrAstGenerics<'hir> {
440431 span : Span ,
441432 ) -> Option < & ' hir hir:: GenericArgs < ' hir > > {
442433 match self {
443- HirOrAstGenerics :: Ast ( _) => None ,
444- HirOrAstGenerics :: Hir ( hir_generics) => match hir_generics {
434+ Self :: Ast ( _) => None ,
435+ Self :: Hir ( hir_generics) => match hir_generics {
445436 DelegationGenerics :: UserSpecified => None ,
446437 DelegationGenerics :: Default ( generics)
447438 | DelegationGenerics :: SelfAndUserSpecified ( generics) => generics. map ( |generics| {
@@ -453,8 +444,8 @@ impl<'hir> HirOrAstGenerics<'hir> {
453444
454445 pub ( super ) fn is_user_specified ( & self ) -> bool {
455446 match self {
456- HirOrAstGenerics :: Ast ( ast_generics) => ast_generics. is_user_specified ( ) ,
457- HirOrAstGenerics :: Hir ( hir_generics) => hir_generics. is_user_specified ( ) ,
447+ Self :: Ast ( ast_generics) => ast_generics. is_user_specified ( ) ,
448+ Self :: Hir ( hir_generics) => hir_generics. is_user_specified ( ) ,
458449 }
459450 }
460451}
0 commit comments