diff options
| author | Jeremy Fitzhardinge <jeremy@goop.org> | 2023-09-09 10:02:51 -0700 |
|---|---|---|
| committer | Jeremy Fitzhardinge <jsgf@fb.com> | 2023-09-19 14:17:02 -0700 |
| commit | 62ad57b95a23c40b0153d1b4c1b1801d9c35b72e (patch) | |
| tree | c86135546687e6ba6f598ab81dcdc9d3fe3c3601 /compiler/rustc_errors/src/json.rs | |
| parent | 5c8170656bb18995795124d4690f8f3ab503e184 (diff) | |
| download | rust-62ad57b95a23c40b0153d1b4c1b1801d9c35b72e.tar.gz rust-62ad57b95a23c40b0153d1b4c1b1801d9c35b72e.zip | |
Make sure nested Diagnostics in FutureIncompat are also typed for consistency.
Diffstat (limited to 'compiler/rustc_errors/src/json.rs')
| -rw-r--r-- | compiler/rustc_errors/src/json.rs | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/compiler/rustc_errors/src/json.rs b/compiler/rustc_errors/src/json.rs index 7b937bd1459..2050600ee08 100644 --- a/compiler/rustc_errors/src/json.rs +++ b/compiler/rustc_errors/src/json.rs @@ -161,7 +161,7 @@ impl JsonEmitter { enum EmitTyped<'a> { Diagnostic(Diagnostic), Artifact(ArtifactNotification<'a>), - FutureIncompat(FutureIncompatReport), + FutureIncompat(FutureIncompatReport<'a>), UnusedExtern(UnusedExterns<'a, 'a, 'a>), } @@ -193,13 +193,17 @@ impl Emitter for JsonEmitter { } fn emit_future_breakage_report(&mut self, diags: Vec<crate::Diagnostic>) { - let data: Vec<FutureBreakageItem> = diags + let data: Vec<FutureBreakageItem<'_>> = diags .into_iter() .map(|mut diag| { if diag.level == crate::Level::Allow { diag.level = crate::Level::Warning(None); } - FutureBreakageItem { diagnostic: Diagnostic::from_errors_diagnostic(&diag, self) } + FutureBreakageItem { + diagnostic: EmitTyped::Diagnostic(Diagnostic::from_errors_diagnostic( + &diag, self, + )), + } }) .collect(); let report = FutureIncompatReport { future_incompat_report: data }; @@ -311,13 +315,14 @@ struct ArtifactNotification<'a> { } #[derive(Serialize)] -struct FutureBreakageItem { - diagnostic: Diagnostic, +struct FutureBreakageItem<'a> { + // Actually Diagnostic, but we want to make sure it gets serialized with `type`. + diagnostic: EmitTyped<'a>, } #[derive(Serialize)] -struct FutureIncompatReport { - future_incompat_report: Vec<FutureBreakageItem>, +struct FutureIncompatReport<'a> { + future_incompat_report: Vec<FutureBreakageItem<'a>>, } // NOTE: Keep this in sync with the equivalent structs in rustdoc's |
