Skip to content

Commit f63e30a

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

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;
@@ -1959,7 +1959,14 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
19591959
pub fn mk_box(self, ty: Ty<'tcx>) -> Ty<'tcx> {
19601960
let def_id = self.require_lang_item(lang_items::OwnedBoxLangItem);
19611961
let adt_def = self.adt_def(def_id);
1962-
let substs = self.mk_substs(iter::once(Kind::from(ty)));
1962+
let substs = Substs::for_item(self, def_id, |_, _| bug!(), |def, substs| {
1963+
if def.index == 0 {
1964+
ty
1965+
} else {
1966+
assert!(def.has_default);
1967+
self.type_of(def.def_id).subst(self, substs)
1968+
}
1969+
});
19631970
self.mk_ty(TyAdt(adt_def, substs))
19641971
}
19651972

0 commit comments

Comments
 (0)