Skip to content

Commit c2e5135

Browse files
committed
auto merge of #12807 : pnkfelix/rust/fsk-issue5121-fns-with-early-lifetime-params, r=pnkfelix
Fix issue #5121: Add proper support for early/late distinction for lifetime bindings. There are some little refactoring cleanups as separate commits; the real meat that has the actual fix is in the final commit. The original author of the work was @nikomatsakis; I have reviewed it, revised it slightly, refactored it into these separate commits, and done some rebasing work.
2 parents 397abb7 + 742e458 commit c2e5135

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+702
-313
lines changed

src/librustc/front/std_inject.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -164,12 +164,12 @@ impl fold::Folder for PreludeInjector {
164164
segments: vec!(
165165
ast::PathSegment {
166166
identifier: token::str_to_ident("std"),
167-
lifetimes: opt_vec::Empty,
167+
lifetimes: Vec::new(),
168168
types: opt_vec::Empty,
169169
},
170170
ast::PathSegment {
171171
identifier: token::str_to_ident("prelude"),
172-
lifetimes: opt_vec::Empty,
172+
lifetimes: Vec::new(),
173173
types: opt_vec::Empty,
174174
}),
175175
};

src/librustc/front/test.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ fn path_node(ids: Vec<ast::Ident> ) -> ast::Path {
369369
global: false,
370370
segments: ids.move_iter().map(|identifier| ast::PathSegment {
371371
identifier: identifier,
372-
lifetimes: opt_vec::Empty,
372+
lifetimes: Vec::new(),
373373
types: opt_vec::Empty,
374374
}).collect()
375375
}
@@ -381,7 +381,7 @@ fn path_node_global(ids: Vec<ast::Ident> ) -> ast::Path {
381381
global: true,
382382
segments: ids.move_iter().map(|identifier| ast::PathSegment {
383383
identifier: identifier,
384-
lifetimes: opt_vec::Empty,
384+
lifetimes: Vec::new(),
385385
types: opt_vec::Empty,
386386
}).collect()
387387
}

src/librustc/metadata/decoder.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ fn item_region_param_defs(item_doc: ebml::Doc, cdata: Cmd)
273273
tag_region_param_def_def_id);
274274
let def_id = reader::with_doc_data(def_id_doc, parse_def_id);
275275
let def_id = translate_def_id(cdata, def_id);
276-
v.push(ty::RegionParameterDef { ident: ident.name,
276+
v.push(ty::RegionParameterDef { name: ident.name,
277277
def_id: def_id });
278278
true
279279
});

src/librustc/metadata/encoder.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ fn encode_region_param_defs(ebml_w: &mut writer::Encoder,
184184
ebml_w.start_tag(tag_region_param_def);
185185

186186
ebml_w.start_tag(tag_region_param_def_ident);
187-
encode_name(ebml_w, param.ident);
187+
encode_name(ebml_w, param.name);
188188
ebml_w.end_tag();
189189

190190
ebml_w.wr_tagged_str(tag_region_param_def_def_id,

src/librustc/metadata/tyencode.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -176,11 +176,11 @@ fn enc_region(w: &mut MemWriter, cx: @ctxt, r: ty::Region) {
176176
enc_bound_region(w, cx, br);
177177
mywrite!(w, "]");
178178
}
179-
ty::ReEarlyBound(node_id, index, ident) => {
179+
ty::ReEarlyBound(node_id, index, name) => {
180180
mywrite!(w, "B[{}|{}|{}]",
181181
node_id,
182182
index,
183-
token::get_name(ident));
183+
token::get_name(name));
184184
}
185185
ty::ReFree(ref fr) => {
186186
mywrite!(w, "f[{}|", fr.scope_id);
@@ -208,10 +208,10 @@ fn enc_bound_region(w: &mut MemWriter, cx: @ctxt, br: ty::BoundRegion) {
208208
ty::BrAnon(idx) => {
209209
mywrite!(w, "a{}|", idx);
210210
}
211-
ty::BrNamed(d, s) => {
211+
ty::BrNamed(d, name) => {
212212
mywrite!(w, "[{}|{}]",
213213
(cx.ds)(d),
214-
token::get_name(s));
214+
token::get_name(name));
215215
}
216216
ty::BrFresh(id) => {
217217
mywrite!(w, "f{}|", id);

src/librustc/middle/privacy.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
//! which are available for use externally when compiled as a library.
1414
1515
use std::mem::replace;
16+
use std::vec_ng::Vec;
1617

1718
use metadata::csearch;
1819
use middle::lint;
@@ -855,7 +856,7 @@ impl<'a> Visitor<()> for PrivacyVisitor<'a> {
855856
debug!("privacy - list {}", pid.node.id);
856857
let seg = ast::PathSegment {
857858
identifier: pid.node.name,
858-
lifetimes: opt_vec::Empty,
859+
lifetimes: Vec::new(),
859860
types: opt_vec::Empty,
860861
};
861862
let segs = vec!(seg);

0 commit comments

Comments
 (0)