Skip to content

Commit de6c52d

Browse files
committed
make region-param-def encoding more DRY
we used to have two separate routines, one in tyencode/tydecode, and one in encode/decode.
1 parent 8770d0f commit de6c52d

File tree

3 files changed

+7
-51
lines changed

3 files changed

+7
-51
lines changed

src/librustc_metadata/decoder.rs

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1662,31 +1662,12 @@ fn doc_generics<'a, 'tcx>(base_doc: rbml::Doc,
16621662
}
16631663

16641664
let mut regions = subst::VecPerParamSpace::empty();
1665-
for rp_doc in reader::tagged_docs(doc, tag_region_param_def) {
1666-
let ident_str_doc = reader::get_doc(rp_doc,
1667-
tag_region_param_def_ident);
1668-
let name = item_name(&token::get_ident_interner(), ident_str_doc);
1669-
let def_id_doc = reader::get_doc(rp_doc,
1670-
tag_region_param_def_def_id);
1671-
let def_id = translated_def_id(cdata, def_id_doc);
1672-
1673-
let doc = reader::get_doc(rp_doc, tag_region_param_def_space);
1674-
let space = subst::ParamSpace::from_uint(reader::doc_as_u64(doc) as usize);
1675-
1676-
let doc = reader::get_doc(rp_doc, tag_region_param_def_index);
1677-
let index = reader::doc_as_u64(doc) as u32;
1678-
1679-
let bounds = reader::tagged_docs(rp_doc, tag_items_data_region).map(|p| {
1665+
for p in reader::tagged_docs(doc, tag_region_param_def) {
1666+
let bd =
16801667
TyDecoder::with_doc(tcx, cdata.cnum, p,
16811668
&mut |did| translate_def_id(cdata, did))
1682-
.parse_region()
1683-
}).collect();
1684-
1685-
regions.push(space, ty::RegionParameterDef { name: name,
1686-
def_id: def_id,
1687-
space: space,
1688-
index: index,
1689-
bounds: bounds });
1669+
.parse_region_param_def();
1670+
regions.push(bd.space, bd);
16901671
}
16911672

16921673
ty::Generics { types: types, regions: regions }

src/librustc_metadata/encoder.rs

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -203,15 +203,6 @@ fn encode_type<'a, 'tcx>(ecx: &EncodeContext<'a, 'tcx>,
203203
rbml_w.end_tag();
204204
}
205205

206-
fn encode_region(ecx: &EncodeContext,
207-
rbml_w: &mut Encoder,
208-
r: ty::Region) {
209-
rbml_w.start_tag(tag_items_data_region);
210-
tyencode::enc_region(rbml_w.writer, &ecx.ty_str_ctxt(), r);
211-
rbml_w.mark_stable_position();
212-
rbml_w.end_tag();
213-
}
214-
215206
fn encode_disr_val(_: &EncodeContext,
216207
rbml_w: &mut Encoder,
217208
disr_val: ty::Disr) {
@@ -535,24 +526,8 @@ fn encode_generics<'a, 'tcx>(rbml_w: &mut Encoder,
535526
// Region parameters
536527
for param in &generics.regions {
537528
rbml_w.start_tag(tag_region_param_def);
538-
539-
rbml_w.start_tag(tag_region_param_def_ident);
540-
encode_name(rbml_w, param.name);
541-
rbml_w.end_tag();
542-
543-
rbml_w.wr_tagged_u64(tag_region_param_def_def_id,
544-
def_to_u64(param.def_id));
545-
546-
rbml_w.wr_tagged_u64(tag_region_param_def_space,
547-
param.space.to_uint() as u64);
548-
549-
rbml_w.wr_tagged_u64(tag_region_param_def_index,
550-
param.index as u64);
551-
552-
for &bound_region in &param.bounds {
553-
encode_region(ecx, rbml_w, bound_region);
554-
}
555-
529+
tyencode::enc_region_param_def(rbml_w.writer, &ecx.ty_str_ctxt(), param);
530+
rbml_w.mark_stable_position();
556531
rbml_w.end_tag();
557532
}
558533

src/librustc_metadata/tydecode.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,7 @@ impl<'a,'tcx> TyDecoder<'a,'tcx> {
636636
def_id: def_id,
637637
space: space,
638638
index: index,
639-
bounds: bounds
639+
bounds: bounds,
640640
}
641641
}
642642

0 commit comments

Comments
 (0)