diff options
| author | bors <bors@rust-lang.org> | 2022-08-31 13:01:38 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-08-31 13:01:38 +0000 |
| commit | 4fd4de7ea358ad6fc28c5780533ea8ccc09e1006 (patch) | |
| tree | 375f93b95d1d9c9b54cab9683797a6f1d45731a7 /compiler/rustc_monomorphize/src/polymorphize.rs | |
| parent | 12e4fd0755d7d976d4ee0f2004dc938290752ff7 (diff) | |
| parent | 2a0288266749800e621cfeb8e5404f0a8e6f9185 (diff) | |
Auto merge of #101238 - RalfJung:rollup-bzcmobj, r=RalfJung
Rollup of 7 pull requests Successful merges: - #90946 (Ignore `reference`s in "Type::inner_def_id") - #100730 (Migrate rustc_monomorphize to use SessionDiagnostic) - #100753 (translations(rustc_session): migrates `rustc_session` to use `SessionDiagnostic` - Pt. 1) - #100831 (Migrate `symbol_mangling` module to new diagnostics structs) - #101204 (rustdoc: Resugar async fn return type in `clean`, not `html`) - #101216 (Use in-page links for sanitizer docs.) - #101237 (fix into_iter on ZST) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_monomorphize/src/polymorphize.rs')
| -rw-r--r-- | compiler/rustc_monomorphize/src/polymorphize.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/compiler/rustc_monomorphize/src/polymorphize.rs b/compiler/rustc_monomorphize/src/polymorphize.rs index 394843e510d..6e4ab2a35c3 100644 --- a/compiler/rustc_monomorphize/src/polymorphize.rs +++ b/compiler/rustc_monomorphize/src/polymorphize.rs @@ -22,6 +22,8 @@ use rustc_span::symbol::sym; use std::convert::TryInto; use std::ops::ControlFlow; +use crate::errors::UnusedGenericParams; + /// Provide implementations of queries relating to polymorphization analysis. pub fn provide(providers: &mut Providers) { providers.unused_generic_params = unused_generic_params; @@ -206,22 +208,23 @@ fn emit_unused_generic_params_error<'tcx>( _ => tcx.def_span(def_id), }; - let mut err = tcx.sess.struct_span_err(fn_span, "item has unused generic parameters"); - + let mut param_spans = Vec::new(); + let mut param_names = Vec::new(); let mut next_generics = Some(generics); while let Some(generics) = next_generics { for param in &generics.params { if unused_parameters.contains(param.index).unwrap_or(false) { debug!(?param); let def_span = tcx.def_span(param.def_id); - err.span_label(def_span, &format!("generic parameter `{}` is unused", param.name)); + param_spans.push(def_span); + param_names.push(param.name.to_string()); } } next_generics = generics.parent.map(|did| tcx.generics_of(did)); } - err.emit(); + tcx.sess.emit_err(UnusedGenericParams { span: fn_span, param_spans, param_names }); } /// Visitor used to aggregate generic parameter uses. |
