about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorJed Davis <jld@panix.com>2013-03-08 18:43:40 -0800
committerJed Davis <jld@panix.com>2013-03-09 17:40:59 -0800
commit5066bc9ff48131e4ee91fa9120c2d5894597216c (patch)
tree7051688e16ada9ebe89b1f3e9c4dce38770e3e64 /src/libsyntax
parent2e29f974230f8deeec103ab53a93e7f0f2dbf0fe (diff)
downloadrust-5066bc9ff48131e4ee91fa9120c2d5894597216c.tar.gz
rust-5066bc9ff48131e4ee91fa9120c2d5894597216c.zip
Don't print addr_of(addr_of(e)) as `&&e`, which means something else.
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/print/pprust.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs
index 3744b7a8f6c..94a25591007 100644
--- a/src/libsyntax/print/pprust.rs
+++ b/src/libsyntax/print/pprust.rs
@@ -1217,6 +1217,11 @@ pub fn print_expr(s: @ps, &&expr: @ast::expr) {
       ast::expr_addr_of(m, expr) => {
         word(s.s, ~"&");
         print_mutability(s, m);
+        // Avoid `& &e` => `&&e`.
+        match (m, &expr.node) {
+            (ast::m_imm, &ast::expr_addr_of(*)) => space(s.s),
+            _ => { }
+        }
         print_expr(s, expr);
       }
       ast::expr_lit(lit) => print_literal(s, lit),