Rollup merge of #98884 - davidtwco:translation-on-lints-derive, r=oli-obk
macros: `LintDiagnostic` derive - Move `LintDiagnosticBuilder` into `rustc_errors` so that a diagnostic derive can refer to it. - Introduce a `DecorateLint` trait, which is equivalent to `SessionDiagnostic` or `AddToDiagnostic` but for lints. Necessary without making more changes to the lint infrastructure as `DecorateLint` takes a `LintDiagnosticBuilder` and re-uses all of the existing logic for determining what type of diagnostic a lint should be emitted as (e.g. error/warning). - Various refactorings of the diagnostic derive machinery (extracting `build_field_mapping` helper and moving `sess` field out of the `DiagnosticDeriveBuilder`). - Introduce a `LintDiagnostic` derive macro that works almost exactly like the `SessionDiagnostic` derive macro except that it derives a `DecorateLint` implementation instead. A new derive is necessary for this because `SessionDiagnostic` is intended for when the generated code creates the diagnostic. `AddToDiagnostic` could have been used but it would have required more changes to the lint machinery. ~~At time of opening this pull request, ignore all of the commits from #98624, it's just the last few commits that are new.~~ r? `@oli-obk`
This commit is contained in:
commit
df1f415305
25 changed files with 967 additions and 685 deletions
|
@ -129,6 +129,7 @@ decl_derive!(
|
|||
// struct attributes
|
||||
warning,
|
||||
error,
|
||||
lint,
|
||||
note,
|
||||
help,
|
||||
// field attributes
|
||||
|
@ -141,6 +142,24 @@ decl_derive!(
|
|||
suggestion_hidden,
|
||||
suggestion_verbose)] => diagnostics::session_diagnostic_derive
|
||||
);
|
||||
decl_derive!(
|
||||
[LintDiagnostic, attributes(
|
||||
// struct attributes
|
||||
warning,
|
||||
error,
|
||||
lint,
|
||||
note,
|
||||
help,
|
||||
// field attributes
|
||||
skip_arg,
|
||||
primary_span,
|
||||
label,
|
||||
subdiagnostic,
|
||||
suggestion,
|
||||
suggestion_short,
|
||||
suggestion_hidden,
|
||||
suggestion_verbose)] => diagnostics::lint_diagnostic_derive
|
||||
);
|
||||
decl_derive!(
|
||||
[SessionSubdiagnostic, attributes(
|
||||
// struct/variant attributes
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue