diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2012-10-03 17:18:24 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2012-10-03 17:18:24 -0700 |
| commit | f885205b1bb57f270f533aa5e8dc9951c1be603c (patch) | |
| tree | 66f84d34cce82ca024299c92ec6ea59c6e1c1b2a | |
| parent | b34327be0dba2034afe8c14b014ba8da22d5c9f5 (diff) | |
| download | rust-f885205b1bb57f270f533aa5e8dc9951c1be603c.tar.gz rust-f885205b1bb57f270f533aa5e8dc9951c1be603c.zip | |
rustc: Unbreak old-style boxed traits
| -rw-r--r-- | src/rustc/middle/trans/base.rs | 2 | ||||
| -rw-r--r-- | src/rustc/middle/trans/meth.rs | 7 |
2 files changed, 4 insertions, 5 deletions
diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs index 70231357003..a23baa8afde 100644 --- a/src/rustc/middle/trans/base.rs +++ b/src/rustc/middle/trans/base.rs @@ -2348,7 +2348,7 @@ fn trap(bcx: block) { fn push_rtcall(ccx: @crate_ctxt, name: ~str, did: ast::def_id) { if ccx.rtcalls.contains_key(name) { - fail fmt!("multiple definitions for runtime call %s", name); + ccx.sess.bug(fmt!("multiple definitions for runtime call %s", name)); } ccx.rtcalls.insert(name, did); } diff --git a/src/rustc/middle/trans/meth.rs b/src/rustc/middle/trans/meth.rs index 5bf62466595..a94519306a4 100644 --- a/src/rustc/middle/trans/meth.rs +++ b/src/rustc/middle/trans/meth.rs @@ -550,9 +550,6 @@ fn trans_trait_cast(bcx: block, let v_ty = expr_ty(bcx, val); let mut llboxdest = GEPi(bcx, lldest, [0u, 1u]); - llboxdest = PointerCast(bcx, llboxdest, - T_ptr(type_of::type_of(bcx.ccx(), v_ty))); - if bcx.tcx().legacy_boxed_traits.contains_key(id) { // Allocate an @ box and store the value into it let {bcx: new_bcx, box: llbox, body: body} = malloc_boxed(bcx, v_ty); @@ -562,9 +559,11 @@ fn trans_trait_cast(bcx: block, revoke_clean(bcx, llbox); // Store the @ box into the pair - Store(bcx, llbox, llboxdest); + Store(bcx, llbox, PointerCast(bcx, llboxdest, T_ptr(val_ty(llbox)))); } else { // Just store the @ box into the pair. + llboxdest = PointerCast(bcx, llboxdest, + T_ptr(type_of::type_of(bcx.ccx(), v_ty))); bcx = expr::trans_into(bcx, val, SaveIn(llboxdest)); } |
