diff options
| author | bors <bors@rust-lang.org> | 2022-05-12 10:22:07 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-05-12 10:22:07 +0000 |
| commit | 18bd2dd5cda08b09ace6e37c1a0312e9b2bb4beb (patch) | |
| tree | c419def06148595c6765e3cf04ae84b45fe43c09 /compiler/rustc_errors | |
| parent | 4f8e2e3ad9fce35dc356ee1e87170814e4112d76 (diff) | |
| parent | 47582471c61e15f9e409b45e11f2f15e61a88e29 (diff) | |
| download | rust-18bd2dd5cda08b09ace6e37c1a0312e9b2bb4beb.tar.gz rust-18bd2dd5cda08b09ace6e37c1a0312e9b2bb4beb.zip | |
Auto merge of #96853 - davidtwco:diagnostic-translation-unit-and-more-porting, r=oli-obk
diagnostics: port more diagnostics to derive + support for `()` fields - Extend diagnostic derive so that spanless subdiagnostics (e.g. some uses of `help`/`note`) can be applied via attributes to fields of type `()` (currently spanless subdiagnostics are applied via attributes on the diagnostic struct itself). A consequence of this is that `Option<()>` fields can be used to represent optional spanless subdiagnostics, which are sometimes useful (e.g. for a `help` that should only show on nightly builds). - Simplify the "explicit generic args with impl trait" diagnostic struct (from #96760) using support for `Option<()>` spanless subdiagnostics. - Change `DiagnosticBuilder::set_arg`, used to provide context for Fluent messages, so that it takes anything that implements `IntoDiagnosticArg`, rather than `DiagnosticArgValue` - this improves the ergonomics of manual implementations of `SessionDiagnostic` which are translatable. - Port "the type parameter `T` must be explicitly specified", "manual implementations of `X` are experimental", "could not resolve substs on overridden impl" diagnostics to diagnostic structs. - When testing macros from `rustc_macros` in `ui-fulldeps` tests, sometimes paths from the compiler source tree can be shown in error messages - these need to be normalized in `compiletest`. r? `@oli-obk` cc `@pvdrz`
Diffstat (limited to 'compiler/rustc_errors')
| -rw-r--r-- | compiler/rustc_errors/src/diagnostic.rs | 4 | ||||
| -rw-r--r-- | compiler/rustc_errors/src/diagnostic_builder.rs | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/compiler/rustc_errors/src/diagnostic.rs b/compiler/rustc_errors/src/diagnostic.rs index 83e6a751394..909ed566f64 100644 --- a/compiler/rustc_errors/src/diagnostic.rs +++ b/compiler/rustc_errors/src/diagnostic.rs @@ -821,9 +821,9 @@ impl Diagnostic { pub fn set_arg( &mut self, name: impl Into<Cow<'static, str>>, - arg: DiagnosticArgValue<'static>, + arg: impl IntoDiagnosticArg, ) -> &mut Self { - self.args.push((name.into(), arg)); + self.args.push((name.into(), arg.into_diagnostic_arg())); self } diff --git a/compiler/rustc_errors/src/diagnostic_builder.rs b/compiler/rustc_errors/src/diagnostic_builder.rs index 96b730c2baa..53ad6e5a0ed 100644 --- a/compiler/rustc_errors/src/diagnostic_builder.rs +++ b/compiler/rustc_errors/src/diagnostic_builder.rs @@ -1,4 +1,4 @@ -use crate::diagnostic::DiagnosticArgValue; +use crate::diagnostic::IntoDiagnosticArg; use crate::{Diagnostic, DiagnosticId, DiagnosticMessage, DiagnosticStyledString, ErrorGuaranteed}; use crate::{Handler, Level, MultiSpan, StashKey}; use rustc_lint_defs::Applicability; @@ -528,7 +528,7 @@ impl<'a, G: EmissionGuarantee> DiagnosticBuilder<'a, G> { forward!(pub fn set_arg( &mut self, name: impl Into<Cow<'static, str>>, - arg: DiagnosticArgValue<'static>, + arg: impl IntoDiagnosticArg, ) -> &mut Self); forward!(pub fn subdiagnostic( |
