diff options
| author | León Orell Valerian Liehr <me@fmease.dev> | 2023-09-10 23:06:14 +0200 |
|---|---|---|
| committer | León Orell Valerian Liehr <me@fmease.dev> | 2023-09-10 23:06:14 +0200 |
| commit | b00e408e613700124463b72f0a449a28c44a8178 (patch) | |
| tree | 74b738a1a09ad5fd3174afd7a87010b58cf990ab /compiler/rustc_resolve/src | |
| parent | 3cd97ed3c3efe11bf6b63d23dce2515238b78a57 (diff) | |
| download | rust-b00e408e613700124463b72f0a449a28c44a8178.tar.gz rust-b00e408e613700124463b72f0a449a28c44a8178.zip | |
Generalize E0401
Diffstat (limited to 'compiler/rustc_resolve/src')
| -rw-r--r-- | compiler/rustc_resolve/src/diagnostics.rs | 22 | ||||
| -rw-r--r-- | compiler/rustc_resolve/src/ident.rs | 10 | ||||
| -rw-r--r-- | compiler/rustc_resolve/src/lib.rs | 4 |
3 files changed, 12 insertions, 24 deletions
diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs index d99fc07a7cd..a99b610ed36 100644 --- a/compiler/rustc_resolve/src/diagnostics.rs +++ b/compiler/rustc_resolve/src/diagnostics.rs @@ -553,14 +553,14 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { resolution_error: ResolutionError<'a>, ) -> DiagnosticBuilder<'_, ErrorGuaranteed> { match resolution_error { - ResolutionError::GenericParamsFromOuterFunction(outer_res, has_generic_params) => { + ResolutionError::GenericParamsFromOuterItem(outer_res, has_generic_params) => { let mut err = struct_span_err!( self.tcx.sess, span, E0401, - "can't use generic parameters from outer function", + "can't use generic parameters from outer item", ); - err.span_label(span, "use of generic parameter from outer function"); + err.span_label(span, "use of generic parameter from outer item"); let sm = self.tcx.sess.source_map(); let def_id = match outer_res { @@ -573,23 +573,20 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { reduce_impl_span_to_impl_keyword(sm, self.def_span(def_id)), "`Self` type implicitly declared here, by this `impl`", ); - err.span_label(span, "use a type here instead"); + err.span_label(span, "refer to the type directly here instead"); return err; } Res::Def(DefKind::TyParam, def_id) => { - err.span_label(self.def_span(def_id), "type parameter from outer function"); + err.span_label(self.def_span(def_id), "type parameter from outer item"); def_id } Res::Def(DefKind::ConstParam, def_id) => { - err.span_label( - self.def_span(def_id), - "const parameter from outer function", - ); + err.span_label(self.def_span(def_id), "const parameter from outer item"); def_id } _ => { bug!( - "GenericParamsFromOuterFunction should only be used with \ + "GenericParamsFromOuterItem should only be used with \ Res::SelfTyParam, Res::SelfTyAlias, DefKind::TyParam or \ DefKind::ConstParam" ); @@ -597,9 +594,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { }; if let HasGenericParams::Yes(span) = has_generic_params { - // Try to retrieve the span of the function signature and generate a new - // message with a local type or const parameter. - let sugg_msg = "try using a local generic parameter instead"; + let sugg_msg = "try introducing a local generic parameter here"; let name = self.tcx.item_name(def_id); let (span, snippet) = if span.is_empty() { let snippet = format!("<{name}>"); @@ -609,7 +604,6 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { let snippet = format!("{name}, "); (span, snippet) }; - // Suggest the modification to the user err.span_suggestion(span, sugg_msg, snippet, Applicability::MaybeIncorrect); } diff --git a/compiler/rustc_resolve/src/ident.rs b/compiler/rustc_resolve/src/ident.rs index 61e05b65f90..4817484f564 100644 --- a/compiler/rustc_resolve/src/ident.rs +++ b/compiler/rustc_resolve/src/ident.rs @@ -1229,10 +1229,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { if let Some(span) = finalize { self.report_error( span, - ResolutionError::GenericParamsFromOuterFunction( - res, - has_generic_params, - ), + ResolutionError::GenericParamsFromOuterItem(res, has_generic_params), ); } return Res::Err; @@ -1296,10 +1293,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { if let Some(span) = finalize { self.report_error( span, - ResolutionError::GenericParamsFromOuterFunction( - res, - has_generic_params, - ), + ResolutionError::GenericParamsFromOuterItem(res, has_generic_params), ); } return Res::Err; diff --git a/compiler/rustc_resolve/src/lib.rs b/compiler/rustc_resolve/src/lib.rs index b757f42eaa0..5bb8a215138 100644 --- a/compiler/rustc_resolve/src/lib.rs +++ b/compiler/rustc_resolve/src/lib.rs @@ -186,8 +186,8 @@ struct BindingError { #[derive(Debug)] enum ResolutionError<'a> { - /// Error E0401: can't use type or const parameters from outer function. - GenericParamsFromOuterFunction(Res, HasGenericParams), + /// Error E0401: can't use type or const parameters from outer item. + GenericParamsFromOuterItem(Res, HasGenericParams), /// Error E0403: the name is already used for a type or const parameter in this generic /// parameter list. NameAlreadyUsedInParameterList(Symbol, Span), |
