@@ -1473,6 +1473,19 @@ fn doc_generics<'tcx>(base_doc: rbml::Doc,
1473
1473
ty:: Generics { types : types, regions : regions }
1474
1474
}
1475
1475
1476
+ fn doc_predicate < ' tcx > ( cdata : Cmd ,
1477
+ doc : rbml:: Doc ,
1478
+ tcx : & ty:: ctxt < ' tcx > )
1479
+ -> ty:: Predicate < ' tcx >
1480
+ {
1481
+ let predicate_pos = cdata. xref_index . lookup (
1482
+ cdata. data ( ) , reader:: doc_as_u32 ( doc) ) . unwrap ( ) as usize ;
1483
+ TyDecoder :: new (
1484
+ cdata. data ( ) , cdata. cnum , predicate_pos, tcx,
1485
+ & mut |_, did| translate_def_id ( cdata, did)
1486
+ ) . parse_predicate ( )
1487
+ }
1488
+
1476
1489
fn doc_predicates < ' tcx > ( base_doc : rbml:: Doc ,
1477
1490
tcx : & ty:: ctxt < ' tcx > ,
1478
1491
cdata : Cmd ,
@@ -1482,17 +1495,17 @@ fn doc_predicates<'tcx>(base_doc: rbml::Doc,
1482
1495
let doc = reader:: get_doc ( base_doc, tag) ;
1483
1496
1484
1497
let mut predicates = subst:: VecPerParamSpace :: empty ( ) ;
1485
- for predicate_doc in reader:: tagged_docs ( doc, tag_predicate ) {
1486
- let space_doc = reader :: get_doc ( predicate_doc , tag_predicate_space ) ;
1487
- let space = subst :: ParamSpace :: from_uint ( reader :: doc_as_u8 ( space_doc ) as usize ) ;
1488
-
1489
- let data_doc = reader:: get_doc ( predicate_doc , tag_predicate_data ) ;
1490
- let data =
1491
- TyDecoder :: with_doc ( tcx , cdata. cnum , data_doc ,
1492
- & mut |_ , did| translate_def_id ( cdata , did ) )
1493
- . parse_predicate ( ) ;
1494
-
1495
- predicates . push ( space , data ) ;
1498
+ for predicate_doc in reader:: tagged_docs ( doc, tag_type_predicate ) {
1499
+ predicates . push ( subst :: TypeSpace ,
1500
+ doc_predicate ( cdata , predicate_doc , tcx ) ) ;
1501
+ }
1502
+ for predicate_doc in reader:: tagged_docs ( doc , tag_self_predicate ) {
1503
+ predicates . push ( subst :: SelfSpace ,
1504
+ doc_predicate ( cdata, predicate_doc , tcx ) ) ;
1505
+ }
1506
+ for predicate_doc in reader :: tagged_docs ( doc , tag_fn_predicate ) {
1507
+ predicates . push ( subst :: FnSpace ,
1508
+ doc_predicate ( cdata , predicate_doc , tcx ) ) ;
1496
1509
}
1497
1510
1498
1511
ty:: GenericPredicates { predicates : predicates }
0 commit comments