@@ -1874,7 +1874,25 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
18741874
18751875 #[ instrument( level = "trace" , skip( self ) ) ]
18761876 fn lower_generic_param ( & mut self , param : & GenericParam ) -> hir:: GenericParam < ' hir > {
1877- let ( name, kind) = match param. kind {
1877+ let ( name, kind) = self . lower_generic_param_kind ( param) ;
1878+
1879+ let hir_id = self . lower_node_id ( param. id ) ;
1880+ self . lower_attrs ( hir_id, & param. attrs ) ;
1881+ hir:: GenericParam {
1882+ hir_id,
1883+ name,
1884+ span : self . lower_span ( param. span ( ) ) ,
1885+ pure_wrt_drop : self . sess . contains_name ( & param. attrs , sym:: may_dangle) ,
1886+ kind,
1887+ colon_span : param. colon_span . map ( |s| self . lower_span ( s) ) ,
1888+ }
1889+ }
1890+
1891+ fn lower_generic_param_kind (
1892+ & mut self ,
1893+ param : & GenericParam ,
1894+ ) -> ( hir:: ParamName , hir:: GenericParamKind < ' hir > ) {
1895+ match param. kind {
18781896 GenericParamKind :: Lifetime => {
18791897 // AST resolution emitted an error on those parameters, so we lower them using
18801898 // `ParamName::Error`.
@@ -1908,17 +1926,6 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
19081926 hir:: GenericParamKind :: Const { ty, default } ,
19091927 )
19101928 }
1911- } ;
1912-
1913- let hir_id = self . lower_node_id ( param. id ) ;
1914- self . lower_attrs ( hir_id, & param. attrs ) ;
1915- hir:: GenericParam {
1916- hir_id,
1917- name,
1918- span : self . lower_span ( param. span ( ) ) ,
1919- pure_wrt_drop : self . sess . contains_name ( & param. attrs , sym:: may_dangle) ,
1920- kind,
1921- colon_span : param. colon_span . map ( |s| self . lower_span ( s) ) ,
19221929 }
19231930 }
19241931
0 commit comments