// Encode inherent implementations for this structure.
encode_inherent_implementations(ecx, rbml_w, def_id);
- if let Some(ctor_id) = struct_def.ctor_id {
- let ctor_did = ecx.tcx.map.local_def_id(ctor_id);
+ if struct_def.kind != hir::VariantKind::Dict {
+ let ctor_did = ecx.tcx.map.local_def_id(struct_def.id);
rbml_w.wr_tagged_u64(tag_items_data_item_struct_ctor,
def_to_u64(ctor_did));
}
{
debug!("astencode: copying variant {:?} => {:?}",
orig_variant.did, i_variant.node.id);
- copy_item_type(dcx, i_variant.node.id, orig_variant.did);
+ copy_item_type(dcx, i_variant.node.def.id, orig_variant.did);
}
}
hir::ItemStruct(ref def, _) => {
- if let Some(ctor_id) = def.ctor_id {
+ if def.kind != hir::VariantKind::Dict {
let ctor_did = dcx.tcx.lookup_adt_def(orig_did)
.struct_variant().did;
debug!("astencode: copying ctor {:?} => {:?}", ctor_did,
{
let did = tcx.map.local_def_id(it.id);
- let ctor_id = def.ctor_id.map_or(did,
- |ctor_id| tcx.map.local_def_id(ctor_id));
+ let ctor_id = if def.kind != hir::VariantKind::Dict {
+ tcx.map.local_def_id(def.id)
+ } else {
+ did
+ };
tcx.intern_adt_def(
did,
ty::AdtKind::Struct,
{
let did = tcx.map.local_def_id(v.node.def.id);
let name = v.node.name;
- convert_struct_variant(tcx, did, name, disr, &v.node.def)
+ convert_struct_variant(tcx, did, name, disr, &v.node.def, did)
}
let did = tcx.map.local_def_id(it.id);
let repr_hints = tcx.lookup_repr_hints(did);