@@ -980,38 +980,29 @@ pub fn noop_fold_mod<T: Folder>(Mod {inner, items, inline}: Mod, folder: &mut T)
980
980
981
981
pub fn noop_fold_crate < T : Folder > ( Crate { module, attrs, span} : Crate ,
982
982
folder : & mut T ) -> Crate {
983
- let mut items = folder . fold_item ( P ( Item {
983
+ let item = P ( Item {
984
984
ident : keywords:: Invalid . ident ( ) ,
985
985
attrs,
986
986
id : DUMMY_NODE_ID ,
987
987
vis : respan ( span. shrink_to_lo ( ) , VisibilityKind :: Public ) ,
988
988
span,
989
989
node : ItemKind :: Mod ( module) ,
990
990
tokens : None ,
991
- } ) ) . into_iter ( ) ;
992
-
993
- let ( module , attrs , span ) = match items . next ( ) {
994
- Some ( item ) => {
995
- assert ! ( items . next ( ) . is_none ( ) ,
996
- "a crate cannot expand to more than one item" ) ;
997
- item . and_then ( | Item { attrs , span , node , .. } | {
998
- match node {
999
- ItemKind :: Mod ( m ) => ( m , attrs , span ) ,
1000
- _ => panic ! ( "fold converted a module to not a module" ) ,
1001
- }
1002
- } )
991
+ } ) ;
992
+ let items = folder . fold_item ( item ) ;
993
+
994
+ let len = items . len ( ) ;
995
+ if len == 0 {
996
+ let module = Mod { inner : span , items : vec ! [ ] , inline : true } ;
997
+ Crate { module , attrs : vec ! [ ] , span }
998
+ } else if len == 1 {
999
+ let Item { attrs , span , node , .. } = items . into_iter ( ) . next ( ) . unwrap ( ) . into_inner ( ) ;
1000
+ match node {
1001
+ ItemKind :: Mod ( module ) => Crate { module , attrs , span } ,
1002
+ _ => panic ! ( "fold converted a module to not a module" ) ,
1003
1003
}
1004
- None => ( Mod {
1005
- inner : span,
1006
- items : vec ! [ ] ,
1007
- inline : true ,
1008
- } , vec ! [ ] , span)
1009
- } ;
1010
-
1011
- Crate {
1012
- module,
1013
- attrs,
1014
- span,
1004
+ } else {
1005
+ panic ! ( "a crate cannot expand to more than one item" ) ;
1015
1006
}
1016
1007
}
1017
1008
0 commit comments