Skip to content

Commit 56d544f

Browse files
committed
auto merge of #17683 : gereeter/rust/ident-to-name, r=pcwalton
This does a large chunk of #6993. It is based on top of #17654.
2 parents 091b981 + 2343e9d commit 56d544f

22 files changed

+355
-371
lines changed

src/librustc/metadata/csearch.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use syntax::parse::token;
3333
use std::collections::hashmap::HashMap;
3434

3535
pub struct StaticMethodInfo {
36-
pub ident: ast::Ident,
36+
pub name: ast::Name,
3737
pub def_id: ast::DefId,
3838
pub fn_style: ast::FnStyle,
3939
pub vis: ast::Visibility,
@@ -57,7 +57,7 @@ pub fn each_lang_item(cstore: &cstore::CStore,
5757
pub fn each_child_of_item(cstore: &cstore::CStore,
5858
def_id: ast::DefId,
5959
callback: |decoder::DefLike,
60-
ast::Ident,
60+
ast::Name,
6161
ast::Visibility|) {
6262
let crate_data = cstore.get_crate_data(def_id.krate);
6363
let get_crate_data: decoder::GetCrateDataCb = |cnum| {
@@ -74,7 +74,7 @@ pub fn each_child_of_item(cstore: &cstore::CStore,
7474
pub fn each_top_level_item_of_crate(cstore: &cstore::CStore,
7575
cnum: ast::CrateNum,
7676
callback: |decoder::DefLike,
77-
ast::Ident,
77+
ast::Name,
7878
ast::Visibility|) {
7979
let crate_data = cstore.get_crate_data(cnum);
8080
let get_crate_data: decoder::GetCrateDataCb = |cnum| {
@@ -139,7 +139,7 @@ pub fn get_impl_or_trait_item(tcx: &ty::ctxt, def: ast::DefId)
139139
}
140140

141141
pub fn get_trait_item_name_and_kind(cstore: &cstore::CStore, def: ast::DefId)
142-
-> (ast::Ident, resolve::TraitItemKind) {
142+
-> (ast::Name, resolve::TraitItemKind) {
143143
let cdata = cstore.get_crate_data(def.krate);
144144
decoder::get_trait_item_name_and_kind(cstore.intr.clone(),
145145
&*cdata,
@@ -173,7 +173,7 @@ pub fn get_supertraits(tcx: &ty::ctxt, def: ast::DefId) -> Vec<Rc<ty::TraitRef>>
173173
}
174174

175175
pub fn get_type_name_if_impl(cstore: &cstore::CStore, def: ast::DefId)
176-
-> Option<ast::Ident> {
176+
-> Option<ast::Name> {
177177
let cdata = cstore.get_crate_data(def.krate);
178178
decoder::get_type_name_if_impl(&*cdata, def.node)
179179
}

src/librustc/metadata/decoder.rs

+15-16
Original file line numberDiff line numberDiff line change
@@ -292,12 +292,12 @@ fn item_path(item_doc: rbml::Doc) -> Vec<ast_map::PathElem> {
292292
result
293293
}
294294

295-
fn item_name(intr: &IdentInterner, item: rbml::Doc) -> ast::Ident {
295+
fn item_name(intr: &IdentInterner, item: rbml::Doc) -> ast::Name {
296296
let name = reader::get_doc(item, tag_paths_data_name);
297297
let string = name.as_str_slice();
298298
match intr.find_equiv(&string) {
299-
None => token::str_to_ident(string),
300-
Some(val) => ast::Ident::new(val),
299+
None => token::intern(string),
300+
Some(val) => val,
301301
}
302302
}
303303

@@ -457,7 +457,7 @@ fn each_child_of_item_or_crate(intr: Rc<IdentInterner>,
457457
item_doc: rbml::Doc,
458458
get_crate_data: GetCrateDataCb,
459459
callback: |DefLike,
460-
ast::Ident,
460+
ast::Name,
461461
ast::Visibility|) {
462462
// Iterate over all children.
463463
let _ = reader::tagged_docs(item_doc, tag_mod_child, |child_info_doc| {
@@ -579,7 +579,7 @@ fn each_child_of_item_or_crate(intr: Rc<IdentInterner>,
579579
child_def_id.krate);
580580
// These items have a public visibility because they're part of
581581
// a public re-export.
582-
callback(def_like, token::str_to_ident(name), ast::Public);
582+
callback(def_like, token::intern(name), ast::Public);
583583
}
584584
}
585585

@@ -592,7 +592,7 @@ pub fn each_child_of_item(intr: Rc<IdentInterner>,
592592
cdata: Cmd,
593593
id: ast::NodeId,
594594
get_crate_data: GetCrateDataCb,
595-
callback: |DefLike, ast::Ident, ast::Visibility|) {
595+
callback: |DefLike, ast::Name, ast::Visibility|) {
596596
// Find the item.
597597
let root_doc = rbml::Doc::new(cdata.data());
598598
let items = reader::get_doc(root_doc, tag_items);
@@ -613,7 +613,7 @@ pub fn each_top_level_item_of_crate(intr: Rc<IdentInterner>,
613613
cdata: Cmd,
614614
get_crate_data: GetCrateDataCb,
615615
callback: |DefLike,
616-
ast::Ident,
616+
ast::Name,
617617
ast::Visibility|) {
618618
let root_doc = rbml::Doc::new(cdata.data());
619619
let misc_info_doc = reader::get_doc(root_doc, tag_misc_info);
@@ -745,7 +745,7 @@ pub fn get_impl_items(cdata: Cmd, impl_id: ast::NodeId)
745745
pub fn get_trait_item_name_and_kind(intr: Rc<IdentInterner>,
746746
cdata: Cmd,
747747
id: ast::NodeId)
748-
-> (ast::Ident, TraitItemKind) {
748+
-> (ast::Name, TraitItemKind) {
749749
let doc = lookup_item(id, cdata.data());
750750
let name = item_name(&*intr, doc);
751751
match item_sort(doc) {
@@ -800,7 +800,7 @@ pub fn get_impl_or_trait_item(intr: Rc<IdentInterner>,
800800
}
801801
't' => {
802802
ty::TypeTraitItem(Rc::new(ty::AssociatedType {
803-
ident: name,
803+
name: name,
804804
vis: vis,
805805
def_id: def_id,
806806
container: container,
@@ -885,15 +885,15 @@ pub fn get_supertraits(cdata: Cmd, id: ast::NodeId, tcx: &ty::ctxt)
885885
}
886886

887887
pub fn get_type_name_if_impl(cdata: Cmd,
888-
node_id: ast::NodeId) -> Option<ast::Ident> {
888+
node_id: ast::NodeId) -> Option<ast::Name> {
889889
let item = lookup_item(node_id, cdata.data());
890890
if item_family(item) != Impl {
891891
return None;
892892
}
893893

894894
let mut ret = None;
895895
reader::tagged_docs(item, tag_item_impl_type_basename, |doc| {
896-
ret = Some(token::str_to_ident(doc.as_str_slice()));
896+
ret = Some(token::intern(doc.as_str_slice()));
897897
false
898898
});
899899

@@ -936,7 +936,7 @@ pub fn get_static_methods_if_impl(intr: Rc<IdentInterner>,
936936
}
937937

938938
static_impl_methods.push(StaticMethodInfo {
939-
ident: item_name(&*intr, impl_method_doc),
939+
name: item_name(&*intr, impl_method_doc),
940940
def_id: item_def_id(impl_method_doc, cdata),
941941
fn_style: fn_style,
942942
vis: item_visibility(impl_method_doc),
@@ -1005,13 +1005,12 @@ pub fn get_struct_fields(intr: Rc<IdentInterner>, cdata: Cmd, id: ast::NodeId)
10051005
reader::tagged_docs(item, tag_item_field, |an_item| {
10061006
let f = item_family(an_item);
10071007
if f == PublicField || f == InheritedField {
1008-
// FIXME #6993: name should be of type Name, not Ident
10091008
let name = item_name(&*intr, an_item);
10101009
let did = item_def_id(an_item, cdata);
10111010
let tagdoc = reader::get_doc(an_item, tag_item_field_origin);
10121011
let origin_id = translate_def_id(cdata, reader::with_doc_data(tagdoc, parse_def_id));
10131012
result.push(ty::field_ty {
1014-
name: name.name,
1013+
name: name,
10151014
id: did,
10161015
vis: struct_field_family_to_visibility(f),
10171016
origin: origin_id,
@@ -1393,7 +1392,7 @@ fn doc_generics(base_doc: rbml::Doc,
13931392
reader::tagged_docs(doc, tag_region_param_def, |rp_doc| {
13941393
let ident_str_doc = reader::get_doc(rp_doc,
13951394
tag_region_param_def_ident);
1396-
let ident = item_name(&*token::get_ident_interner(), ident_str_doc);
1395+
let name = item_name(&*token::get_ident_interner(), ident_str_doc);
13971396
let def_id_doc = reader::get_doc(rp_doc,
13981397
tag_region_param_def_def_id);
13991398
let def_id = reader::with_doc_data(def_id_doc, parse_def_id);
@@ -1414,7 +1413,7 @@ fn doc_generics(base_doc: rbml::Doc,
14141413
true
14151414
});
14161415

1417-
regions.push(space, ty::RegionParameterDef { name: ident.name,
1416+
regions.push(space, ty::RegionParameterDef { name: name,
14181417
def_id: def_id,
14191418
space: space,
14201419
index: index,

src/librustc/metadata/encoder.rs

+13-13
Original file line numberDiff line numberDiff line change
@@ -378,17 +378,17 @@ fn encode_path<PI: Iterator<PathElem> + Clone>(rbml_w: &mut Encoder,
378378
fn encode_reexported_static_method(rbml_w: &mut Encoder,
379379
exp: &middle::resolve::Export2,
380380
method_def_id: DefId,
381-
method_ident: Ident) {
381+
method_name: Name) {
382382
debug!("(encode reexported static method) {}::{}",
383-
exp.name, token::get_ident(method_ident));
383+
exp.name, token::get_name(method_name));
384384
rbml_w.start_tag(tag_items_data_item_reexport);
385385
rbml_w.start_tag(tag_items_data_item_reexport_def_id);
386386
rbml_w.wr_str(def_to_string(method_def_id).as_slice());
387387
rbml_w.end_tag();
388388
rbml_w.start_tag(tag_items_data_item_reexport_name);
389389
rbml_w.wr_str(format!("{}::{}",
390390
exp.name,
391-
token::get_ident(method_ident)).as_slice());
391+
token::get_name(method_name)).as_slice());
392392
rbml_w.end_tag();
393393
rbml_w.end_tag();
394394
}
@@ -410,7 +410,7 @@ fn encode_reexported_static_base_methods(ecx: &EncodeContext,
410410
encode_reexported_static_method(rbml_w,
411411
exp,
412412
m.def_id,
413-
m.ident);
413+
m.name);
414414
}
415415
ty::TypeTraitItem(_) => {}
416416
}
@@ -435,7 +435,7 @@ fn encode_reexported_static_trait_methods(ecx: &EncodeContext,
435435
encode_reexported_static_method(rbml_w,
436436
exp,
437437
m.def_id,
438-
m.ident);
438+
m.name);
439439
}
440440
_ => {}
441441
}
@@ -829,7 +829,7 @@ fn encode_method_ty_fields(ecx: &EncodeContext,
829829
rbml_w: &mut Encoder,
830830
method_ty: &ty::Method) {
831831
encode_def_id(rbml_w, method_ty.def_id);
832-
encode_name(rbml_w, method_ty.ident.name);
832+
encode_name(rbml_w, method_ty.name);
833833
encode_generics(rbml_w, ecx, &method_ty.generics,
834834
tag_method_ty_generics);
835835
encode_method_fty(ecx, rbml_w, &method_ty.fty);
@@ -854,7 +854,7 @@ fn encode_info_for_method(ecx: &EncodeContext,
854854
ast_item_opt: Option<&ImplItem>) {
855855

856856
debug!("encode_info_for_method: {} {}", m.def_id,
857-
token::get_ident(m.ident));
857+
token::get_name(m.name));
858858
rbml_w.start_tag(tag_items_data_item);
859859

860860
encode_method_ty_fields(ecx, rbml_w, m);
@@ -868,7 +868,7 @@ fn encode_info_for_method(ecx: &EncodeContext,
868868
let pty = lookup_item_type(ecx.tcx, m.def_id);
869869
encode_bounds_and_type(rbml_w, ecx, &pty);
870870

871-
let elem = ast_map::PathName(m.ident.name);
871+
let elem = ast_map::PathName(m.name);
872872
encode_path(rbml_w, impl_path.chain(Some(elem).into_iter()));
873873
match ast_item_opt {
874874
Some(&ast::MethodImplItem(ref ast_method)) => {
@@ -897,12 +897,12 @@ fn encode_info_for_associated_type(ecx: &EncodeContext,
897897
typedef_opt: Option<P<ast::Typedef>>) {
898898
debug!("encode_info_for_associated_type({},{})",
899899
associated_type.def_id,
900-
token::get_ident(associated_type.ident));
900+
token::get_name(associated_type.name));
901901

902902
rbml_w.start_tag(tag_items_data_item);
903903

904904
encode_def_id(rbml_w, associated_type.def_id);
905-
encode_name(rbml_w, associated_type.ident.name);
905+
encode_name(rbml_w, associated_type.name);
906906
encode_visibility(rbml_w, associated_type.vis);
907907
encode_family(rbml_w, 'y');
908908
encode_parent_item(rbml_w, local_def(parent_id));
@@ -911,7 +911,7 @@ fn encode_info_for_associated_type(ecx: &EncodeContext,
911911
let stab = stability::lookup(ecx.tcx, associated_type.def_id);
912912
encode_stability(rbml_w, stab);
913913

914-
let elem = ast_map::PathName(associated_type.ident.name);
914+
let elem = ast_map::PathName(associated_type.name);
915915
encode_path(rbml_w, impl_path.chain(Some(elem).into_iter()));
916916

917917
match typedef_opt {
@@ -1395,7 +1395,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
13951395

13961396
encode_method_ty_fields(ecx, rbml_w, &*method_ty);
13971397

1398-
let elem = ast_map::PathName(method_ty.ident.name);
1398+
let elem = ast_map::PathName(method_ty.name);
13991399
encode_path(rbml_w,
14001400
path.clone().chain(Some(elem).into_iter()));
14011401

@@ -1419,7 +1419,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
14191419
ty::StaticExplicitSelfCategory;
14201420
}
14211421
ty::TypeTraitItem(associated_type) => {
1422-
let elem = ast_map::PathName(associated_type.ident.name);
1422+
let elem = ast_map::PathName(associated_type.name);
14231423
encode_path(rbml_w,
14241424
path.clone().chain(Some(elem).into_iter()));
14251425

src/librustc/metadata/tydecode.rs

+9-5
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,17 @@ fn scan<R>(st: &mut PState, is_last: |char| -> bool, op: |&[u8]| -> R) -> R {
9696
}
9797

9898
pub fn parse_ident(st: &mut PState, last: char) -> ast::Ident {
99+
ast::Ident::new(parse_name(st, last))
100+
}
101+
102+
pub fn parse_name(st: &mut PState, last: char) -> ast::Name {
99103
fn is_last(b: char, c: char) -> bool { return c == b; }
100-
return parse_ident_(st, |a| is_last(last, a) );
104+
parse_name_(st, |a| is_last(last, a) )
101105
}
102106

103-
fn parse_ident_(st: &mut PState, is_last: |char| -> bool) -> ast::Ident {
107+
fn parse_name_(st: &mut PState, is_last: |char| -> bool) -> ast::Name {
104108
scan(st, is_last, |bytes| {
105-
token::str_to_ident(str::from_utf8(bytes).unwrap())
109+
token::intern(str::from_utf8(bytes).unwrap())
106110
})
107111
}
108112

@@ -625,7 +629,7 @@ pub fn parse_type_param_def_data(data: &[u8], start: uint,
625629
}
626630

627631
fn parse_type_param_def(st: &mut PState, conv: conv_did) -> ty::TypeParameterDef {
628-
let ident = parse_ident(st, ':');
632+
let name = parse_name(st, ':');
629633
let def_id = parse_def(st, NominalType, |x,y| conv(x,y));
630634
let space = parse_param_space(st);
631635
assert_eq!(next(st), '|');
@@ -639,7 +643,7 @@ fn parse_type_param_def(st: &mut PState, conv: conv_did) -> ty::TypeParameterDef
639643
let default = parse_opt(st, |st| parse_ty(st, |x,y| conv(x,y)));
640644

641645
ty::TypeParameterDef {
642-
ident: ident,
646+
name: name,
643647
def_id: def_id,
644648
space: space,
645649
index: index,

src/librustc/metadata/tyencode.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ pub fn enc_bounds(w: &mut SeekableMemWriter, cx: &ctxt, bs: &ty::ParamBounds) {
383383

384384
pub fn enc_type_param_def(w: &mut SeekableMemWriter, cx: &ctxt, v: &ty::TypeParameterDef) {
385385
mywrite!(w, "{}:{}|{}|{}|",
386-
token::get_ident(v.ident), (cx.ds)(v.def_id),
386+
token::get_name(v.name), (cx.ds)(v.def_id),
387387
v.space.to_uint(), v.index);
388388
enc_opt(w, v.associated_with, |w, did| mywrite!(w, "{}", (cx.ds)(did)));
389389
mywrite!(w, "|");

src/librustc/middle/expr_use_visitor.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,7 @@ impl<'d,'t,'tcx,TYPER:mc::Typer<'tcx>> ExprUseVisitor<'d,'t,TYPER> {
670670
if !contains_field_named(with_field, fields) {
671671
let cmt_field = self.mc.cat_field(&*with_expr,
672672
with_cmt.clone(),
673-
with_field.ident,
673+
with_field.name,
674674
with_field.mt.ty);
675675
self.delegate_consume(with_expr.id, with_expr.span, cmt_field);
676676
}
@@ -681,7 +681,7 @@ impl<'d,'t,'tcx,TYPER:mc::Typer<'tcx>> ExprUseVisitor<'d,'t,TYPER> {
681681
-> bool
682682
{
683683
fields.iter().any(
684-
|f| f.ident.node.name == field.ident.name)
684+
|f| f.ident.node.name == field.name)
685685
}
686686
}
687687

src/librustc/middle/mem_categorization.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,7 @@ impl<'t,'tcx,TYPER:Typer<'tcx>> MemCategorizationContext<'t,TYPER> {
472472
expr.id,
473473
expr.repr(self.tcx()),
474474
base_cmt.repr(self.tcx()));
475-
Ok(self.cat_field(expr, base_cmt, f_name.node, expr_ty))
475+
Ok(self.cat_field(expr, base_cmt, f_name.node.name, expr_ty))
476476
}
477477

478478
ast::ExprTupField(ref base, idx, _) => {
@@ -820,14 +820,14 @@ impl<'t,'tcx,TYPER:Typer<'tcx>> MemCategorizationContext<'t,TYPER> {
820820
pub fn cat_field<N:ast_node>(&self,
821821
node: &N,
822822
base_cmt: cmt,
823-
f_name: ast::Ident,
823+
f_name: ast::Name,
824824
f_ty: ty::t)
825825
-> cmt {
826826
Rc::new(cmt_ {
827827
id: node.id(),
828828
span: node.span(),
829829
mutbl: base_cmt.mutbl.inherit(),
830-
cat: cat_interior(base_cmt, InteriorField(NamedField(f_name.name))),
830+
cat: cat_interior(base_cmt, InteriorField(NamedField(f_name))),
831831
ty: f_ty,
832832
note: NoteNone
833833
})
@@ -1223,7 +1223,7 @@ impl<'t,'tcx,TYPER:Typer<'tcx>> MemCategorizationContext<'t,TYPER> {
12231223
// {f1: p1, ..., fN: pN}
12241224
for fp in field_pats.iter() {
12251225
let field_ty = if_ok!(self.pat_ty(&*fp.pat)); // see (*2)
1226-
let cmt_field = self.cat_field(pat, cmt.clone(), fp.ident, field_ty);
1226+
let cmt_field = self.cat_field(pat, cmt.clone(), fp.ident.name, field_ty);
12271227
if_ok!(self.cat_pattern(cmt_field, &*fp.pat, |x,y,z| op(x,y,z)));
12281228
}
12291229
}

0 commit comments

Comments
 (0)