From 6b152f83c7cfb59d7b1f5f10f3fa506566b434ef Mon Sep 17 00:00:00 2001 From: Matthew Jasper Date: Sun, 7 Jul 2019 16:38:49 +0100 Subject: [PATCH] Don't gensym `Self` parameters --- src/librustc/hir/lowering.rs | 11 +---------- src/librustc_typeck/collect.rs | 16 +--------------- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs index 591ceaf28a6..cc213cfccd4 100644 --- a/src/librustc/hir/lowering.rs +++ b/src/librustc/hir/lowering.rs @@ -2886,15 +2886,6 @@ fn lower_generic_param(&mut self, (param_name, kind) } GenericParamKind::Type { ref default, .. } => { - // Don't expose `Self` (recovered "keyword used as ident" parse error). - // `rustc::ty` expects `Self` to be only used for a trait's `Self`. - // Instead, use `gensym("Self")` to create a distinct name that looks the same. - let ident = if param.ident.name == kw::SelfUpper { - param.ident.gensym() - } else { - param.ident - }; - let add_bounds = add_bounds.get(¶m.id).map_or(&[][..], |x| &x); if !add_bounds.is_empty() { let params = self.lower_param_bounds(add_bounds, itctx.reborrow()).into_iter(); @@ -2913,7 +2904,7 @@ fn lower_generic_param(&mut self, .next(), }; - (hir::ParamName::Plain(ident), kind) + (hir::ParamName::Plain(param.ident), kind) } GenericParamKind::Const { ref ty } => { (hir::ParamName::Plain(param.ident), hir::GenericParamKind::Const { diff --git a/src/librustc_typeck/collect.rs b/src/librustc_typeck/collect.rs index 0f0568907c6..7010664722d 100644 --- a/src/librustc_typeck/collect.rs +++ b/src/librustc_typeck/collect.rs @@ -1011,13 +1011,6 @@ fn generics_of(tcx: TyCtxt<'_>, def_id: DefId) -> &ty::Generics { synthetic, .. } => { - if param.name.ident().name == kw::SelfUpper { - span_bug!( - param.span, - "`Self` should not be the name of a regular parameter" - ); - } - if !allow_defaults && default.is_some() { if !tcx.features().default_type_parameter_fallback { tcx.lint_hir( @@ -1041,13 +1034,6 @@ fn generics_of(tcx: TyCtxt<'_>, def_id: DefId) -> &ty::Generics { } } GenericParamKind::Const { .. } => { - if param.name.ident().name == kw::SelfUpper { - span_bug!( - param.span, - "`Self` should not be the name of a regular parameter", - ); - } - ty::GenericParamDefKind::Const } _ => return None, @@ -1569,7 +1555,7 @@ fn check(&mut self, def_id: DefId) { &format!( "defining opaque type use restricts opaque \ type by using the generic parameter `{}` twice", - p.name + p, ), ); return; -- 2.44.0