Skip to content

Commit 4148d53

Browse files
committed
Fix fallout from libsyntax implementation
1 parent 6a2f16e commit 4148d53

File tree

9 files changed

+35
-8
lines changed

9 files changed

+35
-8
lines changed

src/librustc/metadata/decoder.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ enum Family {
126126
TupleVariant, // v
127127
StructVariant, // V
128128
Impl, // i
129+
DefTrait, // d
129130
Trait, // I
130131
Struct, // S
131132
PublicField, // g
@@ -151,6 +152,7 @@ fn item_family(item: rbml::Doc) -> Family {
151152
'v' => TupleVariant,
152153
'V' => StructVariant,
153154
'i' => Impl,
155+
'd' => DefTrait,
154156
'I' => Trait,
155157
'S' => Struct,
156158
'g' => PublicField,
@@ -357,7 +359,7 @@ fn item_to_def_like(item: rbml::Doc, did: ast::DefId, cnum: ast::CrateNum)
357359
}
358360
Trait => DlDef(def::DefTrait(did)),
359361
Enum => DlDef(def::DefTy(did, true)),
360-
Impl => DlImpl(did),
362+
Impl | DefTrait => DlImpl(did),
361363
PublicField | InheritedField => DlField,
362364
}
363365
}
@@ -480,7 +482,7 @@ pub fn get_impl_trait<'tcx>(cdata: Cmd,
480482
let item_doc = lookup_item(id, cdata.data());
481483
let fam = item_family(item_doc);
482484
match fam {
483-
Family::Impl => {
485+
Family::Impl | Family::DefTrait => {
484486
reader::maybe_get_doc(item_doc, tag_item_trait_ref).map(|tp| {
485487
doc_trait_ref(tp, tcx, cdata)
486488
})
@@ -1356,7 +1358,7 @@ pub fn get_trait_of_item(cdata: Cmd, id: ast::NodeId, tcx: &ty::ctxt)
13561358
let parent_item_doc = lookup_item(parent_item_id.node, cdata.data());
13571359
match item_family(parent_item_doc) {
13581360
Trait => Some(item_def_id(parent_item_doc, cdata)),
1359-
Impl => {
1361+
Impl | DefTrait => {
13601362
reader::maybe_get_doc(parent_item_doc, tag_item_trait_ref)
13611363
.map(|_| item_trait_ref(parent_item_doc, tcx, cdata).def_id)
13621364
}

src/librustc/metadata/encoder.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,6 +1201,18 @@ fn encode_info_for_item(ecx: &EncodeContext,
12011201
None => {}
12021202
}
12031203
}
1204+
ast::ItemDefTrait(unsafety, ref ast_trait_ref) => {
1205+
add_to_index(item, rbml_w, index);
1206+
rbml_w.start_tag(tag_items_data_item);
1207+
encode_def_id(rbml_w, def_id);
1208+
encode_family(rbml_w, 'd');
1209+
encode_name(rbml_w, item.ident.name);
1210+
encode_unsafety(rbml_w, unsafety);
1211+
1212+
let trait_ref = ty::node_id_to_trait_ref(tcx, ast_trait_ref.ref_id);
1213+
encode_trait_ref(rbml_w, ecx, &*trait_ref, tag_item_trait_ref);
1214+
rbml_w.end_tag();
1215+
}
12041216
ast::ItemImpl(unsafety, polarity, _, ref opt_trait, ref ty, ref ast_items) => {
12051217
// We need to encode information about the default methods we
12061218
// have inherited, so we drive this based on the impl structure.

src/librustc/middle/reachable.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,8 @@ impl<'a, 'tcx> ReachableContext<'a, 'tcx> {
301301
ast::ItemTy(..) | ast::ItemStatic(_, _, _) |
302302
ast::ItemMod(..) | ast::ItemForeignMod(..) |
303303
ast::ItemImpl(..) | ast::ItemTrait(..) |
304-
ast::ItemStruct(..) | ast::ItemEnum(..) => {}
304+
ast::ItemStruct(..) | ast::ItemEnum(..) |
305+
ast::ItemDefTrait(..) => {}
305306

306307
_ => {
307308
self.tcx.sess.span_bug(item.span,

src/librustc/middle/resolve_lifetime.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ impl<'a, 'v> Visitor<'v> for LifetimeContext<'a> {
115115
ast::ItemUse(_) |
116116
ast::ItemMod(..) |
117117
ast::ItemMac(..) |
118+
ast::ItemDefTrait(..) |
118119
ast::ItemForeignMod(..) |
119120
ast::ItemStatic(..) |
120121
ast::ItemConst(..) => {

src/librustc_privacy/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ impl<'a, 'tcx, 'v> Visitor<'v> for EmbargoVisitor<'a, 'tcx> {
209209
match item.node {
210210
// impls/extern blocks do not break the "public chain" because they
211211
// cannot have visibility qualifiers on them anyway
212-
ast::ItemImpl(..) | ast::ItemForeignMod(..) => {}
212+
ast::ItemImpl(..) | ast::ItemDefTrait(..) | ast::ItemForeignMod(..) => {}
213213

214214
// Traits are a little special in that even if they themselves are
215215
// not public they may still be exported.
@@ -1145,6 +1145,7 @@ impl<'a, 'tcx> SanePrivacyVisitor<'a, 'tcx> {
11451145
}
11461146
}
11471147

1148+
ast::ItemDefTrait(..) |
11481149
ast::ItemConst(..) | ast::ItemStatic(..) | ast::ItemStruct(..) |
11491150
ast::ItemFn(..) | ast::ItemMod(..) | ast::ItemTy(..) |
11501151
ast::ItemExternCrate(_) | ast::ItemUse(_) | ast::ItemMac(..) => {}
@@ -1204,7 +1205,7 @@ impl<'a, 'tcx> SanePrivacyVisitor<'a, 'tcx> {
12041205
}
12051206
}
12061207

1207-
ast::ItemExternCrate(_) | ast::ItemUse(_) |
1208+
ast::ItemDefTrait(..) | ast::ItemExternCrate(_) | ast::ItemUse(_) |
12081209
ast::ItemStatic(..) | ast::ItemConst(..) |
12091210
ast::ItemFn(..) | ast::ItemMod(..) | ast::ItemTy(..) |
12101211
ast::ItemMac(..) => {}

src/librustc_resolve/build_reduced_graph.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ use syntax::ast::{Block, Crate};
4040
use syntax::ast::{DeclItem, DefId};
4141
use syntax::ast::{ForeignItem, ForeignItemFn, ForeignItemStatic};
4242
use syntax::ast::{Item, ItemConst, ItemEnum, ItemExternCrate, ItemFn};
43-
use syntax::ast::{ItemForeignMod, ItemImpl, ItemMac, ItemMod, ItemStatic};
43+
use syntax::ast::{ItemForeignMod, ItemImpl, ItemMac, ItemMod, ItemStatic, ItemDefTrait};
4444
use syntax::ast::{ItemStruct, ItemTrait, ItemTy, ItemUse};
4545
use syntax::ast::{MethodImplItem, Name, NamedField, NodeId};
4646
use syntax::ast::{PathListIdent, PathListMod};
@@ -656,6 +656,7 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> {
656656
parent.clone()
657657
}
658658

659+
ItemDefTrait(_, _) |
659660
ItemImpl(_, _, _, Some(_), _, _) => parent.clone(),
660661

661662
ItemTrait(_, _, _, ref items) => {

src/librustc_resolve/lib.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ use syntax::ast::{ExprClosure, ExprLoop, ExprWhile, ExprMethodCall};
7070
use syntax::ast::{ExprPath, ExprQPath, ExprStruct, FnDecl};
7171
use syntax::ast::{ForeignItemFn, ForeignItemStatic, Generics};
7272
use syntax::ast::{Ident, ImplItem, Item, ItemConst, ItemEnum, ItemExternCrate};
73-
use syntax::ast::{ItemFn, ItemForeignMod, ItemImpl, ItemMac, ItemMod, ItemStatic};
73+
use syntax::ast::{ItemFn, ItemForeignMod, ItemImpl, ItemMac, ItemMod, ItemStatic, ItemDefTrait};
7474
use syntax::ast::{ItemStruct, ItemTrait, ItemTy, ItemUse};
7575
use syntax::ast::{Local, MethodImplItem, Mod, Name, NodeId};
7676
use syntax::ast::{Pat, PatEnum, PatIdent, PatLit};
@@ -2840,6 +2840,9 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
28402840
});
28412841
}
28422842

2843+
ItemDefTrait(_, ref trait_ref) => {
2844+
self.resolve_trait_reference(item.id, trait_ref, TraitImplementation);
2845+
}
28432846
ItemImpl(_, _,
28442847
ref generics,
28452848
ref implemented_traits,

src/librustc_typeck/collect.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -648,6 +648,9 @@ fn convert_item(ccx: &CollectCtxt, it: &ast::Item) {
648648
predicates,
649649
&enum_definition.variants);
650650
},
651+
ast::ItemDefTrait(_, ref ast_trait_ref) => {
652+
653+
}
651654
ast::ItemImpl(_, _,
652655
ref generics,
653656
ref opt_trait_ref,
@@ -1141,6 +1144,7 @@ fn compute_type_scheme_of_item<'a,'tcx>(ccx: &CollectCtxt<'a,'tcx>,
11411144
let t = ty::mk_struct(tcx, local_def(it.id), tcx.mk_substs(substs));
11421145
ty::TypeScheme { ty: t, generics: ty_generics }
11431146
}
1147+
ast::ItemDefTrait(..) |
11441148
ast::ItemTrait(..) |
11451149
ast::ItemImpl(..) |
11461150
ast::ItemMod(..) |

src/librustc_typeck/variance.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,7 @@ impl<'a, 'tcx, 'v> Visitor<'v> for TermsContext<'a, 'tcx> {
476476

477477
ast::ItemExternCrate(_) |
478478
ast::ItemUse(_) |
479+
ast::ItemDefTrait(..) |
479480
ast::ItemImpl(..) |
480481
ast::ItemStatic(..) |
481482
ast::ItemConst(..) |
@@ -626,6 +627,7 @@ impl<'a, 'tcx, 'v> Visitor<'v> for ConstraintContext<'a, 'tcx> {
626627
ast::ItemForeignMod(..) |
627628
ast::ItemTy(..) |
628629
ast::ItemImpl(..) |
630+
ast::ItemDefTrait(..) |
629631
ast::ItemMac(..) => {
630632
}
631633
}

0 commit comments

Comments
 (0)