Remove struct_diagnostic and G::make_diagnostic_builder.

`EmissionGuarantee` no longer determines the error level, the `create_*`
functions do.
This commit is contained in:
Nicholas Nethercote 2023-12-18 16:22:45 +11:00
parent e7724a2e31
commit 3a5f28f7e8
2 changed files with 0 additions and 65 deletions

View File

@ -106,13 +106,6 @@ pub trait EmissionGuarantee: Sized {
/// of `Self` without actually performing the emission.
#[track_caller]
fn diagnostic_builder_emit_producing_guarantee(db: &mut DiagnosticBuilder<'_, Self>) -> Self;
/// Creates a new `DiagnosticBuilder` that will return this type of guarantee.
#[track_caller]
fn make_diagnostic_builder(
dcx: &DiagCtxt,
msg: impl Into<DiagnosticMessage>,
) -> DiagnosticBuilder<'_, Self>;
}
impl<'a> DiagnosticBuilder<'a, ErrorGuaranteed> {
@ -163,14 +156,6 @@ impl EmissionGuarantee for ErrorGuaranteed {
}
}
}
#[track_caller]
fn make_diagnostic_builder(
dcx: &DiagCtxt,
msg: impl Into<DiagnosticMessage>,
) -> DiagnosticBuilder<'_, Self> {
DiagnosticBuilder::new(dcx, Level::Error { lint: false }, msg)
}
}
// FIXME(eddyb) should there be a `Option<ErrorGuaranteed>` impl as well?
@ -187,13 +172,6 @@ impl EmissionGuarantee for () {
DiagnosticBuilderState::AlreadyEmittedOrDuringCancellation => {}
}
}
fn make_diagnostic_builder(
dcx: &DiagCtxt,
msg: impl Into<DiagnosticMessage>,
) -> DiagnosticBuilder<'_, Self> {
DiagnosticBuilder::new(dcx, Level::Warning(None), msg)
}
}
/// Marker type which enables implementation of `create_note` and `emit_note` functions for
@ -215,13 +193,6 @@ impl EmissionGuarantee for Noted {
Noted
}
fn make_diagnostic_builder(
dcx: &DiagCtxt,
msg: impl Into<DiagnosticMessage>,
) -> DiagnosticBuilder<'_, Self> {
DiagnosticBuilder::new(dcx, Level::Note, msg)
}
}
/// Marker type which enables implementation of `create_bug` and `emit_bug` functions for
@ -244,13 +215,6 @@ impl EmissionGuarantee for Bug {
// Then panic. No need to return the marker type.
panic::panic_any(ExplicitBug);
}
fn make_diagnostic_builder(
dcx: &DiagCtxt,
msg: impl Into<DiagnosticMessage>,
) -> DiagnosticBuilder<'_, Self> {
DiagnosticBuilder::new(dcx, Level::Bug, msg)
}
}
impl EmissionGuarantee for ! {
@ -268,13 +232,6 @@ impl EmissionGuarantee for ! {
// Then fatally error, returning `!`
crate::FatalError.raise()
}
fn make_diagnostic_builder(
dcx: &DiagCtxt,
msg: impl Into<DiagnosticMessage>,
) -> DiagnosticBuilder<'_, Self> {
DiagnosticBuilder::new(dcx, Level::Fatal, msg)
}
}
impl EmissionGuarantee for rustc_span::fatal_error::FatalError {
@ -292,13 +249,6 @@ impl EmissionGuarantee for rustc_span::fatal_error::FatalError {
// Then fatally error..
rustc_span::fatal_error::FatalError
}
fn make_diagnostic_builder(
dcx: &DiagCtxt,
msg: impl Into<DiagnosticMessage>,
) -> DiagnosticBuilder<'_, Self> {
DiagnosticBuilder::new(dcx, Level::Fatal, msg)
}
}
/// In general, the `DiagnosticBuilder` uses deref to allow access to

View File

@ -722,21 +722,6 @@ impl DiagCtxt {
self.inner.borrow_mut().emit_stashed_diagnostics()
}
/// Construct a builder with the `msg` at the level appropriate for the
/// specific `EmissionGuarantee`.
///
/// Note: this is necessary for `derive(Diagnostic)`, but shouldn't be used
/// outside of that. Instead use `struct_err`, `struct_warn`, etc., which
/// make the diagnostic kind clearer.
#[rustc_lint_diagnostics]
#[track_caller]
pub fn struct_diagnostic<G: EmissionGuarantee>(
&self,
msg: impl Into<DiagnosticMessage>,
) -> DiagnosticBuilder<'_, G> {
G::make_diagnostic_builder(self, msg)
}
/// Construct a builder at the `Warning` level at the given `span` and with the `msg`.
///
/// Attempting to `.emit()` the builder will only emit if either: