diff options
| author | Nicholas Nethercote <nnethercote@mozilla.com> | 2019-02-05 15:12:15 +1100 |
|---|---|---|
| committer | Nicholas Nethercote <nnethercote@mozilla.com> | 2019-02-05 15:12:15 +1100 |
| commit | 473095345b74b4d6b836d3ab2e3ace0c6719b20f (patch) | |
| tree | 6a02ec381ec8a6f6c2d1512b261419ee43fd092a | |
| parent | 8909f70a3249f61be10627fc6b6634dedf66f77a (diff) | |
| download | rust-473095345b74b4d6b836d3ab2e3ace0c6719b20f.tar.gz rust-473095345b74b4d6b836d3ab2e3ace0c6719b20f.zip | |
Neaten up `fold_crate`.
| -rw-r--r-- | src/libsyntax/fold.rs | 39 |
1 files changed, 15 insertions, 24 deletions
diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs index a7e835fbd45..567175b84df 100644 --- a/src/libsyntax/fold.rs +++ b/src/libsyntax/fold.rs @@ -980,7 +980,7 @@ pub fn noop_fold_mod<T: Folder>(Mod {inner, items, inline}: Mod, folder: &mut T) pub fn noop_fold_crate<T: Folder>(Crate {module, attrs, span}: Crate, folder: &mut T) -> Crate { - let mut items = folder.fold_item(P(Item { + let item = P(Item { ident: keywords::Invalid.ident(), attrs, id: DUMMY_NODE_ID, @@ -988,30 +988,21 @@ pub fn noop_fold_crate<T: Folder>(Crate {module, attrs, span}: Crate, span, node: ItemKind::Mod(module), tokens: None, - })).into_iter(); - - let (module, attrs, span) = match items.next() { - Some(item) => { - assert!(items.next().is_none(), - "a crate cannot expand to more than one item"); - item.and_then(|Item { attrs, span, node, .. }| { - match node { - ItemKind::Mod(m) => (m, attrs, span), - _ => panic!("fold converted a module to not a module"), - } - }) + }); + let items = folder.fold_item(item); + + let len = items.len(); + if len == 0 { + let module = Mod { inner: span, items: vec![], inline: true }; + Crate { module, attrs: vec![], span } + } else if len == 1 { + let Item { attrs, span, node, .. } = items.into_iter().next().unwrap().into_inner(); + match node { + ItemKind::Mod(module) => Crate { module, attrs, span }, + _ => panic!("fold converted a module to not a module"), } - None => (Mod { - inner: span, - items: vec![], - inline: true, - }, vec![], span) - }; - - Crate { - module, - attrs, - span, + } else { + panic!("a crate cannot expand to more than one item"); } } |
