@@ -263,6 +263,7 @@ fn get_additional_fields(node: &AstNodeSrc) -> Vec<FieldInfo> {
263263 "Fn" => vec ! [ FieldInfo :: body( "body" , "BlockExpr" ) ] ,
264264 "Const" => vec ! [ FieldInfo :: body( "body" , "Expr" ) ] ,
265265 "Static" => vec ! [ FieldInfo :: body( "body" , "Expr" ) ] ,
266+ "Param" => vec ! [ FieldInfo :: body( "pat" , "Pat" ) ] ,
266267 "ClosureExpr" => vec ! [ FieldInfo :: optional( "body" , "Expr" ) ] ,
267268 "ArrayExpr" => vec ! [ FieldInfo :: predicate( "is_semicolon" ) ] ,
268269 "SelfParam" => vec ! [ FieldInfo :: predicate( "is_amp" ) ] ,
@@ -290,14 +291,12 @@ fn get_fields(node: &AstNodeSrc) -> Vec<FieldInfo> {
290291 result. extend ( get_additional_fields ( node) ) ;
291292
292293 for field in & node. fields {
293- match ( node. name . as_str ( ) , field. method_name ( ) . as_str ( ) ) {
294+ let name = field. method_name ( ) ;
295+ match ( node. name . as_str ( ) , name. as_str ( ) ) {
294296 ( "ArrayExpr" , "expr" ) // The ArrayExpr type also has an 'exprs' field
295297 | ( "PathSegment" , "ty" | "path_type" ) // these are broken, handling them manually
298+ | ( "Param" , "pat" ) // handled manually to use `body`
296299 => continue ,
297- ( "Param" , "pat" ) => {
298- result. push ( FieldInfo :: body ( "pat" , "Pat" ) ) ;
299- continue ;
300- } ,
301300 _ => { }
302301 }
303302 let ty = match field {
@@ -310,7 +309,7 @@ fn get_fields(node: &AstNodeSrc) -> Vec<FieldInfo> {
310309 } ,
311310 } ;
312311 result. push ( FieldInfo {
313- name : field . method_name ( ) ,
312+ name,
314313 ty,
315314 } ) ;
316315 }
0 commit comments