From 3a5f28f7e821a2325e9dbdb4ff40cd9ff417f065 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Mon, 18 Dec 2023 16:22:45 +1100 Subject: [PATCH] Remove `struct_diagnostic` and `G::make_diagnostic_builder`. `EmissionGuarantee` no longer determines the error level, the `create_*` functions do. --- .../rustc_errors/src/diagnostic_builder.rs | 50 ------------------- compiler/rustc_errors/src/lib.rs | 15 ------ 2 files changed, 65 deletions(-) diff --git a/compiler/rustc_errors/src/diagnostic_builder.rs b/compiler/rustc_errors/src/diagnostic_builder.rs index 0079fa8b995..59e5c1f352f 100644 --- a/compiler/rustc_errors/src/diagnostic_builder.rs +++ b/compiler/rustc_errors/src/diagnostic_builder.rs @@ -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, - ) -> 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, - ) -> DiagnosticBuilder<'_, Self> { - DiagnosticBuilder::new(dcx, Level::Error { lint: false }, msg) - } } // FIXME(eddyb) should there be a `Option` impl as well? @@ -187,13 +172,6 @@ impl EmissionGuarantee for () { DiagnosticBuilderState::AlreadyEmittedOrDuringCancellation => {} } } - - fn make_diagnostic_builder( - dcx: &DiagCtxt, - msg: impl Into, - ) -> 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, - ) -> 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, - ) -> 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, - ) -> 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, - ) -> DiagnosticBuilder<'_, Self> { - DiagnosticBuilder::new(dcx, Level::Fatal, msg) - } } /// In general, the `DiagnosticBuilder` uses deref to allow access to diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs index 5027f63a970..a86a12506ad 100644 --- a/compiler/rustc_errors/src/lib.rs +++ b/compiler/rustc_errors/src/lib.rs @@ -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( - &self, - msg: impl Into, - ) -> 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: