about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2013-01-31 16:47:19 -0800
committerNiko Matsakis <niko@alum.mit.edu>2013-01-31 16:56:12 -0800
commit71478f9ce3b5a7b3ef8cee9f9b2c77ff21e1ae9f (patch)
tree3ee766b7b2840673722de643d70769fe7e3161d4 /src/libsyntax
parent0682ad0eb9a6b268498a81b2e16a40544e44f0fa (diff)
downloadrust-71478f9ce3b5a7b3ef8cee9f9b2c77ff21e1ae9f.tar.gz
rust-71478f9ce3b5a7b3ef8cee9f9b2c77ff21e1ae9f.zip
Workaround for #4717: pad contents of ast. rs=breakage
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/ast.rs5
-rw-r--r--src/libsyntax/fold.rs5
-rw-r--r--src/libsyntax/parse/parser.rs3
-rw-r--r--src/libsyntax/print/pprust.rs2
-rw-r--r--src/libsyntax/visit.rs2
5 files changed, 11 insertions, 6 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs
index 435e514df44..e85f41c54a2 100644
--- a/src/libsyntax/ast.rs
+++ b/src/libsyntax/ast.rs
@@ -695,7 +695,10 @@ pub enum expr_ {
        (implicit) condition is always true. */
     expr_loop(blk, Option<ident>),
     expr_match(@expr, ~[arm]),
-    expr_fn(Proto, fn_decl, blk),
+
+    // FIXME(#4717) the @() is req'd on windows or else LLVM croaks
+    expr_fn(Proto, fn_decl, blk, @()),
+
     expr_fn_block(fn_decl, blk),
     // Inner expr is always an expr_fn_block. We need the wrapping node to
     // easily type this (a function returning nil on the inside but bool on
diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs
index 2c2ecb91e21..5c80a6664de 100644
--- a/src/libsyntax/fold.rs
+++ b/src/libsyntax/fold.rs
@@ -466,10 +466,11 @@ pub fn noop_fold_expr(e: expr_, fld: ast_fold) -> expr_ {
             expr_match(fld.fold_expr(expr),
                      vec::map((*arms), |x| fld.fold_arm(*x)))
           }
-          expr_fn(proto, decl, ref body) => {
+          expr_fn(proto, decl, ref body, _) => {
             expr_fn(proto,
                     fold_fn_decl(decl, fld),
-                    fld.fold_block(*body))
+                    fld.fold_block(*body),
+                    @())
           }
           expr_fn_block(decl, ref body) => {
             expr_fn_block(fold_fn_decl(decl, fld),
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 81393310cda..48f38092f88 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -1567,7 +1567,8 @@ pub impl Parser {
         let decl = self.parse_fn_decl(|p| p.parse_arg_or_capture_item());
 
         let body = self.parse_block();
-        return self.mk_expr(lo, body.span.hi,expr_fn(proto, decl, body));
+        return self.mk_expr(lo, body.span.hi,
+                            expr_fn(proto, decl, body, @()));
     }
 
     // `|args| { ... }` like in `do` expressions
diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs
index 39fb98aea26..6661f5e810a 100644
--- a/src/libsyntax/print/pprust.rs
+++ b/src/libsyntax/print/pprust.rs
@@ -1305,7 +1305,7 @@ pub fn print_expr(s: ps, &&expr: @ast::expr) {
         }
         bclose_(s, expr.span, match_indent_unit);
       }
-      ast::expr_fn(proto, decl, ref body) => {
+      ast::expr_fn(proto, decl, ref body, _) => {
         // containing cbox, will be closed by print-block at }
         cbox(s, indent_unit);
         // head-box, will be closed by print-block at start
diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs
index dd7f274b5ba..a174ea47740 100644
--- a/src/libsyntax/visit.rs
+++ b/src/libsyntax/visit.rs
@@ -457,7 +457,7 @@ pub fn visit_expr<E>(ex: @expr, e: E, v: vt<E>) {
         (v.visit_expr)(x, e, v);
         for (*arms).each |a| { (v.visit_arm)(*a, e, v); }
       }
-      expr_fn(proto, decl, ref body) => {
+      expr_fn(proto, decl, ref body, _) => {
         (v.visit_fn)(fk_anon(proto), decl, (*body),
                      ex.span, ex.id, e, v);
       }