Skip to content

Commit 571010b

Browse files
committed
replace Name with InternedString in DefPathData
Fixes #35292.
1 parent a92b1a7 commit 571010b

File tree

5 files changed

+57
-57
lines changed

5 files changed

+57
-57
lines changed

src/librustc/hir/lowering.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1854,7 +1854,7 @@ impl<'a> LoweringContext<'a> {
18541854

18551855
let parent_def = self.parent_def;
18561856
let def = self.resolver.definitions().map(|defs| {
1857-
let def_path_data = DefPathData::Binding(name);
1857+
let def_path_data = DefPathData::Binding(name.as_str());
18581858
let def_index = defs.create_def_with_parent(parent_def, pat.id, def_path_data);
18591859
Def::Local(DefId::local(def_index), pat.id)
18601860
}).unwrap_or(Def::Err);

src/librustc/hir/map/def_collector.rs

+33-33
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,11 @@ impl<'ast> visit::Visitor for DefCollector<'ast> {
135135
DefPathData::Impl,
136136
ItemKind::Enum(..) | ItemKind::Struct(..) | ItemKind::Trait(..) |
137137
ItemKind::ExternCrate(..) | ItemKind::ForeignMod(..) | ItemKind::Ty(..) =>
138-
DefPathData::TypeNs(i.ident.name),
139-
ItemKind::Mod(..) => DefPathData::Module(i.ident.name),
138+
DefPathData::TypeNs(i.ident.name.as_str()),
139+
ItemKind::Mod(..) => DefPathData::Module(i.ident.name.as_str()),
140140
ItemKind::Static(..) | ItemKind::Const(..) | ItemKind::Fn(..) =>
141-
DefPathData::ValueNs(i.ident.name),
142-
ItemKind::Mac(..) => DefPathData::MacroDef(i.ident.name),
141+
DefPathData::ValueNs(i.ident.name.as_str()),
142+
ItemKind::Mac(..) => DefPathData::MacroDef(i.ident.name.as_str()),
143143
ItemKind::Use(..) => DefPathData::Misc,
144144
};
145145
let def = self.create_def(i.id, def_data);
@@ -150,12 +150,12 @@ impl<'ast> visit::Visitor for DefCollector<'ast> {
150150
for v in &enum_definition.variants {
151151
let variant_def_index =
152152
this.create_def(v.node.data.id(),
153-
DefPathData::EnumVariant(v.node.name.name));
153+
DefPathData::EnumVariant(v.node.name.name.as_str()));
154154
this.with_parent(variant_def_index, |this| {
155155
for (index, field) in v.node.data.fields().iter().enumerate() {
156156
let name = field.ident.map(|ident| ident.name)
157157
.unwrap_or_else(|| token::intern(&index.to_string()));
158-
this.create_def(field.id, DefPathData::Field(name));
158+
this.create_def(field.id, DefPathData::Field(name.as_str()));
159159
}
160160

161161
if let Some(ref expr) = v.node.disr_expr {
@@ -172,8 +172,8 @@ impl<'ast> visit::Visitor for DefCollector<'ast> {
172172
}
173173

174174
for (index, field) in struct_def.fields().iter().enumerate() {
175-
let name = field.ident.map(|ident| ident.name)
176-
.unwrap_or(token::intern(&index.to_string()));
175+
let name = field.ident.map(|ident| ident.name.as_str())
176+
.unwrap_or(token::intern(&index.to_string()).as_str());
177177
this.create_def(field.id, DefPathData::Field(name));
178178
}
179179
}
@@ -184,7 +184,7 @@ impl<'ast> visit::Visitor for DefCollector<'ast> {
184184
}
185185

186186
fn visit_foreign_item(&mut self, foreign_item: &ForeignItem) {
187-
let def = self.create_def(foreign_item.id, DefPathData::ValueNs(foreign_item.ident.name));
187+
let def = self.create_def(foreign_item.id, DefPathData::ValueNs(foreign_item.ident.name.as_str()));
188188

189189
self.with_parent(def, |this| {
190190
visit::walk_foreign_item(this, foreign_item);
@@ -193,7 +193,7 @@ impl<'ast> visit::Visitor for DefCollector<'ast> {
193193

194194
fn visit_generics(&mut self, generics: &Generics) {
195195
for ty_param in generics.ty_params.iter() {
196-
self.create_def(ty_param.id, DefPathData::TypeParam(ty_param.ident.name));
196+
self.create_def(ty_param.id, DefPathData::TypeParam(ty_param.ident.name.as_str()));
197197
}
198198

199199
visit::walk_generics(self, generics);
@@ -202,9 +202,9 @@ impl<'ast> visit::Visitor for DefCollector<'ast> {
202202
fn visit_trait_item(&mut self, ti: &TraitItem) {
203203
let def_data = match ti.node {
204204
TraitItemKind::Method(..) | TraitItemKind::Const(..) =>
205-
DefPathData::ValueNs(ti.ident.name),
206-
TraitItemKind::Type(..) => DefPathData::TypeNs(ti.ident.name),
207-
TraitItemKind::Macro(..) => DefPathData::MacroDef(ti.ident.name),
205+
DefPathData::ValueNs(ti.ident.name.as_str()),
206+
TraitItemKind::Type(..) => DefPathData::TypeNs(ti.ident.name.as_str()),
207+
TraitItemKind::Macro(..) => DefPathData::MacroDef(ti.ident.name.as_str()),
208208
};
209209

210210
let def = self.create_def(ti.id, def_data);
@@ -220,9 +220,9 @@ impl<'ast> visit::Visitor for DefCollector<'ast> {
220220
fn visit_impl_item(&mut self, ii: &ImplItem) {
221221
let def_data = match ii.node {
222222
ImplItemKind::Method(..) | ImplItemKind::Const(..) =>
223-
DefPathData::ValueNs(ii.ident.name),
224-
ImplItemKind::Type(..) => DefPathData::TypeNs(ii.ident.name),
225-
ImplItemKind::Macro(..) => DefPathData::MacroDef(ii.ident.name),
223+
DefPathData::ValueNs(ii.ident.name.as_str()),
224+
ImplItemKind::Type(..) => DefPathData::TypeNs(ii.ident.name.as_str()),
225+
ImplItemKind::Macro(..) => DefPathData::MacroDef(ii.ident.name.as_str()),
226226
};
227227

228228
let def = self.create_def(ii.id, def_data);
@@ -239,7 +239,7 @@ impl<'ast> visit::Visitor for DefCollector<'ast> {
239239
let parent_def = self.parent_def;
240240

241241
if let PatKind::Ident(_, id, _) = pat.node {
242-
let def = self.create_def(pat.id, DefPathData::Binding(id.node.name));
242+
let def = self.create_def(pat.id, DefPathData::Binding(id.node.name.as_str()));
243243
self.parent_def = Some(def);
244244
}
245245

@@ -271,11 +271,11 @@ impl<'ast> visit::Visitor for DefCollector<'ast> {
271271
}
272272

273273
fn visit_lifetime_def(&mut self, def: &LifetimeDef) {
274-
self.create_def(def.lifetime.id, DefPathData::LifetimeDef(def.lifetime.name));
274+
self.create_def(def.lifetime.id, DefPathData::LifetimeDef(def.lifetime.name.as_str()));
275275
}
276276

277277
fn visit_macro_def(&mut self, macro_def: &MacroDef) {
278-
self.create_def(macro_def.id, DefPathData::MacroDef(macro_def.ident.name));
278+
self.create_def(macro_def.id, DefPathData::MacroDef(macro_def.ident.name.as_str()));
279279
}
280280
}
281281

@@ -301,9 +301,9 @@ impl<'ast> intravisit::Visitor<'ast> for DefCollector<'ast> {
301301
hir::ItemEnum(..) | hir::ItemStruct(..) | hir::ItemTrait(..) |
302302
hir::ItemExternCrate(..) | hir::ItemMod(..) | hir::ItemForeignMod(..) |
303303
hir::ItemTy(..) =>
304-
DefPathData::TypeNs(i.name),
304+
DefPathData::TypeNs(i.name.as_str()),
305305
hir::ItemStatic(..) | hir::ItemConst(..) | hir::ItemFn(..) =>
306-
DefPathData::ValueNs(i.name),
306+
DefPathData::ValueNs(i.name.as_str()),
307307
hir::ItemUse(..) => DefPathData::Misc,
308308
};
309309
let def = self.create_def(i.id, def_data);
@@ -314,12 +314,12 @@ impl<'ast> intravisit::Visitor<'ast> for DefCollector<'ast> {
314314
for v in &enum_definition.variants {
315315
let variant_def_index =
316316
this.create_def(v.node.data.id(),
317-
DefPathData::EnumVariant(v.node.name));
317+
DefPathData::EnumVariant(v.node.name.as_str()));
318318

319319
this.with_parent(variant_def_index, |this| {
320320
for field in v.node.data.fields() {
321321
this.create_def(field.id,
322-
DefPathData::Field(field.name));
322+
DefPathData::Field(field.name.as_str()));
323323
}
324324
if let Some(ref expr) = v.node.disr_expr {
325325
this.visit_hir_const_integer(expr);
@@ -335,7 +335,7 @@ impl<'ast> intravisit::Visitor<'ast> for DefCollector<'ast> {
335335
}
336336

337337
for field in struct_def.fields() {
338-
this.create_def(field.id, DefPathData::Field(field.name));
338+
this.create_def(field.id, DefPathData::Field(field.name.as_str()));
339339
}
340340
}
341341
_ => {}
@@ -345,7 +345,7 @@ impl<'ast> intravisit::Visitor<'ast> for DefCollector<'ast> {
345345
}
346346

347347
fn visit_foreign_item(&mut self, foreign_item: &'ast hir::ForeignItem) {
348-
let def = self.create_def(foreign_item.id, DefPathData::ValueNs(foreign_item.name));
348+
let def = self.create_def(foreign_item.id, DefPathData::ValueNs(foreign_item.name.as_str()));
349349

350350
self.with_parent(def, |this| {
351351
intravisit::walk_foreign_item(this, foreign_item);
@@ -354,7 +354,7 @@ impl<'ast> intravisit::Visitor<'ast> for DefCollector<'ast> {
354354

355355
fn visit_generics(&mut self, generics: &'ast hir::Generics) {
356356
for ty_param in generics.ty_params.iter() {
357-
self.create_def(ty_param.id, DefPathData::TypeParam(ty_param.name));
357+
self.create_def(ty_param.id, DefPathData::TypeParam(ty_param.name.as_str()));
358358
}
359359

360360
intravisit::walk_generics(self, generics);
@@ -363,8 +363,8 @@ impl<'ast> intravisit::Visitor<'ast> for DefCollector<'ast> {
363363
fn visit_trait_item(&mut self, ti: &'ast hir::TraitItem) {
364364
let def_data = match ti.node {
365365
hir::MethodTraitItem(..) | hir::ConstTraitItem(..) =>
366-
DefPathData::ValueNs(ti.name),
367-
hir::TypeTraitItem(..) => DefPathData::TypeNs(ti.name),
366+
DefPathData::ValueNs(ti.name.as_str()),
367+
hir::TypeTraitItem(..) => DefPathData::TypeNs(ti.name.as_str()),
368368
};
369369

370370
let def = self.create_def(ti.id, def_data);
@@ -380,8 +380,8 @@ impl<'ast> intravisit::Visitor<'ast> for DefCollector<'ast> {
380380
fn visit_impl_item(&mut self, ii: &'ast hir::ImplItem) {
381381
let def_data = match ii.node {
382382
hir::ImplItemKind::Method(..) | hir::ImplItemKind::Const(..) =>
383-
DefPathData::ValueNs(ii.name),
384-
hir::ImplItemKind::Type(..) => DefPathData::TypeNs(ii.name),
383+
DefPathData::ValueNs(ii.name.as_str()),
384+
hir::ImplItemKind::Type(..) => DefPathData::TypeNs(ii.name.as_str()),
385385
};
386386

387387
let def = self.create_def(ii.id, def_data);
@@ -398,7 +398,7 @@ impl<'ast> intravisit::Visitor<'ast> for DefCollector<'ast> {
398398
let parent_def = self.parent_def;
399399

400400
if let hir::PatKind::Binding(_, name, _) = pat.node {
401-
let def = self.create_def(pat.id, DefPathData::Binding(name.node));
401+
let def = self.create_def(pat.id, DefPathData::Binding(name.node.as_str()));
402402
self.parent_def = Some(def);
403403
}
404404

@@ -430,10 +430,10 @@ impl<'ast> intravisit::Visitor<'ast> for DefCollector<'ast> {
430430
}
431431

432432
fn visit_lifetime_def(&mut self, def: &'ast hir::LifetimeDef) {
433-
self.create_def(def.lifetime.id, DefPathData::LifetimeDef(def.lifetime.name));
433+
self.create_def(def.lifetime.id, DefPathData::LifetimeDef(def.lifetime.name.as_str()));
434434
}
435435

436436
fn visit_macro_def(&mut self, macro_def: &'ast hir::MacroDef) {
437-
self.create_def(macro_def.id, DefPathData::MacroDef(macro_def.name));
437+
self.create_def(macro_def.id, DefPathData::MacroDef(macro_def.name.as_str()));
438438
}
439439
}

src/librustc/hir/map/definitions.rs

+19-19
Original file line numberDiff line numberDiff line change
@@ -177,31 +177,31 @@ pub enum DefPathData {
177177
/// An impl
178178
Impl,
179179
/// Something in the type NS
180-
TypeNs(ast::Name),
180+
TypeNs(InternedString),
181181
/// Something in the value NS
182-
ValueNs(ast::Name),
182+
ValueNs(InternedString),
183183
/// A module declaration
184-
Module(ast::Name),
184+
Module(InternedString),
185185
/// A macro rule
186-
MacroDef(ast::Name),
186+
MacroDef(InternedString),
187187
/// A closure expression
188188
ClosureExpr,
189189

190190
// Subportions of items
191191
/// A type parameter (generic parameter)
192-
TypeParam(ast::Name),
192+
TypeParam(InternedString),
193193
/// A lifetime definition
194-
LifetimeDef(ast::Name),
194+
LifetimeDef(InternedString),
195195
/// A variant of a enum
196-
EnumVariant(ast::Name),
196+
EnumVariant(InternedString),
197197
/// A struct field
198-
Field(ast::Name),
198+
Field(InternedString),
199199
/// Implicit ctor for a tuple-like struct
200200
StructCtor,
201201
/// Initializer for a const
202202
Initializer,
203203
/// Pattern binding
204-
Binding(ast::Name),
204+
Binding(InternedString),
205205
}
206206

207207
impl Definitions {
@@ -315,16 +315,16 @@ impl DefPathData {
315315
pub fn as_interned_str(&self) -> InternedString {
316316
use self::DefPathData::*;
317317
match *self {
318-
TypeNs(name) |
319-
ValueNs(name) |
320-
Module(name) |
321-
MacroDef(name) |
322-
TypeParam(name) |
323-
LifetimeDef(name) |
324-
EnumVariant(name) |
325-
Binding(name) |
326-
Field(name) => {
327-
name.as_str()
318+
TypeNs(ref name) |
319+
ValueNs(ref name) |
320+
Module(ref name) |
321+
MacroDef(ref name) |
322+
TypeParam(ref name) |
323+
LifetimeDef(ref name) |
324+
EnumVariant(ref name) |
325+
Binding(ref name) |
326+
Field(ref name) => {
327+
name.clone()
328328
}
329329

330330
Impl => {

src/librustc_metadata/decoder.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1690,7 +1690,7 @@ fn item_def_key(item_doc: rbml::Doc) -> hir_map::DefKey {
16901690
let mut decoder = reader::Decoder::new(def_key_doc);
16911691
let simple_key = def_key::DefKey::decode(&mut decoder).unwrap();
16921692
let name = reader::maybe_get_doc(item_doc, tag_paths_data_name).map(|name| {
1693-
token::intern(name.as_str_slice())
1693+
token::intern(name.as_str_slice()).as_str()
16941694
});
16951695
def_key::recover_def_key(simple_key, name)
16961696
}

src/librustc_metadata/def_key.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
use rustc::hir::def_id::DefIndex;
1212
use rustc::hir::map as hir_map;
13-
use syntax::ast::Name;
13+
use syntax::parse::token::InternedString;
1414

1515
#[derive(RustcEncodable, RustcDecodable)]
1616
pub struct DefKey {
@@ -75,7 +75,7 @@ fn simplify_def_path_data(data: hir_map::DefPathData) -> DefPathData {
7575
}
7676
}
7777

78-
pub fn recover_def_key(key: DefKey, name: Option<Name>) -> hir_map::DefKey {
78+
pub fn recover_def_key(key: DefKey, name: Option<InternedString>) -> hir_map::DefKey {
7979
let data = hir_map::DisambiguatedDefPathData {
8080
data: recover_def_path_data(key.disambiguated_data.data, name),
8181
disambiguator: key.disambiguated_data.disambiguator,
@@ -86,7 +86,7 @@ pub fn recover_def_key(key: DefKey, name: Option<Name>) -> hir_map::DefKey {
8686
}
8787
}
8888

89-
fn recover_def_path_data(data: DefPathData, name: Option<Name>) -> hir_map::DefPathData {
89+
fn recover_def_path_data(data: DefPathData, name: Option<InternedString>) -> hir_map::DefPathData {
9090
match data {
9191
DefPathData::CrateRoot => hir_map::DefPathData::CrateRoot,
9292
DefPathData::Misc => hir_map::DefPathData::Misc,

0 commit comments

Comments
 (0)