Skip to content

Commit 7607332

Browse files
committed
Represent lifetimes as Names instead of Idents
Closes #7743.
1 parent 2fa7d6b commit 7607332

File tree

14 files changed

+48
-49
lines changed

14 files changed

+48
-49
lines changed

src/librustc/metadata/decoder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ fn item_region_param_defs(item_doc: ebml::Doc, cdata: Cmd)
270270
tag_region_param_def_def_id);
271271
let def_id = reader::with_doc_data(def_id_doc, parse_def_id);
272272
let def_id = translate_def_id(cdata, def_id);
273-
v.push(ty::RegionParameterDef { ident: ident,
273+
v.push(ty::RegionParameterDef { ident: ident.name,
274274
def_id: def_id });
275275
true
276276
});

src/librustc/metadata/encoder.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ pub fn reachable(ecx: &EncodeContext, id: NodeId) -> bool {
111111
reachable.get().contains(&id)
112112
}
113113

114-
fn encode_name(ebml_w: &mut writer::Encoder, name: Ident) {
115-
ebml_w.wr_tagged_str(tag_paths_data_name, token::get_ident(name).get());
114+
fn encode_name(ebml_w: &mut writer::Encoder, name: Name) {
115+
ebml_w.wr_tagged_str(tag_paths_data_name, token::get_name(name).get());
116116
}
117117

118118
fn encode_impl_type_basename(ebml_w: &mut writer::Encoder, name: Ident) {
@@ -312,7 +312,7 @@ fn encode_struct_fields(ebml_w: &mut writer::Encoder,
312312
NamedField(ident, vis) => {
313313
ebml_w.start_tag(tag_item_field);
314314
encode_struct_field_family(ebml_w, vis);
315-
encode_name(ebml_w, ident);
315+
encode_name(ebml_w, ident.name);
316316
encode_def_id(ebml_w, local_def(f.node.id));
317317
ebml_w.end_tag();
318318
}
@@ -352,7 +352,7 @@ fn encode_enum_variant_info(ecx: &EncodeContext,
352352
ast::TupleVariantKind(_) => encode_family(ebml_w, 'v'),
353353
ast::StructVariantKind(_) => encode_family(ebml_w, 'V')
354354
}
355-
encode_name(ebml_w, variant.node.name);
355+
encode_name(ebml_w, variant.node.name.name);
356356
encode_parent_item(ebml_w, local_def(id));
357357
encode_visibility(ebml_w, variant.node.vis);
358358
encode_attributes(ebml_w, variant.node.attrs);
@@ -579,7 +579,7 @@ fn encode_info_for_mod(ecx: &EncodeContext,
579579
ebml_w.start_tag(tag_items_data_item);
580580
encode_def_id(ebml_w, local_def(id));
581581
encode_family(ebml_w, 'm');
582-
encode_name(ebml_w, name);
582+
encode_name(ebml_w, name.name);
583583
debug!("(encoding info for module) encoding info for module ID {}", id);
584584

585585
// Encode info about all the module children.
@@ -716,7 +716,7 @@ fn encode_info_for_struct(ecx: &EncodeContext,
716716
debug!("encode_info_for_struct: doing {} {}",
717717
token::get_ident(nm), id);
718718
encode_struct_field_family(ebml_w, vis);
719-
encode_name(ebml_w, nm);
719+
encode_name(ebml_w, nm.name);
720720
encode_type(ecx, ebml_w, node_id_to_type(tcx, id));
721721
encode_def_id(ebml_w, local_def(id));
722722
ebml_w.end_tag();
@@ -743,7 +743,7 @@ fn encode_info_for_struct_ctor(ecx: &EncodeContext,
743743
encode_family(ebml_w, 'f');
744744
encode_bounds_and_type(ebml_w, ecx,
745745
&lookup_item_type(ecx.tcx, local_def(ctor_id)));
746-
encode_name(ebml_w, name);
746+
encode_name(ebml_w, name.name);
747747
encode_type(ecx, ebml_w, node_id_to_type(ecx.tcx, ctor_id));
748748
ecx.tcx.map.with_path(ctor_id, |path| encode_path(ebml_w, path));
749749
encode_parent_item(ebml_w, local_def(struct_id));
@@ -766,7 +766,7 @@ fn encode_method_ty_fields(ecx: &EncodeContext,
766766
ebml_w: &mut writer::Encoder,
767767
method_ty: &ty::Method) {
768768
encode_def_id(ebml_w, method_ty.def_id);
769-
encode_name(ebml_w, method_ty.ident);
769+
encode_name(ebml_w, method_ty.ident.name);
770770
encode_ty_type_param_defs(ebml_w, ecx,
771771
method_ty.generics.type_param_defs(),
772772
tag_item_method_tps);
@@ -916,7 +916,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
916916
}
917917
encode_type(ecx, ebml_w, node_id_to_type(tcx, item.id));
918918
encode_symbol(ecx, ebml_w, item.id);
919-
encode_name(ebml_w, item.ident);
919+
encode_name(ebml_w, item.ident.name);
920920
encode_path(ebml_w, path);
921921

922922
let inlineable = !ecx.non_inlineable_statics.borrow().get().contains(&item.id);
@@ -934,7 +934,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
934934
encode_family(ebml_w, purity_fn_family(purity));
935935
let tps_len = generics.ty_params.len();
936936
encode_bounds_and_type(ebml_w, ecx, &lookup_item_type(tcx, def_id));
937-
encode_name(ebml_w, item.ident);
937+
encode_name(ebml_w, item.ident.name);
938938
encode_path(ebml_w, path);
939939
encode_attributes(ebml_w, item.attrs);
940940
if tps_len > 0u || should_inline(item.attrs) {
@@ -960,7 +960,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
960960
ebml_w.start_tag(tag_items_data_item);
961961
encode_def_id(ebml_w, def_id);
962962
encode_family(ebml_w, 'n');
963-
encode_name(ebml_w, item.ident);
963+
encode_name(ebml_w, item.ident.name);
964964
encode_path(ebml_w, path);
965965

966966
// Encode all the items in this module.
@@ -978,7 +978,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
978978
encode_def_id(ebml_w, def_id);
979979
encode_family(ebml_w, 'y');
980980
encode_bounds_and_type(ebml_w, ecx, &lookup_item_type(tcx, def_id));
981-
encode_name(ebml_w, item.ident);
981+
encode_name(ebml_w, item.ident.name);
982982
encode_path(ebml_w, path);
983983
encode_visibility(ebml_w, vis);
984984
ebml_w.end_tag();
@@ -991,7 +991,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
991991
encode_family(ebml_w, 't');
992992
encode_item_variances(ebml_w, ecx, item.id);
993993
encode_bounds_and_type(ebml_w, ecx, &lookup_item_type(tcx, def_id));
994-
encode_name(ebml_w, item.ident);
994+
encode_name(ebml_w, item.ident.name);
995995
encode_attributes(ebml_w, item.attrs);
996996
for v in (*enum_definition).variants.iter() {
997997
encode_variant_id(ebml_w, local_def(v.node.id));
@@ -1030,7 +1030,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
10301030
encode_bounds_and_type(ebml_w, ecx, &lookup_item_type(tcx, def_id));
10311031

10321032
encode_item_variances(ebml_w, ecx, item.id);
1033-
encode_name(ebml_w, item.ident);
1033+
encode_name(ebml_w, item.ident.name);
10341034
encode_attributes(ebml_w, item.attrs);
10351035
encode_path(ebml_w, path.clone());
10361036
encode_visibility(ebml_w, vis);
@@ -1070,7 +1070,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
10701070
encode_def_id(ebml_w, def_id);
10711071
encode_family(ebml_w, 'i');
10721072
encode_bounds_and_type(ebml_w, ecx, &lookup_item_type(tcx, def_id));
1073-
encode_name(ebml_w, item.ident);
1073+
encode_name(ebml_w, item.ident.name);
10741074
encode_attributes(ebml_w, item.attrs);
10751075
match ty.node {
10761076
ast::TyPath(ref path, ref bounds, _) if path.segments
@@ -1134,7 +1134,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
11341134
tag_items_data_item_ty_param_bounds);
11351135
encode_region_param_defs(ebml_w, trait_def.generics.region_param_defs());
11361136
encode_trait_ref(ebml_w, ecx, trait_def.trait_ref, tag_item_trait_ref);
1137-
encode_name(ebml_w, item.ident);
1137+
encode_name(ebml_w, item.ident.name);
11381138
encode_attributes(ebml_w, item.attrs);
11391139
encode_visibility(ebml_w, vis);
11401140
for &method_def_id in ty::trait_method_def_ids(tcx, def_id).iter() {
@@ -1255,7 +1255,7 @@ fn encode_info_for_foreign_item(ecx: &EncodeContext,
12551255
encode_family(ebml_w, purity_fn_family(ImpureFn));
12561256
encode_bounds_and_type(ebml_w, ecx,
12571257
&lookup_item_type(ecx.tcx,local_def(nitem.id)));
1258-
encode_name(ebml_w, nitem.ident);
1258+
encode_name(ebml_w, nitem.ident.name);
12591259
if abi.is_intrinsic() {
12601260
(ecx.encode_inlined_item)(ecx, ebml_w, IIForeignRef(nitem));
12611261
} else {
@@ -1270,7 +1270,7 @@ fn encode_info_for_foreign_item(ecx: &EncodeContext,
12701270
}
12711271
encode_type(ecx, ebml_w, node_id_to_type(ecx.tcx, nitem.id));
12721272
encode_symbol(ecx, ebml_w, nitem.id);
1273-
encode_name(ebml_w, nitem.ident);
1273+
encode_name(ebml_w, nitem.ident.name);
12741274
}
12751275
}
12761276
encode_path(ebml_w, path);

src/librustc/metadata/tydecode.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ fn parse_bound_region(st: &mut PState, conv: conv_did) -> ty::BoundRegion {
214214
'[' => {
215215
let def = parse_def(st, RegionParameter, |x,y| conv(x,y));
216216
let ident = token::str_to_ident(parse_str(st, ']'));
217-
ty::BrNamed(def, ident)
217+
ty::BrNamed(def, ident.name)
218218
}
219219
'f' => {
220220
let id = parse_uint(st);
@@ -242,7 +242,7 @@ fn parse_region(st: &mut PState, conv: conv_did) -> ty::Region {
242242
let index = parse_uint(st);
243243
assert_eq!(next(st), '|');
244244
let nm = token::str_to_ident(parse_str(st, ']'));
245-
ty::ReEarlyBound(node_id, index, nm)
245+
ty::ReEarlyBound(node_id, index, nm.name)
246246
}
247247
'f' => {
248248
assert_eq!(next(st), '[');

src/librustc/metadata/tyencode.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ fn enc_region(w: &mut MemWriter, cx: @ctxt, r: ty::Region) {
179179
mywrite!(w, "B[{}|{}|{}]",
180180
node_id,
181181
index,
182-
token::get_ident(ident));
182+
token::get_name(ident));
183183
}
184184
ty::ReFree(ref fr) => {
185185
mywrite!(w, "f[{}|", fr.scope_id);
@@ -210,7 +210,7 @@ fn enc_bound_region(w: &mut MemWriter, cx: @ctxt, br: ty::BoundRegion) {
210210
ty::BrNamed(d, s) => {
211211
mywrite!(w, "[{}|{}]",
212212
(cx.ds)(d),
213-
token::get_ident(s));
213+
token::get_name(s));
214214
}
215215
ty::BrFresh(id) => {
216216
mywrite!(w, "f{}|", id);

src/librustc/middle/resolve_lifetime.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ impl<'a> Visitor<&'a ScopeChain<'a>> for LifetimeContext {
145145
fn visit_lifetime_ref(&mut self,
146146
lifetime_ref: &ast::Lifetime,
147147
scope: &'a ScopeChain<'a>) {
148-
if lifetime_ref.ident == special_idents::statik {
148+
if lifetime_ref.ident == special_idents::statik.name {
149149
self.insert_lifetime(lifetime_ref, ast::DefStaticRegion);
150150
return;
151151
}
@@ -262,7 +262,7 @@ impl LifetimeContext {
262262
self.sess.span_err(
263263
lifetime_ref.span,
264264
format!("use of undeclared lifetime name `'{}`",
265-
token::get_ident(lifetime_ref.ident)));
265+
token::get_name(lifetime_ref.ident)));
266266
}
267267

268268
fn check_lifetime_names(&self, lifetimes: &OptVec<ast::Lifetime>) {
@@ -271,11 +271,11 @@ impl LifetimeContext {
271271

272272
let special_idents = [special_idents::statik];
273273
for lifetime in lifetimes.iter() {
274-
if special_idents.iter().any(|&i| i == lifetime.ident) {
274+
if special_idents.iter().any(|&i| i.name == lifetime.ident) {
275275
self.sess.span_err(
276276
lifetime.span,
277277
format!("illegal lifetime parameter name: `{}`",
278-
token::get_ident(lifetime.ident)));
278+
token::get_name(lifetime.ident)));
279279
}
280280
}
281281

@@ -287,7 +287,7 @@ impl LifetimeContext {
287287
lifetime_j.span,
288288
format!("lifetime name `'{}` declared twice in \
289289
the same scope",
290-
token::get_ident(lifetime_j.ident)));
290+
token::get_name(lifetime_j.ident)));
291291
}
292292
}
293293
}

src/librustc/middle/ty.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ pub enum Region {
465465
// Region bound in a type or fn declaration which will be
466466
// substituted 'early' -- that is, at the same time when type
467467
// parameters are substituted.
468-
ReEarlyBound(/* param id */ ast::NodeId, /*index*/ uint, ast::Ident),
468+
ReEarlyBound(/* param id */ ast::NodeId, /*index*/ uint, ast::Name),
469469

470470
// Region bound in a function scope, which will be substituted when the
471471
// function is called. The first argument must be the `binder_id` of
@@ -635,7 +635,7 @@ pub enum BoundRegion {
635635
///
636636
/// The def-id is needed to distinguish free regions in
637637
/// the event of shadowing.
638-
BrNamed(ast::DefId, ast::Ident),
638+
BrNamed(ast::DefId, ast::Name),
639639

640640
/// Fresh bound identifiers created during GLB computations.
641641
BrFresh(uint),
@@ -976,7 +976,7 @@ pub struct TypeParameterDef {
976976

977977
#[deriving(Encodable, Decodable, Clone)]
978978
pub struct RegionParameterDef {
979-
ident: ast::Ident,
979+
ident: ast::Name,
980980
def_id: ast::DefId,
981981
}
982982

src/librustc/util/ppaux.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ pub fn bound_region_to_str(cx: ctxt,
163163

164164
match br {
165165
BrNamed(_, ident) => format!("{}'{}{}", prefix,
166-
token::get_ident(ident), space_str),
166+
token::get_name(ident), space_str),
167167
BrAnon(_) => prefix.to_str(),
168168
BrFresh(_) => prefix.to_str(),
169169
}
@@ -225,7 +225,7 @@ pub fn region_to_str(cx: ctxt, prefix: &str, space: bool, region: Region) -> ~st
225225
// `explain_region()` or `note_and_explain_region()`.
226226
match region {
227227
ty::ReScope(_) => prefix.to_str(),
228-
ty::ReEarlyBound(_, _, ident) => token::get_ident(ident).get().to_str(),
228+
ty::ReEarlyBound(_, _, ident) => token::get_name(ident).get().to_str(),
229229
ty::ReLateBound(_, br) => bound_region_to_str(cx, prefix, space, br),
230230
ty::ReFree(ref fr) => bound_region_to_str(cx, prefix, space, fr.bound_region),
231231
ty::ReInfer(ReSkolemized(_, br)) => {
@@ -630,7 +630,7 @@ impl Repr for ty::TypeParameterDef {
630630
impl Repr for ty::RegionParameterDef {
631631
fn repr(&self, _tcx: ctxt) -> ~str {
632632
format!("RegionParameterDef({}, {:?})",
633-
token::get_ident(self.ident),
633+
token::get_name(self.ident),
634634
self.def_id)
635635
}
636636
}
@@ -718,7 +718,7 @@ impl Repr for ty::BoundRegion {
718718
ty::BrAnon(id) => format!("BrAnon({})", id),
719719
ty::BrNamed(id, ident) => format!("BrNamed({}, {})",
720720
id.repr(tcx),
721-
ident.repr(tcx)),
721+
token::get_name(ident)),
722722
ty::BrFresh(id) => format!("BrFresh({})", id),
723723
}
724724
}
@@ -729,7 +729,7 @@ impl Repr for ty::Region {
729729
match *self {
730730
ty::ReEarlyBound(id, index, ident) => {
731731
format!("ReEarlyBound({}, {}, {})",
732-
id, index, ident.repr(tcx))
732+
id, index, token::get_name(ident))
733733
}
734734

735735
ty::ReLateBound(binder_id, ref bound_region) => {

src/librustdoc/clean.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ impl Lifetime {
307307

308308
impl Clean<Lifetime> for ast::Lifetime {
309309
fn clean(&self) -> Lifetime {
310-
Lifetime(self.ident.clean())
310+
Lifetime(token::get_name(self.ident).get().to_owned())
311311
}
312312
}
313313

src/libsyntax/ast.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,7 @@ pub type FnIdent = Option<Ident>;
144144
pub struct Lifetime {
145145
id: NodeId,
146146
span: Span,
147-
// FIXME #7743 : change this to Name!
148-
ident: Ident
147+
ident: Name
149148
}
150149

151150
// a "Path" is essentially Rust's notion of a name;

src/libsyntax/ext/build.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ pub trait AstBuilder {
7373

7474
fn trait_ref(&self, path: ast::Path) -> ast::TraitRef;
7575
fn typarambound(&self, path: ast::Path) -> ast::TyParamBound;
76-
fn lifetime(&self, span: Span, ident: ast::Ident) -> ast::Lifetime;
76+
fn lifetime(&self, span: Span, ident: ast::Name) -> ast::Lifetime;
7777

7878
// statements
7979
fn stmt_expr(&self, expr: @ast::Expr) -> @ast::Stmt;
@@ -408,7 +408,7 @@ impl<'a> AstBuilder for ExtCtxt<'a> {
408408
ast::TraitTyParamBound(self.trait_ref(path))
409409
}
410410

411-
fn lifetime(&self, span: Span, ident: ast::Ident) -> ast::Lifetime {
411+
fn lifetime(&self, span: Span, ident: ast::Name) -> ast::Lifetime {
412412
ast::Lifetime { id: ast::DUMMY_NODE_ID, span: span, ident: ident }
413413
}
414414

src/libsyntax/ext/deriving/ty.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,14 +111,14 @@ pub fn nil_ty() -> Ty<'static> {
111111

112112
fn mk_lifetime(cx: &ExtCtxt, span: Span, lt: &Option<&str>) -> Option<ast::Lifetime> {
113113
match *lt {
114-
Some(ref s) => Some(cx.lifetime(span, cx.ident_of(*s))),
114+
Some(ref s) => Some(cx.lifetime(span, cx.ident_of(*s).name)),
115115
None => None
116116
}
117117
}
118118

119119
fn mk_lifetimes(cx: &ExtCtxt, span: Span, lt: &Option<&str>) -> OptVec<ast::Lifetime> {
120120
match *lt {
121-
Some(ref s) => opt_vec::with(cx.lifetime(span, cx.ident_of(*s))),
121+
Some(ref s) => opt_vec::with(cx.lifetime(span, cx.ident_of(*s).name)),
122122
None => opt_vec::Empty
123123
}
124124
}
@@ -221,7 +221,7 @@ impl<'a> LifetimeBounds<'a> {
221221
self_generics: &Generics)
222222
-> Generics {
223223
let lifetimes = self.lifetimes.map(|lt| {
224-
cx.lifetime(span, cx.ident_of(*lt))
224+
cx.lifetime(span, cx.ident_of(*lt).name)
225225
});
226226
let ty_params = self.bounds.map(|t| {
227227
match t {
@@ -248,7 +248,7 @@ pub fn get_explicit_self(cx: &ExtCtxt, span: Span, self_ptr: &Option<PtrTy>)
248248
match *ptr {
249249
Send => ast::SelfUniq,
250250
Borrowed(ref lt, mutbl) => {
251-
let lt = lt.map(|s| cx.lifetime(span, cx.ident_of(s)));
251+
let lt = lt.map(|s| cx.lifetime(span, cx.ident_of(s).name));
252252
ast::SelfRegion(lt, mutbl)
253253
}
254254
});

0 commit comments

Comments
 (0)