Skip to content

Commit

Permalink
typeck: use typed fluent identifiers for diags
Browse files Browse the repository at this point in the history
Use new typed Fluent identifiers for the "missing type parameters"
diagnostic in the typeck crate which was manually creating
`DiagnosticMessage`s previously.

Signed-off-by: David Wood <[email protected]>
  • Loading branch information
davidtwco committed May 24, 2022
1 parent 552eb32 commit ce9901f
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions compiler/rustc_typeck/src/errors.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
//! Errors emitted by typeck.
use rustc_errors::{
error_code, Applicability, DiagnosticBuilder, DiagnosticMessage, ErrorGuaranteed,
};
use rustc_errors::{error_code, Applicability, DiagnosticBuilder, ErrorGuaranteed};
use rustc_macros::{SessionDiagnostic, SessionSubdiagnostic};
use rustc_middle::ty::Ty;
use rustc_session::{parse::ParseSess, SessionDiagnostic};
Expand Down Expand Up @@ -264,10 +262,9 @@ pub struct MissingTypeParams {
// Manual implementation of `SessionDiagnostic` to be able to call `span_to_snippet`.
impl<'a> SessionDiagnostic<'a> for MissingTypeParams {
fn into_diagnostic(self, sess: &'a ParseSess) -> DiagnosticBuilder<'a, ErrorGuaranteed> {
static SLUG: &'static str = "typeck-missing-type-params";
let mut err = sess.span_diagnostic.struct_span_err_with_code(
self.span,
DiagnosticMessage::fluent(SLUG),
rustc_errors::fluent::typeck::missing_type_params,
error_code!(E0393),
);
err.set_arg("parameterCount", self.missing_type_params.len());
Expand All @@ -280,7 +277,7 @@ impl<'a> SessionDiagnostic<'a> for MissingTypeParams {
.join(", "),
);

err.span_label(self.def_span, DiagnosticMessage::fluent_attr(SLUG, "label"));
err.span_label(self.def_span, rustc_errors::fluent::typeck::missing_type_params_label);

let mut suggested = false;
if let (Ok(snippet), true) = (
Expand All @@ -298,18 +295,21 @@ impl<'a> SessionDiagnostic<'a> for MissingTypeParams {
// least we can clue them to the correct syntax `Iterator<Type>`.
err.span_suggestion(
self.span,
DiagnosticMessage::fluent_attr(SLUG, "suggestion"),
rustc_errors::fluent::typeck::missing_type_params_suggestion,
format!("{}<{}>", snippet, self.missing_type_params.join(", ")),
Applicability::HasPlaceholders,
);
suggested = true;
}
}
if !suggested {
err.span_label(self.span, DiagnosticMessage::fluent_attr(SLUG, "no-suggestion-label"));
err.span_label(
self.span,
rustc_errors::fluent::typeck::missing_type_params_no_suggestion_label,
);
}

err.note(DiagnosticMessage::fluent_attr(SLUG, "note"));
err.note(rustc_errors::fluent::typeck::missing_type_params_note);
err
}
}
Expand Down

0 comments on commit ce9901f

Please sign in to comment.