Skip to content

Commit c4e8e71

Browse files
committed
Lift name into GenericParam
1 parent 32b2dac commit c4e8e71

File tree

11 files changed

+51
-63
lines changed

11 files changed

+51
-63
lines changed

src/librustc/hir/lowering.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -699,11 +699,12 @@ impl<'a> LoweringContext<'a> {
699699

700700
hir::GenericParam {
701701
id: def_node_id,
702+
name: hir_name.name(),
702703
span,
703704
pure_wrt_drop: false,
704705
bounds: vec![].into(),
705706
kind: hir::GenericParamKind::Lifetime {
706-
name: hir_name,
707+
lt_name: hir_name,
707708
in_band: true,
708709
lifetime: hir::Lifetime {
709710
id: def_node_id,
@@ -734,10 +735,7 @@ impl<'a> LoweringContext<'a> {
734735

735736
let hir_name = hir::LifetimeName::Name(name);
736737

737-
if self.lifetimes_to_define
738-
.iter()
739-
.any(|(_, lt_name)| *lt_name == hir_name)
740-
{
738+
if self.lifetimes_to_define.iter().any(|(_, lt_name)| *lt_name == hir_name) {
741739
return;
742740
}
743741

@@ -788,7 +786,7 @@ impl<'a> LoweringContext<'a> {
788786
{
789787
let old_len = self.in_scope_lifetimes.len();
790788
let lt_def_names = params.iter().filter_map(|param| match param.kind {
791-
hir::GenericParamKind::Lifetime { .. } => Some(param.name()),
789+
hir::GenericParamKind::Lifetime { .. } => Some(param.name),
792790
_ => None,
793791
});
794792
self.in_scope_lifetimes.extend(lt_def_names);
@@ -1251,11 +1249,11 @@ impl<'a> LoweringContext<'a> {
12511249
let name = Symbol::intern(&pprust::ty_to_string(t));
12521250
self.in_band_ty_params.push(hir::GenericParam {
12531251
id: def_node_id,
1252+
name,
12541253
span,
12551254
pure_wrt_drop: false,
12561255
bounds: hir_bounds,
12571256
kind: hir::GenericParamKind::Type {
1258-
name,
12591257
default: None,
12601258
synthetic: Some(hir::SyntheticTyParamKind::ImplTrait),
12611259
attrs: P::new(),
@@ -1366,10 +1364,10 @@ impl<'a> LoweringContext<'a> {
13661364

13671365
fn visit_generic_param(&mut self, param: &'v hir::GenericParam) {
13681366
// Record the introduction of 'a in `for<'a> ...`
1369-
if let hir::GenericParamKind::Lifetime { name, .. } = param.kind {
1367+
if let hir::GenericParamKind::Lifetime { lt_name, .. } = param.kind {
13701368
// Introduce lifetimes one at a time so that we can handle
13711369
// cases like `fn foo<'d>() -> impl for<'a, 'b: 'a, 'c: 'b + 'd>`
1372-
self.currently_bound_lifetimes.push(name);
1370+
self.currently_bound_lifetimes.push(lt_name);
13731371
}
13741372

13751373
hir::intravisit::walk_generic_param(self, param);
@@ -1418,11 +1416,12 @@ impl<'a> LoweringContext<'a> {
14181416

14191417
self.output_lifetime_params.push(hir::GenericParam {
14201418
id: def_node_id,
1419+
name: name.name(),
14211420
span: lifetime.span,
14221421
pure_wrt_drop: false,
14231422
bounds: vec![].into(),
14241423
kind: hir::GenericParamKind::Lifetime {
1425-
name,
1424+
lt_name: name,
14261425
in_band: false,
14271426
lifetime: hir::Lifetime {
14281427
id: def_node_id,
@@ -1955,11 +1954,12 @@ impl<'a> LoweringContext<'a> {
19551954
let lifetime = self.lower_lifetime(lifetime);
19561955
let param = hir::GenericParam {
19571956
id: lifetime.id,
1957+
name: lifetime.name.name(),
19581958
span: lifetime.span,
19591959
pure_wrt_drop: attr::contains_name(&param.attrs, "may_dangle"),
19601960
bounds,
19611961
kind: hir::GenericParamKind::Lifetime {
1962-
name: lifetime.name,
1962+
lt_name: lifetime.name,
19631963
in_band: false,
19641964
lifetime,
19651965
}
@@ -1988,11 +1988,11 @@ impl<'a> LoweringContext<'a> {
19881988

19891989
hir::GenericParam {
19901990
id: self.lower_node_id(param.id).node_id,
1991+
name,
19911992
span: param.ident.span,
19921993
pure_wrt_drop: attr::contains_name(&param.attrs, "may_dangle"),
19931994
bounds,
19941995
kind: hir::GenericParamKind::Type {
1995-
name,
19961996
default: default.as_ref().map(|x| {
19971997
self.lower_ty(x, ImplTraitContext::Disallowed)
19981998
}),

src/librustc/hir/map/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ impl<'hir> Map<'hir> {
616616
NodeItem(&Item { node: ItemTrait(..), .. }) => {
617617
keywords::SelfType.name()
618618
}
619-
NodeGenericParam(param) => param.name(),
619+
NodeGenericParam(param) => param.name,
620620
_ => {
621621
bug!("ty_param_name: {} not a type parameter",
622622
self.node_to_string(id))
@@ -957,7 +957,7 @@ impl<'hir> Map<'hir> {
957957
NodeVariant(v) => v.node.name,
958958
NodeField(f) => f.ident.name,
959959
NodeLifetime(lt) => lt.name.name(),
960-
NodeGenericParam(param) => param.name(),
960+
NodeGenericParam(param) => param.name,
961961
NodeBinding(&Pat { node: PatKind::Binding(_,_,l,_), .. }) => l.node,
962962
NodeStructCtor(_) => self.name(self.get_parent(id)),
963963
_ => bug!("no name for {}", self.node_to_string(id))

src/librustc/hir/mod.rs

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -424,8 +424,6 @@ pub enum TraitBoundModifier {
424424
Maybe,
425425
}
426426

427-
pub type Outlives = Lifetime;
428-
429427
/// The AST represents all type param bounds as types.
430428
/// typeck::collect::compute_bounds matches these against
431429
/// the "special" built-in traits (see middle::lang_items) and
@@ -451,7 +449,7 @@ pub type ParamBounds = HirVec<ParamBound>;
451449
pub enum GenericParamKind {
452450
/// A lifetime definition, eg `'a: 'b + 'c + 'd`.
453451
Lifetime {
454-
name: LifetimeName,
452+
lt_name: LifetimeName,
455453
// Indicates that the lifetime definition was synthetically added
456454
// as a result of an in-band lifetime usage like:
457455
// `fn foo(x: &'a u8) -> &'a u8 { x }`
@@ -460,7 +458,6 @@ pub enum GenericParamKind {
460458
lifetime: Lifetime,
461459
},
462460
Type {
463-
name: Name,
464461
default: Option<P<Ty>>,
465462
synthetic: Option<SyntheticTyParamKind>,
466463
attrs: HirVec<Attribute>,
@@ -470,22 +467,14 @@ pub enum GenericParamKind {
470467
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
471468
pub struct GenericParam {
472469
pub id: NodeId,
470+
pub name: Name,
473471
pub bounds: ParamBounds,
474472
pub span: Span,
475473
pub pure_wrt_drop: bool,
476474

477475
pub kind: GenericParamKind,
478476
}
479477

480-
impl GenericParam {
481-
pub fn name(&self) -> Name {
482-
match self.kind {
483-
GenericParamKind::Lifetime { name, .. } => name.name(),
484-
GenericParamKind::Type { name, .. } => name,
485-
}
486-
}
487-
}
488-
489478
pub struct GenericParamCount {
490479
pub lifetimes: usize,
491480
pub types: usize,

src/librustc/hir/print.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2115,7 +2115,7 @@ impl<'a> State<'a> {
21152115
}
21162116

21172117
pub fn print_generic_param(&mut self, param: &GenericParam) -> io::Result<()> {
2118-
self.print_name(param.name())?;
2118+
self.print_name(param.name)?;
21192119
match param.kind {
21202120
GenericParamKind::Lifetime { .. } => {
21212121
let mut sep = ":";

src/librustc/ich/impls_hir.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ impl_stable_hash_for!(enum hir::TraitBoundModifier {
196196

197197
impl_stable_hash_for!(struct hir::GenericParam {
198198
id,
199+
name,
199200
span,
200201
pure_wrt_drop,
201202
bounds,
@@ -208,13 +209,12 @@ impl<'a> HashStable<StableHashingContext<'a>> for hir::GenericParamKind {
208209
hasher: &mut StableHasher<W>) {
209210
mem::discriminant(self).hash_stable(hcx, hasher);
210211
match self {
211-
hir::GenericParamKind::Lifetime { name, in_band, ref lifetime } => {
212-
name.hash_stable(hcx, hasher);
212+
hir::GenericParamKind::Lifetime { lt_name, in_band, ref lifetime } => {
213+
lt_name.hash_stable(hcx, hasher);
213214
in_band.hash_stable(hcx, hasher);
214215
lifetime.hash_stable(hcx, hasher);
215216
}
216-
hir::GenericParamKind::Type { name, ref default, synthetic, attrs } => {
217-
name.hash_stable(hcx, hasher);
217+
hir::GenericParamKind::Type { ref default, synthetic, attrs } => {
218218
default.hash_stable(hcx, hasher);
219219
synthetic.hash_stable(hcx, hasher);
220220
attrs.hash_stable(hcx, hasher);

src/librustc/middle/resolve_lifetime.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,13 @@ pub enum Region {
8484
fn new_region(hir_map: &Map, param: &hir::GenericParam)
8585
-> (hir::LifetimeName, DefId, LifetimeDefOrigin) {
8686
let def_id = hir_map.local_def_id(param.id);
87-
let (name, origin) = match param.kind {
88-
GenericParamKind::Lifetime { name, in_band, .. } => {
89-
(name, LifetimeDefOrigin::from_is_in_band(in_band))
87+
let (lt_name, origin) = match param.kind {
88+
GenericParamKind::Lifetime { lt_name, in_band, .. } => {
89+
(lt_name, LifetimeDefOrigin::from_is_in_band(in_band))
9090
}
9191
_ => bug!("expected a lifetime param"),
9292
};
93-
(name, def_id, origin)
93+
(lt_name, def_id, origin)
9494
}
9595

9696
impl Region {
@@ -1222,7 +1222,7 @@ fn compute_object_lifetime_defaults(
12221222
generics.params.iter().find_map(|param| match param.kind {
12231223
GenericParamKind::Lifetime { .. } => {
12241224
if i == 0 {
1225-
return Some(param.name().to_string());
1225+
return Some(param.name.to_string());
12261226
}
12271227
i -= 1;
12281228
None
@@ -1299,8 +1299,8 @@ fn object_lifetime_defaults_for_item(
12991299
Set1::One(Region::Static)
13001300
} else {
13011301
generics.params.iter().filter_map(|param| match param.kind {
1302-
GenericParamKind::Lifetime { name, in_band, .. } => {
1303-
Some((param.id, name, in_band))
1302+
GenericParamKind::Lifetime { lt_name, in_band, .. } => {
1303+
Some((param.id, lt_name, in_band))
13041304
}
13051305
_ => None,
13061306
})
@@ -2237,7 +2237,7 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> {
22372237

22382238
fn check_lifetime_params(&mut self, old_scope: ScopeRef, params: &'tcx [hir::GenericParam]) {
22392239
let lifetimes: Vec<_> = params.iter().filter_map(|param| match param.kind {
2240-
GenericParamKind::Lifetime { name, .. } => Some((param, name)),
2240+
GenericParamKind::Lifetime { lt_name, .. } => Some((param, lt_name)),
22412241
_ => None,
22422242
}).collect();
22432243
for (i, (lifetime_i, lifetime_i_name)) in lifetimes.iter().enumerate() {
@@ -2271,7 +2271,7 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> {
22712271
lifetime_j.span,
22722272
E0263,
22732273
"lifetime name `{}` declared twice in the same scope",
2274-
lifetime_j.name()
2274+
lifetime_j.name
22752275
).span_label(lifetime_j.span, "declared twice")
22762276
.span_label(lifetime_i.span, "previous declaration here")
22772277
.emit();
@@ -2302,13 +2302,13 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> {
23022302
lifetime_i.span.to(lt.span),
23032303
&format!(
23042304
"unnecessary lifetime parameter `{}`",
2305-
lifetime_i.name()
2305+
lifetime_i.name
23062306
),
23072307
)
23082308
.help(&format!(
23092309
"you can use the `'static` lifetime directly, in place \
23102310
of `{}`",
2311-
lifetime_i.name()
2311+
lifetime_i.name
23122312
))
23132313
.emit();
23142314
}
@@ -2331,7 +2331,7 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> {
23312331
) {
23322332
for &(label, label_span) in &self.labels_in_fn {
23332333
// FIXME (#24278): non-hygienic comparison
2334-
if param.name() == label {
2334+
if param.name == label {
23352335
signal_shadowing_problem(
23362336
self.tcx,
23372337
label,
@@ -2343,7 +2343,7 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> {
23432343
}
23442344

23452345
let name = match param.kind {
2346-
GenericParamKind::Lifetime { name, .. } => name,
2346+
GenericParamKind::Lifetime { lt_name, .. } => lt_name,
23472347
_ => bug!("expected lifetime param"),
23482348
};
23492349

@@ -2367,7 +2367,7 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> {
23672367

23682368
signal_shadowing_problem(
23692369
self.tcx,
2370-
param.name(),
2370+
param.name,
23712371
original_lifetime(self.tcx.hir.span(node_id)),
23722372
shadower_lifetime(&param),
23732373
);
@@ -2539,7 +2539,7 @@ fn insert_late_bound_lifetimes(
25392539
// - are not implicitly captured by `impl Trait`
25402540
for param in &generics.params {
25412541
let name = match param.kind {
2542-
GenericParamKind::Lifetime { name, .. } => name,
2542+
GenericParamKind::Lifetime { lt_name, .. } => lt_name,
25432543
_ => continue,
25442544
};
25452545

src/librustc_lint/bad_style.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NonCamelCaseTypes {
151151
GenericParamKind::Lifetime { .. } => {}
152152
GenericParamKind::Type { synthetic, .. } => {
153153
if synthetic.is_none() {
154-
self.check_case(cx, "type parameter", param.name(), param.span);
154+
self.check_case(cx, "type parameter", param.name, param.span);
155155
}
156156
}
157157
}
@@ -258,7 +258,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NonSnakeCase {
258258
fn check_generic_param(&mut self, cx: &LateContext, param: &hir::GenericParam) {
259259
match param.kind {
260260
GenericParamKind::Lifetime { .. } => {
261-
self.check_snake_case(cx, "lifetime", &param.name().as_str(), Some(param.span));
261+
self.check_snake_case(cx, "lifetime", &param.name.as_str(), Some(param.span));
262262
}
263263
GenericParamKind::Type { .. } => {}
264264
}

src/librustc_typeck/check/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5195,7 +5195,7 @@ pub fn check_bounds_are_used<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
51955195
for (&used, param) in types_used.iter().zip(types) {
51965196
if !used {
51975197
struct_span_err!(tcx.sess, param.span, E0091, "type parameter `{}` is unused",
5198-
param.name())
5198+
param.name)
51995199
.span_label(param.span, "unused type parameter")
52005200
.emit();
52015201
}

src/librustc_typeck/check/wfcheck.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,7 @@ fn check_variances_for_type_defn<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
632632
}
633633

634634
let param = &ast_generics.params[index];
635-
report_bivariance(tcx, param.span, param.name());
635+
report_bivariance(tcx, param.span, param.name);
636636
}
637637
}
638638

src/librustc_typeck/collect.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -898,7 +898,7 @@ fn generics_of<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
898898
let early_lifetimes = early_bound_lifetimes_from_generics(tcx, ast_generics);
899899
params.extend(early_lifetimes.enumerate().map(|(i, param)| {
900900
ty::GenericParamDef {
901-
name: param.name().as_interned_str(),
901+
name: param.name.as_interned_str(),
902902
index: own_start + i as u32,
903903
def_id: tcx.hir.local_def_id(param.id),
904904
pure_wrt_drop: param.pure_wrt_drop,
@@ -914,9 +914,8 @@ fn generics_of<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
914914
let mut i = 0;
915915
params.extend(ast_generics.params.iter().filter_map(|param| match param.kind {
916916
GenericParamKind::Type { ref default, synthetic, .. } => {
917-
if param.name() == keywords::SelfType.name() {
918-
span_bug!(param.span,
919-
"`Self` should not be the name of a regular parameter");
917+
if param.name == keywords::SelfType.name() {
918+
span_bug!(param.span, "`Self` should not be the name of a regular parameter");
920919
}
921920

922921
if !allow_defaults && default.is_some() {
@@ -932,7 +931,7 @@ fn generics_of<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
932931

933932
let ty_param = ty::GenericParamDef {
934933
index: type_start + i as u32,
935-
name: param.name().as_interned_str(),
934+
name: param.name.as_interned_str(),
936935
def_id: tcx.hir.local_def_id(param.id),
937936
pure_wrt_drop: param.pure_wrt_drop,
938937
kind: ty::GenericParamDefKind::Type {
@@ -1438,7 +1437,7 @@ pub fn explicit_predicates_of<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
14381437
let region = tcx.mk_region(ty::ReEarlyBound(ty::EarlyBoundRegion {
14391438
def_id: tcx.hir.local_def_id(param.id),
14401439
index,
1441-
name: param.name().as_interned_str(),
1440+
name: param.name.as_interned_str(),
14421441
}));
14431442
index += 1;
14441443

@@ -1462,7 +1461,7 @@ pub fn explicit_predicates_of<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
14621461
for param in &ast_generics.params {
14631462
match param.kind {
14641463
GenericParamKind::Type { .. } => {
1465-
let param_ty = ty::ParamTy::new(index, param.name().as_interned_str()).to_ty(tcx);
1464+
let param_ty = ty::ParamTy::new(index, param.name.as_interned_str()).to_ty(tcx);
14661465
index += 1;
14671466

14681467
let sized = SizedByDefault::Yes;

0 commit comments

Comments
 (0)