@@ -263,6 +263,7 @@ fn get_additional_fields(node: &AstNodeSrc) -> Vec<FieldInfo> {
263
263
"Fn" => vec ! [ FieldInfo :: body( "body" , "BlockExpr" ) ] ,
264
264
"Const" => vec ! [ FieldInfo :: body( "body" , "Expr" ) ] ,
265
265
"Static" => vec ! [ FieldInfo :: body( "body" , "Expr" ) ] ,
266
+ "Param" => vec ! [ FieldInfo :: body( "pat" , "Pat" ) ] ,
266
267
"ClosureExpr" => vec ! [ FieldInfo :: optional( "body" , "Expr" ) ] ,
267
268
"ArrayExpr" => vec ! [ FieldInfo :: predicate( "is_semicolon" ) ] ,
268
269
"SelfParam" => vec ! [ FieldInfo :: predicate( "is_amp" ) ] ,
@@ -290,14 +291,12 @@ fn get_fields(node: &AstNodeSrc) -> Vec<FieldInfo> {
290
291
result. extend ( get_additional_fields ( node) ) ;
291
292
292
293
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 ( ) ) {
294
296
( "ArrayExpr" , "expr" ) // The ArrayExpr type also has an 'exprs' field
295
297
| ( "PathSegment" , "ty" | "path_type" ) // these are broken, handling them manually
298
+ | ( "Param" , "pat" ) // handled manually to use `body`
296
299
=> continue ,
297
- ( "Param" , "pat" ) => {
298
- result. push ( FieldInfo :: body ( "pat" , "Pat" ) ) ;
299
- continue ;
300
- } ,
301
300
_ => { }
302
301
}
303
302
let ty = match field {
@@ -310,7 +309,7 @@ fn get_fields(node: &AstNodeSrc) -> Vec<FieldInfo> {
310
309
} ,
311
310
} ;
312
311
result. push ( FieldInfo {
313
- name : field . method_name ( ) ,
312
+ name,
314
313
ty,
315
314
} ) ;
316
315
}
0 commit comments