diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2012-08-08 14:17:52 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2012-08-08 14:19:21 -0700 |
| commit | f110e8f21c707cb4bbb5e54b45f4458987920322 (patch) | |
| tree | d4999199d287f0e3e53569ba8bdc82a593654a6c /src/libsyntax/print | |
| parent | 166cb1b28bc23303d15e8c1c4a71d0cdff0556a2 (diff) | |
| download | rust-f110e8f21c707cb4bbb5e54b45f4458987920322.tar.gz rust-f110e8f21c707cb4bbb5e54b45f4458987920322.zip | |
rustc: Do some plumbing work on nested enums
Diffstat (limited to 'src/libsyntax/print')
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 4b23fbf74a9..56b3197c336 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -516,18 +516,7 @@ fn print_item(s: ps, &&item: @ast::item) { word(s.s, ~";"); end(s); } else { - bopen(s); - for variants.each |v| { - space_if_not_bol(s); - maybe_print_comment(s, v.span.lo); - print_outer_attributes(s, v.node.attrs); - ibox(s, indent_unit); - print_variant(s, v); - word(s.s, ~","); - end(s); - maybe_print_trailing_comment(s, v.span, none::<uint>); - } - bclose(s, item.span); + print_variants(s, variants, item.span); } } ast::item_class(struct_def, tps) => { @@ -582,6 +571,21 @@ fn print_item(s: ps, &&item: @ast::item) { s.ann.post(ann_node); } +fn print_variants(s: ps, variants: ~[ast::variant], span: ast::span) { + bopen(s); + for variants.each |v| { + space_if_not_bol(s); + maybe_print_comment(s, v.span.lo); + print_outer_attributes(s, v.node.attrs); + ibox(s, indent_unit); + print_variant(s, v); + word(s.s, ~","); + end(s); + maybe_print_trailing_comment(s, v.span, none::<uint>); + } + bclose(s, span); +} + fn print_struct(s: ps, struct_def: @ast::struct_def, tps: ~[ast::ty_param], ident: ast::ident, span: ast::span) { word_nbsp(s, *ident); @@ -710,6 +714,9 @@ fn print_variant(s: ps, v: ast::variant) { head(s, ~""); print_struct(s, struct_def, ~[], v.node.name, v.span); } + ast::enum_variant_kind(variants) => { + print_variants(s, variants, v.span); + } } match v.node.disr_expr { some(d) => { |
