Skip to content

Commit ac5f089

Browse files
committed
rustc: support owned_box lang items with more (defaulted) type parameters.
1 parent f2fce30 commit ac5f089

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/librustc/ty/context.rs

+9-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use middle::lang_items;
3131
use middle::resolve_lifetime::{self, ObjectLifetimeDefault};
3232
use middle::stability;
3333
use mir::{Mir, interpret};
34-
use ty::subst::{Kind, Substs};
34+
use ty::subst::{Kind, Substs, Subst};
3535
use ty::ReprOptions;
3636
use ty::Instance;
3737
use traits;
@@ -1957,7 +1957,14 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
19571957
pub fn mk_box(self, ty: Ty<'tcx>) -> Ty<'tcx> {
19581958
let def_id = self.require_lang_item(lang_items::OwnedBoxLangItem);
19591959
let adt_def = self.adt_def(def_id);
1960-
let substs = self.mk_substs(iter::once(Kind::from(ty)));
1960+
let substs = Substs::for_item(self, def_id, |_, _| bug!(), |def, substs| {
1961+
if def.index == 0 {
1962+
ty
1963+
} else {
1964+
assert!(def.has_default);
1965+
self.type_of(def.def_id).subst(self, substs)
1966+
}
1967+
});
19611968
self.mk_ty(TyAdt(adt_def, substs))
19621969
}
19631970

0 commit comments

Comments
 (0)