diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2013-01-31 16:47:19 -0800 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2013-01-31 16:56:12 -0800 |
| commit | 71478f9ce3b5a7b3ef8cee9f9b2c77ff21e1ae9f (patch) | |
| tree | 3ee766b7b2840673722de643d70769fe7e3161d4 /src/libsyntax | |
| parent | 0682ad0eb9a6b268498a81b2e16a40544e44f0fa (diff) | |
| download | rust-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.rs | 5 | ||||
| -rw-r--r-- | src/libsyntax/fold.rs | 5 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 3 | ||||
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/visit.rs | 2 |
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); } |
