| 85 | } |
| 86 | |
| 87 | pub fn format_diagnostic_error(err: &Diagnostic, source: &str, file_name: &str) -> String { |
| 88 | use miette::{GraphicalReportHandler, GraphicalTheme, NamedSource}; |
| 89 | let handler = GraphicalReportHandler::new_themed(GraphicalTheme::unicode_nocolor()); |
| 90 | let mut report = String::new(); |
| 91 | let named = NamedSource::new(file_name, source.to_string()); |
| 92 | let miette_err = err.into_diagnostic(source); |
| 93 | let err_with_source = miette::Report::new(miette_err).with_source_code(named); |
| 94 | if handler.render_report(&mut report, &*err_with_source).is_ok() { |
| 95 | return report; |
| 96 | } |
| 97 | let DiagnosticMeta { code, message, help, .. } = (err.formatter)(err, source); |
| 98 | format!("Error [{code}]: {message}\nHelp: {help}\n") |
| 99 | } |