summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-01-25 17:22:08 -0800
committerBrian Anderson <banderson@mozilla.com>2012-01-25 17:22:08 -0800
commitb7b8455e540a4acca4c602f248534e264b45664d (patch)
tree850cb605c7b220428f58377d1f77984e925d1a15 /src/comp
parent1586cce0ea1082f4716b50520ed9cb40941f7fad (diff)
downloadrust-b7b8455e540a4acca4c602f248534e264b45664d.tar.gz
rust-b7b8455e540a4acca4c602f248534e264b45664d.zip
rustc: Add pprust::variant_to_str
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/syntax/print/pprust.rs56
1 files changed, 39 insertions, 17 deletions
diff --git a/src/comp/syntax/print/pprust.rs b/src/comp/syntax/print/pprust.rs
index 9e6b25aa2fc..d235ef59b62 100644
--- a/src/comp/syntax/print/pprust.rs
+++ b/src/comp/syntax/print/pprust.rs
@@ -137,6 +137,24 @@ fn attribute_to_str(attr: ast::attribute) -> str {
     be to_str(attr, print_attribute);
 }
 
+fn variant_to_str(var: ast::variant) -> str {
+    be to_str(var, print_variant);
+}
+
+#[test]
+fn test_variant_to_str() {
+    let var = ast_util::respan(ast_util::dummy_sp(), {
+        name: "principle_skinner",
+        attrs: [],
+        args: [],
+        id: 0,
+        disr_expr: none
+    });
+
+    let varstr = variant_to_str(var);
+    assert varstr == "principle_skinner";
+}
+
 fn cbox(s: ps, u: uint) { s.boxes += [pp::consistent]; pp::cbox(s.s, u); }
 
 fn box(s: ps, u: uint, b: pp::breaks) { s.boxes += [b]; pp::box(s.s, u, b); }
@@ -436,23 +454,7 @@ fn print_item(s: ps, &&item: @ast::item) {
                 maybe_print_comment(s, v.span.lo);
                 print_outer_attributes(s, v.node.attrs);
                 ibox(s, indent_unit);
-                word(s.s, v.node.name);
-                if vec::len(v.node.args) > 0u {
-                    popen(s);
-                    fn print_variant_arg(s: ps, arg: ast::variant_arg) {
-                        print_type(s, arg.ty);
-                    }
-                    commasep(s, consistent, v.node.args, print_variant_arg);
-                    pclose(s);
-                }
-                alt v.node.disr_expr {
-                  some(d) {
-                    space(s.s);
-                    word_space(s, "=");
-                    print_expr(s, d);
-                  }
-                  _ {}
-                }
+                print_variant(s, v);
                 word(s.s, ",");
                 end(s);
                 maybe_print_trailing_comment(s, v.span, none::<uint>);
@@ -510,6 +512,26 @@ fn print_item(s: ps, &&item: @ast::item) {
     s.ann.post(ann_node);
 }
 
+fn print_variant(s: ps, v: ast::variant) {
+    word(s.s, v.node.name);
+    if vec::len(v.node.args) > 0u {
+        popen(s);
+        fn print_variant_arg(s: ps, arg: ast::variant_arg) {
+            print_type(s, arg.ty);
+        }
+        commasep(s, consistent, v.node.args, print_variant_arg);
+        pclose(s);
+    }
+    alt v.node.disr_expr {
+      some(d) {
+        space(s.s);
+        word_space(s, "=");
+        print_expr(s, d);
+      }
+      _ {}
+    }
+}
+
 fn print_ty_method(s: ps, m: ast::ty_method) {
     hardbreak_if_not_bol(s);
     cbox(s, indent_unit);