aboutsummaryrefslogtreecommitdiff
path: root/mingling_cli/src
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-08-03 19:22:30 +0800
committer魏曹先生 <1992414357@qq.com>2026-08-03 19:22:30 +0800
commitb846ddcaf51d28f3692b010b905b44dcd7b96a42 (patch)
tree56c5190763ace7c8de8d69aaf2a4088ed7285ffc /mingling_cli/src
parentffd2925b5fb619a91cd66f0e35a518c9077838d4 (diff)
feat(linter): use RendererInvoker for JSON report rendering
Replace AnyOutput-based dispatch with RendererInvoker in render_lint_reports_json to improve type safety and clarity.
Diffstat (limited to 'mingling_cli/src')
-rw-r--r--mingling_cli/src/linter/mlint_report.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/mingling_cli/src/linter/mlint_report.rs b/mingling_cli/src/linter/mlint_report.rs
index 0472056..b594b9d 100644
--- a/mingling_cli/src/linter/mlint_report.rs
+++ b/mingling_cli/src/linter/mlint_report.rs
@@ -10,7 +10,7 @@ use cargo_metadata::{Message, PackageId};
use annotate_snippets::level::{ERROR, HELP, NOTE, WARNING};
use annotate_snippets::{AnnotationKind, Group, Patch, Renderer, Snippet};
use mingling::macros::{buffer, chain, pack, r_append, r_eprintln, renderer};
-use mingling::{AnyOutput, ProgramCollect, Routable};
+use mingling::{RendererInvoker, Routable};
use crate::Next;
use crate::metadata::setup::ResUsingJson;
@@ -437,9 +437,13 @@ pub fn render_lint_reports(reports: ResultLintReportsAnnotateSnippet) {
}
#[renderer(buffer)]
-pub fn render_lint_reports_json(reports: ResultLintReportsJson) {
+pub fn render_lint_reports_json(
+ reports: ResultLintReportsJson,
+ message_renderer: &RendererInvoker<Message>,
+) {
for report in reports.inner {
- // DIRTY: Dispatch to the Message renderer using AnyOutput to obtain the render result and append it to the Buffer
- r_append!(|| { crate::ThisProgram::render(AnyOutput::new(report.to_compiler_message())) });
+ let message = report.to_compiler_message();
+ let result = message_renderer.invoke(message);
+ r_append!(result);
}
}