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 | |
| parent | 0682ad0eb9a6b268498a81b2e16a40544e44f0fa (diff) | |
| download | rust-71478f9ce3b5a7b3ef8cee9f9b2c77ff21e1ae9f.tar.gz rust-71478f9ce3b5a7b3ef8cee9f9b2c77ff21e1ae9f.zip | |
Workaround for #4717: pad contents of ast. rs=breakage
| -rw-r--r-- | src/librustc/front/test.rs | 2 | ||||
| -rw-r--r-- | src/librustc/middle/check_loop.rs | 2 | ||||
| -rw-r--r-- | src/librustc/middle/freevars.rs | 2 | ||||
| -rw-r--r-- | src/librustc/middle/liveness.rs | 6 | ||||
| -rw-r--r-- | src/librustc/middle/moves.rs | 2 | ||||
| -rw-r--r-- | src/librustc/middle/resolve.rs | 2 | ||||
| -rw-r--r-- | src/librustc/middle/trans/debuginfo.rs | 2 | ||||
| -rw-r--r-- | src/librustc/middle/trans/expr.rs | 2 | ||||
| -rw-r--r-- | src/librustc/middle/typeck/check/mod.rs | 2 | ||||
| -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 |
14 files changed, 22 insertions, 17 deletions
diff --git a/src/librustc/front/test.rs b/src/librustc/front/test.rs index 53c2f71c548..a33d78c3b58 100644 --- a/src/librustc/front/test.rs +++ b/src/librustc/front/test.rs @@ -510,7 +510,7 @@ fn mk_test_wrapper(cx: test_ctxt, let wrapper_expr = ast::expr { id: cx.sess.next_node_id(), callee_id: cx.sess.next_node_id(), - node: ast::expr_fn(ast::ProtoBare, wrapper_decl, wrapper_body), + node: ast::expr_fn(ast::ProtoBare, wrapper_decl, wrapper_body, @()), span: span }; diff --git a/src/librustc/middle/check_loop.rs b/src/librustc/middle/check_loop.rs index bfe73a9d15c..11c557f0249 100644 --- a/src/librustc/middle/check_loop.rs +++ b/src/librustc/middle/check_loop.rs @@ -32,7 +32,7 @@ pub fn check_crate(tcx: ty::ctxt, crate: @crate) { expr_loop(ref b, _) => { (v.visit_block)((*b), {in_loop: true,.. cx}, v); } - expr_fn(_, _, _) => { + expr_fn(*) => { visit::visit_expr(e, {in_loop: false, can_ret: true}, v); } expr_fn_block(_, ref b) => { diff --git a/src/librustc/middle/freevars.rs b/src/librustc/middle/freevars.rs index 68bb1db9af3..35c6b625e11 100644 --- a/src/librustc/middle/freevars.rs +++ b/src/librustc/middle/freevars.rs @@ -48,7 +48,7 @@ fn collect_freevars(def_map: resolve::DefMap, blk: ast::blk) let walk_expr = fn@(expr: @ast::expr, &&depth: int, v: visit::vt<int>) { match expr.node { - ast::expr_fn(proto, _, _) => { + ast::expr_fn(proto, _, _, _) => { if proto != ast::ProtoBare { visit::visit_expr(expr, depth + 1, v); } diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs index e5e0181bd3c..0cafe528d04 100644 --- a/src/librustc/middle/liveness.rs +++ b/src/librustc/middle/liveness.rs @@ -559,8 +559,8 @@ fn visit_expr(expr: @expr, &&self: @IrMaps, vt: vt<@IrMaps>) { } visit::visit_expr(expr, self, vt); } - expr_fn(_, _, _) | - expr_fn_block(_, _) => { + expr_fn(*) | + expr_fn_block(*) => { // Interesting control flow (for loops can contain labeled // breaks or continues) self.add_live_node_for_node(expr.id, ExprNode(expr.span)); @@ -1105,7 +1105,7 @@ impl Liveness { self.propagate_through_expr(e, succ) } - expr_fn(_, _, ref blk) | expr_fn_block(_, ref blk) => { + expr_fn(_, _, ref blk, _) | expr_fn_block(_, ref blk) => { debug!("%s is an expr_fn or expr_fn_block", expr_to_str(expr, self.tcx.sess.intr())); diff --git a/src/librustc/middle/moves.rs b/src/librustc/middle/moves.rs index 2d6565cc9c6..81b3761451c 100644 --- a/src/librustc/middle/moves.rs +++ b/src/librustc/middle/moves.rs @@ -615,7 +615,7 @@ impl VisitContext { self.use_expr(base, comp_mode, visitor); } - expr_fn(_, _, ref body) | + expr_fn(_, _, ref body, _) | expr_fn_block(_, ref body) => { let cap_vars = self.compute_captures(expr.id); self.move_maps.capture_map.insert(expr.id, cap_vars); diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs index 5314005a956..f7488156204 100644 --- a/src/librustc/middle/resolve.rs +++ b/src/librustc/middle/resolve.rs @@ -4820,7 +4820,7 @@ pub impl Resolver { visit_expr(expr, (), visitor); } - expr_fn(_, ref fn_decl, ref block) | + expr_fn(_, ref fn_decl, ref block, _) | expr_fn_block(ref fn_decl, ref block) => { self.resolve_function(FunctionRibKind(expr.id, block.node.id), Some(@/*bad*/copy *fn_decl), diff --git a/src/librustc/middle/trans/debuginfo.rs b/src/librustc/middle/trans/debuginfo.rs index 7d724ef7441..d4c86cbaa09 100644 --- a/src/librustc/middle/trans/debuginfo.rs +++ b/src/librustc/middle/trans/debuginfo.rs @@ -789,7 +789,7 @@ pub fn create_function(fcx: fn_ctxt) -> @metadata<subprogram_md> { } ast_map::node_expr(expr) => { match /*bad*/copy expr.node { - ast::expr_fn(_, decl, _) => { + ast::expr_fn(_, decl, _, _) => { ((dbg_cx.names)(~"fn"), decl.output, expr.id) } ast::expr_fn_block(decl, _) => { diff --git a/src/librustc/middle/trans/expr.rs b/src/librustc/middle/trans/expr.rs index 2a8a6a696c2..2443f426ee4 100644 --- a/src/librustc/middle/trans/expr.rs +++ b/src/librustc/middle/trans/expr.rs @@ -566,7 +566,7 @@ fn trans_rvalue_dps_unadjusted(bcx: block, expr: @ast::expr, return tvec::trans_fixed_vstore(bcx, expr, expr, dest); } // XXX: Bad copy. - ast::expr_fn(proto, copy decl, ref body) => { + ast::expr_fn(proto, copy decl, ref body, _) => { // Don't use this function for anything real. Use the one in // astconv instead. return closure::trans_expr_fn(bcx, proto, decl, diff --git a/src/librustc/middle/typeck/check/mod.rs b/src/librustc/middle/typeck/check/mod.rs index f13de691a69..620c0d80440 100644 --- a/src/librustc/middle/typeck/check/mod.rs +++ b/src/librustc/middle/typeck/check/mod.rs @@ -2164,7 +2164,7 @@ pub fn check_expr_with_unifier(fcx: @fn_ctxt, ast::expr_match(discrim, ref arms) => { bot = _match::check_match(fcx, expr, discrim, (/*bad*/copy *arms)); } - ast::expr_fn(proto, ref decl, ref body) => { + ast::expr_fn(proto, ref decl, ref body, _) => { check_expr_fn(fcx, expr, Some(proto), decl, (*body), Vanilla, expected); } 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); } |
