diff --git a/src/comp/middle/ty.rs b/src/comp/middle/ty.rs index 399113d437a..27a78a937ff 100644 --- a/src/comp/middle/ty.rs +++ b/src/comp/middle/ty.rs @@ -2041,31 +2041,6 @@ fn unify_obj(&@ctxt cx, ret ures_ok(t); } - // FIXME: This function should not be necessary, but it is for now until - // we eliminate pushdown. The typechecker should never rely on early - // resolution of type variables. - fn resolve_all_vars(&ty_ctxt tcx, &@var_bindings vb, t typ) -> t { - if (!type_contains_vars(tcx, typ)) { ret typ; } - - fn folder(ty_ctxt tcx, @var_bindings vb, int vid) -> t { - // It's possible that we haven't even created the var set. - // Handle this case gracefully. - if ((vid as uint) >= ufind::set_count(vb.sets)) { - ret ty::mk_var(tcx, vid); - } - - auto root_id = ufind::find(vb.sets, vid as uint); - alt (smallintmap::find[t](vb.types, root_id)) { - case (some[t](?typ2)) { - ret fold_ty(tcx, fm_var(bind folder(tcx, vb, _)), typ2); - } - case (none[t]) { ret ty::mk_var(tcx, vid); } - } - } - - ret fold_ty(tcx, fm_var(bind folder(tcx, vb, _)), typ); - } - // If the given type is a variable, returns the structure of that type. fn resolve_type_structure(&ty_ctxt tcx, &@var_bindings vb, t typ) -> fixup_result { diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs index 5c3df0289d8..339d4d2c050 100644 --- a/src/comp/middle/typeck.rs +++ b/src/comp/middle/typeck.rs @@ -935,8 +935,7 @@ fn full(&@fn_ctxt fcx, &span sp, &ty::t expected, &ty::t actual, case (ures_ok(?t)) { let vec[ty::t] result_ty_param_substs = []; for (int var_id in ty_param_subst_var_ids) { - auto tp_subst = ty::unify::resolve_all_vars(fcx.ccx.tcx, - fcx.var_bindings, ty::mk_var(fcx.ccx.tcx, var_id)); + auto tp_subst = ty::mk_var(fcx.ccx.tcx, var_id); result_ty_param_substs += [tp_subst]; }