Implement IntoDiagnosticArg for hir::ConstContext

This commit is contained in:
Michael Goulet 2022-06-28 22:09:59 -07:00
parent 1c4afbd1de
commit ff9fd36aa4
4 changed files with 16 additions and 0 deletions

View File

@ -3813,6 +3813,7 @@ dependencies = [
"atty", "atty",
"rustc_data_structures", "rustc_data_structures",
"rustc_error_messages", "rustc_error_messages",
"rustc_hir",
"rustc_lint_defs", "rustc_lint_defs",
"rustc_macros", "rustc_macros",
"rustc_serialize", "rustc_serialize",

View File

@ -13,6 +13,7 @@ rustc_serialize = { path = "../rustc_serialize" }
rustc_span = { path = "../rustc_span" } rustc_span = { path = "../rustc_span" }
rustc_macros = { path = "../rustc_macros" } rustc_macros = { path = "../rustc_macros" }
rustc_data_structures = { path = "../rustc_data_structures" } rustc_data_structures = { path = "../rustc_data_structures" }
rustc_hir = { path = "../rustc_hir" }
rustc_lint_defs = { path = "../rustc_lint_defs" } rustc_lint_defs = { path = "../rustc_lint_defs" }
unicode-width = "0.1.4" unicode-width = "0.1.4"
atty = "0.2" atty = "0.2"

View File

@ -5,6 +5,7 @@ use crate::{
}; };
use rustc_data_structures::stable_map::FxHashMap; use rustc_data_structures::stable_map::FxHashMap;
use rustc_error_messages::FluentValue; use rustc_error_messages::FluentValue;
use rustc_hir as hir;
use rustc_lint_defs::{Applicability, LintExpectationId}; use rustc_lint_defs::{Applicability, LintExpectationId};
use rustc_span::edition::LATEST_STABLE_EDITION; use rustc_span::edition::LATEST_STABLE_EDITION;
use rustc_span::symbol::{Ident, Symbol}; use rustc_span::symbol::{Ident, Symbol};
@ -160,6 +161,16 @@ impl<'source> Into<FluentValue<'source>> for DiagnosticArgValue<'source> {
} }
} }
impl IntoDiagnosticArg for hir::ConstContext {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Borrowed(match self {
hir::ConstContext::ConstFn => "constant function",
hir::ConstContext::Static(_) => "static",
hir::ConstContext::Const => "constant",
}))
}
}
/// Trait implemented by error types. This should not be implemented manually. Instead, use /// Trait implemented by error types. This should not be implemented manually. Instead, use
/// `#[derive(SessionSubdiagnostic)]` -- see [rustc_macros::SessionSubdiagnostic]. /// `#[derive(SessionSubdiagnostic)]` -- see [rustc_macros::SessionSubdiagnostic].
#[rustc_diagnostic_item = "AddSubdiagnostic"] #[rustc_diagnostic_item = "AddSubdiagnostic"]

View File

@ -1595,6 +1595,9 @@ impl fmt::Display for ConstContext {
} }
} }
// NOTE: `IntoDiagnosticArg` impl for `ConstContext` lives in `rustc_errors`
// due to a cyclical dependency between hir that crate.
/// A literal. /// A literal.
pub type Lit = Spanned<LitKind>; pub type Lit = Spanned<LitKind>;