about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKevin Atkinson <kevina@cs.utah.edu>2012-01-15 19:56:20 -0700
committerMarijn Haverbeke <marijnh@gmail.com>2012-01-16 11:19:32 +0100
commit2d36a71aee17b6dad04a184541cebbb8e3901a5a (patch)
treeb2cd21074ce66517381ff01b344be4af9ade566b
parent13b9a16a7b98f2308d7fae01ad122a3f94032c63 (diff)
downloadrust-2d36a71aee17b6dad04a184541cebbb8e3901a5a.tar.gz
rust-2d36a71aee17b6dad04a184541cebbb8e3901a5a.zip
Update pretty printer to print out disr. values.
Partly fixes issue #1510.  "rustc --pretty=typed" fails.
-rw-r--r--src/comp/syntax/print/pprust.rs8
-rw-r--r--src/test/run-pass/enum-disr-val-pretty.rs16
2 files changed, 24 insertions, 0 deletions
diff --git a/src/comp/syntax/print/pprust.rs b/src/comp/syntax/print/pprust.rs
index e0c1acc4fcc..38449d6e255 100644
--- a/src/comp/syntax/print/pprust.rs
+++ b/src/comp/syntax/print/pprust.rs
@@ -428,6 +428,14 @@ fn print_item(s: ps, &&item: @ast::item) {
                     commasep(s, consistent, v.node.args, print_variant_arg);
                     pclose(s);
                 }
+                alt v.node.disr_expr {
+                  some(expr) {
+                    nbsp(s);
+                    word_nbsp(s, "=");
+                    print_expr(s, expr);
+                  }
+                  _ {}
+                }
                 word(s.s, ";");
                 maybe_print_trailing_comment(s, v.span, none::<uint>);
             }
diff --git a/src/test/run-pass/enum-disr-val-pretty.rs b/src/test/run-pass/enum-disr-val-pretty.rs
new file mode 100644
index 00000000000..68226f63a2f
--- /dev/null
+++ b/src/test/run-pass/enum-disr-val-pretty.rs
@@ -0,0 +1,16 @@
+// pp-exact
+
+enum color { red = 1; green; blue; imaginary = -1; }
+
+fn main() {
+    test_color(red, 1, "red");
+    test_color(green, 2, "green");
+    test_color(blue, 3, "blue");
+    test_color(imaginary, -1, "imaginary");
+}
+
+fn test_color(color: color, val: int, name: str) unsafe{
+    assert (color as int == val);
+    assert (color as float == val as float);
+}
+