@@ -46,6 +46,7 @@ pub enum Node<'ast> {
46
46
NodeTraitItem ( & ' ast TraitItem ) ,
47
47
NodeImplItem ( & ' ast ImplItem ) ,
48
48
NodeVariant ( & ' ast Variant ) ,
49
+ NodeField ( & ' ast StructField ) ,
49
50
NodeExpr ( & ' ast Expr ) ,
50
51
NodeStmt ( & ' ast Stmt ) ,
51
52
NodeTy ( & ' ast Ty ) ,
@@ -75,6 +76,7 @@ pub enum MapEntry<'ast> {
75
76
EntryTraitItem ( NodeId , & ' ast TraitItem ) ,
76
77
EntryImplItem ( NodeId , & ' ast ImplItem ) ,
77
78
EntryVariant ( NodeId , & ' ast Variant ) ,
79
+ EntryField ( NodeId , & ' ast StructField ) ,
78
80
EntryExpr ( NodeId , & ' ast Expr ) ,
79
81
EntryStmt ( NodeId , & ' ast Stmt ) ,
80
82
EntryTy ( NodeId , & ' ast Ty ) ,
@@ -106,6 +108,7 @@ impl<'ast> MapEntry<'ast> {
106
108
NodeTraitItem ( n) => EntryTraitItem ( p, n) ,
107
109
NodeImplItem ( n) => EntryImplItem ( p, n) ,
108
110
NodeVariant ( n) => EntryVariant ( p, n) ,
111
+ NodeField ( n) => EntryField ( p, n) ,
109
112
NodeExpr ( n) => EntryExpr ( p, n) ,
110
113
NodeStmt ( n) => EntryStmt ( p, n) ,
111
114
NodeTy ( n) => EntryTy ( p, n) ,
@@ -127,6 +130,7 @@ impl<'ast> MapEntry<'ast> {
127
130
EntryTraitItem ( id, _) => id,
128
131
EntryImplItem ( id, _) => id,
129
132
EntryVariant ( id, _) => id,
133
+ EntryField ( id, _) => id,
130
134
EntryExpr ( id, _) => id,
131
135
EntryStmt ( id, _) => id,
132
136
EntryTy ( id, _) => id,
@@ -152,6 +156,7 @@ impl<'ast> MapEntry<'ast> {
152
156
EntryTraitItem ( _, n) => NodeTraitItem ( n) ,
153
157
EntryImplItem ( _, n) => NodeImplItem ( n) ,
154
158
EntryVariant ( _, n) => NodeVariant ( n) ,
159
+ EntryField ( _, n) => NodeField ( n) ,
155
160
EntryExpr ( _, n) => NodeExpr ( n) ,
156
161
EntryStmt ( _, n) => NodeStmt ( n) ,
157
162
EntryTy ( _, n) => NodeTy ( n) ,
@@ -265,6 +270,7 @@ impl<'ast> Map<'ast> {
265
270
EntryForeignItem ( p, _) |
266
271
EntryTraitItem ( p, _) |
267
272
EntryVariant ( p, _) |
273
+ EntryField ( p, _) |
268
274
EntryExpr ( p, _) |
269
275
EntryStmt ( p, _) |
270
276
EntryTy ( p, _) |
@@ -308,6 +314,7 @@ impl<'ast> Map<'ast> {
308
314
EntryTraitItem ( p, _) |
309
315
EntryImplItem ( p, _) |
310
316
EntryVariant ( p, _) |
317
+ EntryField ( p, _) |
311
318
EntryExpr ( p, _) |
312
319
EntryStmt ( p, _) |
313
320
EntryTy ( p, _) |
@@ -656,6 +663,7 @@ impl<'ast> Map<'ast> {
656
663
NodeImplItem ( ii) => ii. name ,
657
664
NodeTraitItem ( ti) => ti. name ,
658
665
NodeVariant ( v) => v. node . name ,
666
+ NodeField ( f) => f. name ,
659
667
NodeLifetime ( lt) => lt. name ,
660
668
NodeTyParam ( tp) => tp. name ,
661
669
NodeLocal ( & Pat { node : PatKind :: Binding ( _, _, l, _) , .. } ) => l. node ,
@@ -674,6 +682,7 @@ impl<'ast> Map<'ast> {
674
682
Some ( NodeTraitItem ( ref ti) ) => Some ( & ti. attrs [ ..] ) ,
675
683
Some ( NodeImplItem ( ref ii) ) => Some ( & ii. attrs [ ..] ) ,
676
684
Some ( NodeVariant ( ref v) ) => Some ( & v. node . attrs [ ..] ) ,
685
+ Some ( NodeField ( ref f) ) => Some ( & f. attrs [ ..] ) ,
677
686
Some ( NodeExpr ( ref e) ) => Some ( & * e. attrs ) ,
678
687
Some ( NodeStmt ( ref s) ) => Some ( s. node . attrs ( ) ) ,
679
688
// unit/tuple structs take the attributes straight from
@@ -710,6 +719,7 @@ impl<'ast> Map<'ast> {
710
719
Some ( NodeTraitItem ( trait_method) ) => trait_method. span ,
711
720
Some ( NodeImplItem ( ref impl_item) ) => impl_item. span ,
712
721
Some ( NodeVariant ( variant) ) => variant. span ,
722
+ Some ( NodeField ( field) ) => field. span ,
713
723
Some ( NodeExpr ( expr) ) => expr. span ,
714
724
Some ( NodeStmt ( stmt) ) => stmt. span ,
715
725
Some ( NodeTy ( ty) ) => ty. span ,
@@ -831,6 +841,7 @@ impl<'a, 'ast> Iterator for NodesMatchingSuffix<'a, 'ast> {
831
841
Some ( EntryTraitItem ( _, n) ) => n. name ( ) ,
832
842
Some ( EntryImplItem ( _, n) ) => n. name ( ) ,
833
843
Some ( EntryVariant ( _, n) ) => n. name ( ) ,
844
+ Some ( EntryField ( _, n) ) => n. name ( ) ,
834
845
_ => continue ,
835
846
} ;
836
847
if self . matches_names ( self . map . get_parent ( idx) , name) {
@@ -849,6 +860,7 @@ impl<T:Named> Named for Spanned<T> { fn name(&self) -> Name { self.node.name() }
849
860
impl Named for Item { fn name ( & self ) -> Name { self . name } }
850
861
impl Named for ForeignItem { fn name ( & self ) -> Name { self . name } }
851
862
impl Named for Variant_ { fn name ( & self ) -> Name { self . name } }
863
+ impl Named for StructField { fn name ( & self ) -> Name { self . name } }
852
864
impl Named for TraitItem { fn name ( & self ) -> Name { self . name } }
853
865
impl Named for ImplItem { fn name ( & self ) -> Name { self . name } }
854
866
@@ -940,6 +952,7 @@ impl<'a> NodePrinter for pprust::State<'a> {
940
952
NodeLifetime ( a) => self . print_lifetime ( & a) ,
941
953
NodeVisibility ( a) => self . print_visibility ( & a) ,
942
954
NodeTyParam ( _) => bug ! ( "cannot print TyParam" ) ,
955
+ NodeField ( _) => bug ! ( "cannot print StructField" ) ,
943
956
// these cases do not carry enough information in the
944
957
// ast_map to reconstruct their full structure for pretty
945
958
// printing.
@@ -1019,6 +1032,11 @@ fn node_id_to_string(map: &Map, id: NodeId, include_id: bool) -> String {
1019
1032
variant. node. name,
1020
1033
path_str( ) , id_str)
1021
1034
}
1035
+ Some ( NodeField ( ref field) ) => {
1036
+ format ! ( "field {} in {}{}" ,
1037
+ field. name,
1038
+ path_str( ) , id_str)
1039
+ }
1022
1040
Some ( NodeExpr ( ref expr) ) => {
1023
1041
format ! ( "expr {}{}" , pprust:: expr_to_string( & expr) , id_str)
1024
1042
}
0 commit comments