@@ -34,24 +34,24 @@ use std::rc::Rc;
34
34
35
35
use errors:: { DiagnosticBuilder , Handler } ;
36
36
use errors:: emitter:: { ColorConfig , EmitterWriter } ;
37
- use macros:: MacroArg ;
38
37
use strings:: string_buffer:: StringBuffer ;
39
38
use syntax:: ast;
40
- use syntax:: codemap:: { CodeMap , FilePathMapping , Span } ;
39
+ use syntax:: codemap:: { CodeMap , FilePathMapping } ;
41
40
use syntax:: parse:: { self , ParseSess } ;
42
41
43
42
use checkstyle:: { output_footer, output_header} ;
44
43
use config:: Config ;
45
44
use filemap:: FileMap ;
46
45
use issues:: { BadIssueSeeker , Issue } ;
47
- use utils:: { isatty, mk_sp , outer_attributes } ;
46
+ use utils:: isatty;
48
47
use visitor:: FmtVisitor ;
49
48
50
49
pub use self :: summary:: Summary ;
51
50
52
51
#[ macro_use]
53
52
mod utils;
54
53
mod shape;
54
+ mod spanned;
55
55
pub mod config;
56
56
pub mod codemap;
57
57
pub mod filemap;
@@ -76,169 +76,6 @@ mod patterns;
76
76
mod summary;
77
77
mod vertical;
78
78
79
- /// Spanned returns a span including attributes, if available.
80
- pub trait Spanned {
81
- fn span ( & self ) -> Span ;
82
- }
83
-
84
- macro_rules! span_with_attrs_lo_hi {
85
- ( $this: ident, $lo: expr, $hi: expr) => {
86
- {
87
- let attrs = outer_attributes( & $this. attrs) ;
88
- if attrs. is_empty( ) {
89
- mk_sp( $lo, $hi)
90
- } else {
91
- mk_sp( attrs[ 0 ] . span. lo( ) , $hi)
92
- }
93
- }
94
- }
95
- }
96
-
97
- macro_rules! span_with_attrs {
98
- ( $this: ident) => {
99
- span_with_attrs_lo_hi!( $this, $this. span. lo( ) , $this. span. hi( ) )
100
- }
101
- }
102
-
103
- macro_rules! implement_spanned {
104
- ( $this: ty) => {
105
- impl Spanned for $this {
106
- fn span( & self ) -> Span {
107
- span_with_attrs!( self )
108
- }
109
- }
110
- }
111
- }
112
-
113
- // Implement `Spanned` for structs with `attrs` field.
114
- implement_spanned ! ( ast:: Expr ) ;
115
- implement_spanned ! ( ast:: Field ) ;
116
- implement_spanned ! ( ast:: ForeignItem ) ;
117
- implement_spanned ! ( ast:: Item ) ;
118
- implement_spanned ! ( ast:: Local ) ;
119
-
120
- impl Spanned for ast:: Stmt {
121
- fn span ( & self ) -> Span {
122
- match self . node {
123
- ast:: StmtKind :: Local ( ref local) => mk_sp ( local. span ( ) . lo ( ) , self . span . hi ( ) ) ,
124
- ast:: StmtKind :: Item ( ref item) => mk_sp ( item. span ( ) . lo ( ) , self . span . hi ( ) ) ,
125
- ast:: StmtKind :: Expr ( ref expr) | ast:: StmtKind :: Semi ( ref expr) => {
126
- mk_sp ( expr. span ( ) . lo ( ) , self . span . hi ( ) )
127
- }
128
- ast:: StmtKind :: Mac ( ref mac) => {
129
- let ( _, _, ref attrs) = * * mac;
130
- if attrs. is_empty ( ) {
131
- self . span
132
- } else {
133
- mk_sp ( attrs[ 0 ] . span . lo ( ) , self . span . hi ( ) )
134
- }
135
- }
136
- }
137
- }
138
- }
139
-
140
- impl Spanned for ast:: Pat {
141
- fn span ( & self ) -> Span {
142
- self . span
143
- }
144
- }
145
-
146
- impl Spanned for ast:: Ty {
147
- fn span ( & self ) -> Span {
148
- self . span
149
- }
150
- }
151
-
152
- impl Spanned for ast:: Arm {
153
- fn span ( & self ) -> Span {
154
- span_with_attrs_lo_hi ! ( self , self . pats[ 0 ] . span. lo( ) , self . body. span. hi( ) )
155
- }
156
- }
157
-
158
- impl Spanned for ast:: Arg {
159
- fn span ( & self ) -> Span {
160
- if items:: is_named_arg ( self ) {
161
- utils:: mk_sp ( self . pat . span . lo ( ) , self . ty . span . hi ( ) )
162
- } else {
163
- self . ty . span
164
- }
165
- }
166
- }
167
-
168
- impl Spanned for ast:: StructField {
169
- fn span ( & self ) -> Span {
170
- span_with_attrs_lo_hi ! ( self , self . span. lo( ) , self . ty. span. hi( ) )
171
- }
172
- }
173
-
174
- impl Spanned for ast:: WherePredicate {
175
- fn span ( & self ) -> Span {
176
- match * self {
177
- ast:: WherePredicate :: BoundPredicate ( ref p) => p. span ,
178
- ast:: WherePredicate :: RegionPredicate ( ref p) => p. span ,
179
- ast:: WherePredicate :: EqPredicate ( ref p) => p. span ,
180
- }
181
- }
182
- }
183
-
184
- impl Spanned for ast:: FunctionRetTy {
185
- fn span ( & self ) -> Span {
186
- match * self {
187
- ast:: FunctionRetTy :: Default ( span) => span,
188
- ast:: FunctionRetTy :: Ty ( ref ty) => ty. span ,
189
- }
190
- }
191
- }
192
-
193
- impl Spanned for ast:: TyParam {
194
- fn span ( & self ) -> Span {
195
- // Note that ty.span is the span for ty.ident, not the whole item.
196
- let lo = if self . attrs . is_empty ( ) {
197
- self . span . lo ( )
198
- } else {
199
- self . attrs [ 0 ] . span . lo ( )
200
- } ;
201
- if let Some ( ref def) = self . default {
202
- return mk_sp ( lo, def. span . hi ( ) ) ;
203
- }
204
- if self . bounds . is_empty ( ) {
205
- return mk_sp ( lo, self . span . hi ( ) ) ;
206
- }
207
- let hi = self . bounds [ self . bounds . len ( ) - 1 ] . span ( ) . hi ( ) ;
208
- mk_sp ( lo, hi)
209
- }
210
- }
211
-
212
- impl Spanned for ast:: TyParamBound {
213
- fn span ( & self ) -> Span {
214
- match * self {
215
- ast:: TyParamBound :: TraitTyParamBound ( ref ptr, _) => ptr. span ,
216
- ast:: TyParamBound :: RegionTyParamBound ( ref l) => l. span ,
217
- }
218
- }
219
- }
220
-
221
- impl Spanned for ast:: LifetimeDef {
222
- fn span ( & self ) -> Span {
223
- let hi = if self . bounds . is_empty ( ) {
224
- self . lifetime . span . hi ( )
225
- } else {
226
- self . bounds [ self . bounds . len ( ) - 1 ] . span . hi ( )
227
- } ;
228
- mk_sp ( self . lifetime . span . lo ( ) , hi)
229
- }
230
- }
231
-
232
- impl Spanned for MacroArg {
233
- fn span ( & self ) -> Span {
234
- match * self {
235
- MacroArg :: Expr ( ref expr) => expr. span ( ) ,
236
- MacroArg :: Ty ( ref ty) => ty. span ( ) ,
237
- MacroArg :: Pat ( ref pat) => pat. span ( ) ,
238
- }
239
- }
240
- }
241
-
242
79
pub enum ErrorKind {
243
80
// Line has exceeded character limit (found, maximum)
244
81
LineOverflow ( usize , usize ) ,
0 commit comments