about summary refs log tree commit diff
path: root/src/librustc_metadata/decoder.rs
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2016-02-27 03:05:14 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2016-03-02 10:31:19 +0300
commit8b026a6e48ceadb2032b4982077fcdfab802cde5 (patch)
tree00e536ee4d34cfc277f0c8e7b4bf9a04a8613e0c /src/librustc_metadata/decoder.rs
parent8b60b948d94b835a1a573d34e44c55251c6cfa98 (diff)
downloadrust-8b026a6e48ceadb2032b4982077fcdfab802cde5.tar.gz
rust-8b026a6e48ceadb2032b4982077fcdfab802cde5.zip
Use numeric field `Name`s ("0", "1" etc) for positional fields
Diffstat (limited to 'src/librustc_metadata/decoder.rs')
-rw-r--r--src/librustc_metadata/decoder.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/librustc_metadata/decoder.rs b/src/librustc_metadata/decoder.rs
index 8295ffebda3..bce83d33f9f 100644
--- a/src/librustc_metadata/decoder.rs
+++ b/src/librustc_metadata/decoder.rs
@@ -48,8 +48,7 @@ use rbml::reader;
 use rbml;
 use serialize::Decodable;
 use syntax::attr;
-use syntax::parse::token::{IdentInterner, special_idents};
-use syntax::parse::token;
+use syntax::parse::token::{self, IdentInterner};
 use syntax::ast;
 use syntax::abi::Abi;
 use syntax::codemap::{self, Span, BytePos, NO_EXPANSION};
@@ -406,6 +405,7 @@ pub fn get_adt_def<'tcx>(intr: &IdentInterner,
                                 cdata: Cmd,
                                 doc: rbml::Doc,
                                 tcx: &ty::ctxt<'tcx>) -> Vec<ty::FieldDefData<'tcx, 'tcx>> {
+        let mut index = 0;
         reader::tagged_docs(doc, tag_item_field).map(|f| {
             let ff = item_family(f);
             match ff {
@@ -417,8 +417,9 @@ pub fn get_adt_def<'tcx>(intr: &IdentInterner,
                                   struct_field_family_to_visibility(ff))
         }).chain(reader::tagged_docs(doc, tag_item_unnamed_field).map(|f| {
             let ff = item_family(f);
-            ty::FieldDefData::new(item_def_id(f, cdata),
-                                  special_idents::unnamed_field.name,
+            let name = intr.intern(&index.to_string());
+            index += 1;
+            ty::FieldDefData::new(item_def_id(f, cdata), name,
                                   struct_field_family_to_visibility(ff))
         })).collect()
     }
@@ -1153,10 +1154,13 @@ fn struct_field_family_to_visibility(family: Family) -> hir::Visibility {
 pub fn get_struct_field_names(intr: &IdentInterner, cdata: Cmd, id: DefIndex)
     -> Vec<ast::Name> {
     let item = cdata.lookup_item(id);
+    let mut index = 0;
     reader::tagged_docs(item, tag_item_field).map(|an_item| {
         item_name(intr, an_item)
     }).chain(reader::tagged_docs(item, tag_item_unnamed_field).map(|_| {
-        special_idents::unnamed_field.name
+        let name = intr.intern(&index.to_string());
+        index += 1;
+        name
     })).collect()
 }