diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs index 7f2c558862d..d9eabaafce2 100644 --- a/src/rustc/middle/trans/base.rs +++ b/src/rustc/middle/trans/base.rs @@ -644,7 +644,7 @@ fn make_visit_glue(bcx: block, v: ValueRef, t: ty::t) { assert bcx.ccx().tcx.intrinsic_ifaces.contains_key("ty_visitor"); let (iid, ty) = bcx.ccx().tcx.intrinsic_ifaces.get("ty_visitor"); let v = PointerCast(bcx, v, T_ptr(type_of::type_of(bcx.ccx(), ty))); - bcx = reflect::emit_calls_to_iface_visit_ty(bcx, t, Load(bcx, v), iid); + bcx = reflect::emit_calls_to_iface_visit_ty(bcx, t, v, iid); build_return(bcx); } diff --git a/src/test/run-pass/reflect-visit-type.rs b/src/test/run-pass/reflect-visit-type.rs index b996cf860eb..4b92e518b2e 100644 --- a/src/test/run-pass/reflect-visit-type.rs +++ b/src/test/run-pass/reflect-visit-type.rs @@ -1,9 +1,3 @@ -// xfail-test -// -// This doesn't work quite yet. There's something wrong with the callback -// type when dispatching through the visit_glue. Get a GEP crash on the -// callee. - enum my_visitor = @{ mut types: [str] }; impl of intrinsic::ty_visitor for my_visitor {