mirror of
https://github.com/rust-lang/rust
synced 2024-11-05 20:45:15 +00:00
Make trans_anon_obj properly thread its bcx
Closes #893 Unfortunately, anon objs are still so broken as to be useless (fields don't work).
This commit is contained in:
parent
e4c91fdf65
commit
6a7800508b
1 changed files with 3 additions and 9 deletions
|
@ -367,16 +367,10 @@ fn trans_anon_obj(bcx: @block_ctxt, sp: span, anon_obj: ast::anon_obj,
|
|||
// If inner_obj (the object being extended) exists, translate it.
|
||||
// Translating inner_obj returns a ValueRef (pointer to a 2-word
|
||||
// value) wrapped in a result.
|
||||
let inner_obj_val: result = trans_temp_expr(bcx, e);
|
||||
|
||||
check type_is_tup_like(bcx, body_ty);
|
||||
let body_inner_obj =
|
||||
GEP_tup_like(bcx, body_ty, body,
|
||||
[0, abi::obj_body_elt_inner_obj]);
|
||||
bcx = body_inner_obj.bcx;
|
||||
bcx =
|
||||
copy_val(bcx, INIT, body_inner_obj.val, inner_obj_val.val,
|
||||
inner_obj_ty);
|
||||
let {bcx: cx, val: body_inner_obj} = GEP_tup_like
|
||||
(bcx, body_ty, body, [0, abi::obj_body_elt_inner_obj]);
|
||||
bcx = trans_expr(cx, e, save_in(body_inner_obj));
|
||||
}
|
||||
}
|
||||
revoke_clean(bcx, box);
|
||||
|
|
Loading…
Reference in a new issue