diff options
| author | Flavio Percoco <flaper87@gmail.com> | 2015-01-22 22:15:02 +0100 |
|---|---|---|
| committer | Flavio Percoco <flaper87@gmail.com> | 2015-02-22 02:14:24 +0100 |
| commit | 4148d5361a7d0ace1cf3b64d07c6252bbce087af (patch) | |
| tree | c3764665877c19dddb63cc55efea17d7aae1ae5a /src/librustc/metadata | |
| parent | 6a2f16e1365160d05a3d360f21756039d1bd3254 (diff) | |
| download | rust-4148d5361a7d0ace1cf3b64d07c6252bbce087af.tar.gz rust-4148d5361a7d0ace1cf3b64d07c6252bbce087af.zip | |
Fix fallout from libsyntax implementation
Diffstat (limited to 'src/librustc/metadata')
| -rw-r--r-- | src/librustc/metadata/decoder.rs | 8 | ||||
| -rw-r--r-- | src/librustc/metadata/encoder.rs | 12 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/librustc/metadata/decoder.rs b/src/librustc/metadata/decoder.rs index e5576de6e84..d4512f51980 100644 --- a/src/librustc/metadata/decoder.rs +++ b/src/librustc/metadata/decoder.rs @@ -126,6 +126,7 @@ enum Family { TupleVariant, // v StructVariant, // V Impl, // i + DefTrait, // d Trait, // I Struct, // S PublicField, // g @@ -151,6 +152,7 @@ fn item_family(item: rbml::Doc) -> Family { 'v' => TupleVariant, 'V' => StructVariant, 'i' => Impl, + 'd' => DefTrait, 'I' => Trait, 'S' => Struct, 'g' => PublicField, @@ -357,7 +359,7 @@ fn item_to_def_like(item: rbml::Doc, did: ast::DefId, cnum: ast::CrateNum) } Trait => DlDef(def::DefTrait(did)), Enum => DlDef(def::DefTy(did, true)), - Impl => DlImpl(did), + Impl | DefTrait => DlImpl(did), PublicField | InheritedField => DlField, } } @@ -480,7 +482,7 @@ pub fn get_impl_trait<'tcx>(cdata: Cmd, let item_doc = lookup_item(id, cdata.data()); let fam = item_family(item_doc); match fam { - Family::Impl => { + Family::Impl | Family::DefTrait => { reader::maybe_get_doc(item_doc, tag_item_trait_ref).map(|tp| { doc_trait_ref(tp, tcx, cdata) }) @@ -1356,7 +1358,7 @@ pub fn get_trait_of_item(cdata: Cmd, id: ast::NodeId, tcx: &ty::ctxt) let parent_item_doc = lookup_item(parent_item_id.node, cdata.data()); match item_family(parent_item_doc) { Trait => Some(item_def_id(parent_item_doc, cdata)), - Impl => { + Impl | DefTrait => { reader::maybe_get_doc(parent_item_doc, tag_item_trait_ref) .map(|_| item_trait_ref(parent_item_doc, tcx, cdata).def_id) } diff --git a/src/librustc/metadata/encoder.rs b/src/librustc/metadata/encoder.rs index 42a70cec5df..fc9d2a13834 100644 --- a/src/librustc/metadata/encoder.rs +++ b/src/librustc/metadata/encoder.rs @@ -1201,6 +1201,18 @@ fn encode_info_for_item(ecx: &EncodeContext, None => {} } } + ast::ItemDefTrait(unsafety, ref ast_trait_ref) => { + add_to_index(item, rbml_w, index); + rbml_w.start_tag(tag_items_data_item); + encode_def_id(rbml_w, def_id); + encode_family(rbml_w, 'd'); + encode_name(rbml_w, item.ident.name); + encode_unsafety(rbml_w, unsafety); + + let trait_ref = ty::node_id_to_trait_ref(tcx, ast_trait_ref.ref_id); + encode_trait_ref(rbml_w, ecx, &*trait_ref, tag_item_trait_ref); + rbml_w.end_tag(); + } ast::ItemImpl(unsafety, polarity, _, ref opt_trait, ref ty, ref ast_items) => { // We need to encode information about the default methods we // have inherited, so we drive this based on the impl structure. |
