Skip to content

Commit baedd05

Browse files
committed
---
yaml --- r: 163711 b: refs/heads/master c: 5f43899 h: refs/heads/master i: 163709: 132a6fc 163707: 6fadf3b 163703: 20baae4 163695: 04612ed 163679: 77db970 163647: adaac22 163583: 6cf8983 v: v3
1 parent d64a162 commit baedd05

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 97cf91aa30c84b14c72d88f51f9f22a50a8e3b54
2+
refs/heads/master: 5f43899db46f8211cf634ce9ce195662f3dfb97a
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 8443b09e361b96d1f9b7f45a65ed0d31c0e86e70
55
refs/heads/try: 20cbbffeefc1f35e2ea63afce7b42fbd79611d42

trunk/src/librustc/middle/astencode.rs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -830,6 +830,8 @@ trait rbml_writer_helpers<'tcx> {
830830
fn emit_tys<'a>(&mut self, ecx: &e::EncodeContext<'a, 'tcx>, tys: &[Ty<'tcx>]);
831831
fn emit_type_param_def<'a>(&mut self, ecx: &e::EncodeContext<'a, 'tcx>,
832832
type_param_def: &ty::TypeParameterDef<'tcx>);
833+
fn emit_predicate<'a>(&mut self, ecx: &e::EncodeContext<'a, 'tcx>,
834+
predicate: &ty::Predicate<'tcx>);
833835
fn emit_trait_ref<'a>(&mut self, ecx: &e::EncodeContext<'a, 'tcx>,
834836
ty: &ty::TraitRef<'tcx>);
835837
fn emit_polytype<'a>(&mut self, ecx: &e::EncodeContext<'a, 'tcx>,
@@ -936,6 +938,15 @@ impl<'a, 'tcx> rbml_writer_helpers<'tcx> for Encoder<'a> {
936938
});
937939
}
938940

941+
fn emit_predicate<'a>(&mut self, ecx: &e::EncodeContext<'a, 'tcx>,
942+
predicate: &ty::Predicate<'tcx>) {
943+
self.emit_opaque(|this| {
944+
Ok(tyencode::enc_predicate(this.writer,
945+
&ecx.ty_str_ctxt(),
946+
predicate))
947+
});
948+
}
949+
939950
fn emit_polytype<'a>(&mut self,
940951
ecx: &e::EncodeContext<'a, 'tcx>,
941952
pty: ty::Polytype<'tcx>) {
@@ -953,6 +964,11 @@ impl<'a, 'tcx> rbml_writer_helpers<'tcx> for Encoder<'a> {
953964
Ok(encode_vec_per_param_space(
954965
this, &pty.generics.regions,
955966
|this, def| def.encode(this).unwrap()))
967+
});
968+
this.emit_struct_field("predicates", 2, |this| {
969+
Ok(encode_vec_per_param_space(
970+
this, &pty.generics.predicates,
971+
|this, def| this.emit_predicate(ecx, def)))
956972
})
957973
})
958974
});
@@ -1336,6 +1352,8 @@ trait rbml_decoder_decoder_helpers<'tcx> {
13361352
-> Rc<ty::TraitRef<'tcx>>;
13371353
fn read_type_param_def<'a, 'b>(&mut self, dcx: &DecodeContext<'a, 'b, 'tcx>)
13381354
-> ty::TypeParameterDef<'tcx>;
1355+
fn read_predicate<'a, 'b>(&mut self, dcx: &DecodeContext<'a, 'b, 'tcx>)
1356+
-> ty::Predicate<'tcx>;
13391357
fn read_polytype<'a, 'b>(&mut self, dcx: &DecodeContext<'a, 'b, 'tcx>)
13401358
-> ty::Polytype<'tcx>;
13411359
fn read_existential_bounds<'a, 'b>(&mut self, dcx: &DecodeContext<'a, 'b, 'tcx>)
@@ -1536,6 +1554,15 @@ impl<'a, 'tcx> rbml_decoder_decoder_helpers<'tcx> for reader::Decoder<'a> {
15361554
}).unwrap()
15371555
}
15381556

1557+
fn read_predicate<'a, 'b>(&mut self, dcx: &DecodeContext<'a, 'b, 'tcx>)
1558+
-> ty::Predicate<'tcx>
1559+
{
1560+
self.read_opaque(|this, doc| {
1561+
Ok(tydecode::parse_predicate_data(doc.data, doc.start, dcx.cdata.cnum, dcx.tcx,
1562+
|s, a| this.convert_def_id(dcx, s, a)))
1563+
}).unwrap()
1564+
}
1565+
15391566
fn read_polytype<'a, 'b>(&mut self, dcx: &DecodeContext<'a, 'b, 'tcx>)
15401567
-> ty::Polytype<'tcx> {
15411568
self.read_struct("Polytype", 2, |this| {
@@ -1556,7 +1583,10 @@ impl<'a, 'tcx> rbml_decoder_decoder_helpers<'tcx> for reader::Decoder<'a> {
15561583
}).unwrap(),
15571584

15581585
predicates:
1559-
subst::VecPerParamSpace::empty(), // TODO fix in later commit
1586+
this.read_struct_field("predicates", 2, |this| {
1587+
Ok(this.read_vec_per_param_space(
1588+
|this| this.read_predicate(dcx)))
1589+
}).unwrap(),
15601590
})
15611591
})
15621592
}).unwrap(),

0 commit comments

Comments
 (0)