Skip to content

Commit 639d88a

Browse files
committed
Move expr_uniq case in trans to a saner place
Note that unique pointers are still broken in more ways than I can count.
1 parent f8a3523 commit 639d88a

File tree

1 file changed

+4
-12
lines changed

1 file changed

+4
-12
lines changed

src/comp/middle/trans.rs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3103,19 +3103,10 @@ fn trans_lval_gen(cx: @block_ctxt, e: @ast::expr) -> lval_result {
31033103
};
31043104
ret lval_mem(sub.bcx, val);
31053105
}
3106-
ast::expr_uniq(contents) { ret trans_uniq(cx, contents); }
31073106
ast::expr_self_method(ident) {
31083107
alt copy cx.fcx.llself {
31093108
some(pair) {
3110-
let r = pair.v;
3111-
let t = pair.t;
3112-
ret trans_field(cx, e.span, r, t, ident);
3113-
}
3114-
_ {
3115-
// Shouldn't happen.
3116-
bcx_ccx(cx).sess.bug("trans_lval called on \
3117-
expr_self_method in \
3118-
a context without llself");
3109+
ret trans_field(cx, e.span, pair.v, pair.t, ident);
31193110
}
31203111
}
31213112
}
@@ -4109,6 +4100,7 @@ fn trans_expr_out(cx: @block_ctxt, e: @ast::expr, output: out_method) ->
41094100
CondBr(cx, cond, then_cx.llbb, else_cx.llbb);
41104101
ret rslt(join_branches(cx, [check_res, els]), C_nil());
41114102
}
4103+
ast::expr_uniq(contents) { ret trans_uniq(cx, contents); }
41124104
ast::expr_break. { ret trans_break(e.span, cx); }
41134105
ast::expr_cont. { ret trans_cont(e.span, cx); }
41144106
ast::expr_ret(ex) { ret trans_ret(cx, ex); }
@@ -4348,7 +4340,7 @@ fn trans_put(in_cx: @block_ctxt, e: option::t<@ast::expr>) -> result {
43484340
ret rslt(next_cx, C_nil());
43494341
}
43504342

4351-
fn trans_uniq(cx: @block_ctxt, contents: @ast::expr) -> lval_result {
4343+
fn trans_uniq(cx: @block_ctxt, contents: @ast::expr) -> result {
43524344
let bcx = cx;
43534345

43544346
let contents_ty = ty::expr_ty(bcx_tcx(bcx), contents);
@@ -4364,7 +4356,7 @@ fn trans_uniq(cx: @block_ctxt, contents: @ast::expr) -> lval_result {
43644356

43654357
let llptr = Load(bcx, llptrptr);
43664358
r = trans_expr_out(bcx, contents, save_in(llptr));
4367-
ret lval_val(r.bcx, llptrptr);
4359+
ret rslt(r.bcx, llptrptr);
43684360
}
43694361

43704362
fn trans_break_cont(sp: span, cx: @block_ctxt, to_end: bool) -> result {

0 commit comments

Comments
 (0)