1 mod missing_cast_for_variadic_arg;
2 mod sized_unsized_cast;
3 mod wrong_number_of_generic_args;
6 missing_cast_for_variadic_arg::*, sized_unsized_cast::*, wrong_number_of_generic_args::*,
9 use rustc_errors::{DiagnosticBuilder, DiagnosticId, ErrorGuaranteed};
10 use rustc_session::Session;
12 pub trait StructuredDiagnostic<'tcx> {
13 fn session(&self) -> &Session;
15 fn code(&self) -> DiagnosticId;
17 fn diagnostic(&self) -> DiagnosticBuilder<'tcx, ErrorGuaranteed> {
18 let err = self.diagnostic_common();
20 if self.session().teach(&self.code()) {
21 self.diagnostic_extended(err)
23 self.diagnostic_regular(err)
27 fn diagnostic_common(&self) -> DiagnosticBuilder<'tcx, ErrorGuaranteed>;
29 fn diagnostic_regular(
31 err: DiagnosticBuilder<'tcx, ErrorGuaranteed>,
32 ) -> DiagnosticBuilder<'tcx, ErrorGuaranteed> {
36 fn diagnostic_extended(
38 err: DiagnosticBuilder<'tcx, ErrorGuaranteed>,
39 ) -> DiagnosticBuilder<'tcx, ErrorGuaranteed> {