@@ -207,30 +207,29 @@ pub fn features(
207
207
edition : Edition ,
208
208
allow_features : & Option < Vec < String > > ,
209
209
) -> ( ast:: Crate , Features ) {
210
- let features;
211
- {
212
- let mut strip_unconfigured = StripUnconfigured { sess, features : None } ;
210
+ let mut strip_unconfigured = StripUnconfigured { sess, features : None } ;
213
211
214
- let unconfigured_attrs = krate. attrs . clone ( ) ;
215
- let err_count = sess. span_diagnostic . err_count ( ) ;
216
- if let Some ( attrs ) = strip_unconfigured . configure ( krate . attrs ) {
217
- krate. attrs = attrs ;
218
- } else {
219
- // the entire crate is unconfigured
212
+ let unconfigured_attrs = krate. attrs . clone ( ) ;
213
+ let diag = & sess. span_diagnostic ;
214
+ let err_count = diag . err_count ( ) ;
215
+ let features = match strip_unconfigured . configure ( krate. attrs ) {
216
+ None => {
217
+ // The entire crate is unconfigured.
220
218
krate. attrs = Vec :: new ( ) ;
221
219
krate. module . items = Vec :: new ( ) ;
222
- return ( krate , Features :: default ( ) ) ;
220
+ Features :: default ( )
223
221
}
224
-
225
- features = get_features ( & sess. span_diagnostic , & krate. attrs , edition, allow_features) ;
226
-
227
- // Avoid reconfiguring malformed `cfg_attr`s
228
- if err_count == sess. span_diagnostic . err_count ( ) {
229
- strip_unconfigured. features = Some ( & features) ;
230
- strip_unconfigured. configure ( unconfigured_attrs) ;
222
+ Some ( attrs) => {
223
+ krate. attrs = attrs;
224
+ let features = get_features ( diag, & krate. attrs , edition, allow_features) ;
225
+ if err_count == diag. err_count ( ) {
226
+ // Avoid reconfiguring malformed `cfg_attr`s.
227
+ strip_unconfigured. features = Some ( & features) ;
228
+ strip_unconfigured. configure ( unconfigured_attrs) ;
229
+ }
230
+ features
231
231
}
232
- }
233
-
232
+ } ;
234
233
( krate, features)
235
234
}
236
235
0 commit comments