@@ -207,30 +207,29 @@ pub fn features(
207207 edition : Edition ,
208208 allow_features : & Option < Vec < String > > ,
209209) -> ( 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 } ;
213211
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.
220218 krate. attrs = Vec :: new ( ) ;
221219 krate. module . items = Vec :: new ( ) ;
222- return ( krate , Features :: default ( ) ) ;
220+ Features :: default ( )
223221 }
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
231231 }
232- }
233-
232+ } ;
234233 ( krate, features)
235234}
236235
0 commit comments