From 989d344d3dc2e08ec2ed5025b202e464a5b29d2c Mon Sep 17 00:00:00 2001 From: Laurenz Date: Wed, 29 Sep 2021 00:10:39 +0200 Subject: [PATCH] Implement `Display` for `Tracepoint` --- src/diag.rs | 14 ++++++++++++++ src/main.rs | 11 ++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/diag.rs b/src/diag.rs index 6249a7cd4..f04553107 100644 --- a/src/diag.rs +++ b/src/diag.rs @@ -1,5 +1,7 @@ //! Diagnostics. +use std::fmt::{self, Display, Formatter}; + use serde::{Deserialize, Serialize}; use crate::syntax::{Span, Spanned}; @@ -59,6 +61,18 @@ pub enum Tracepoint { Import, } +impl Display for Tracepoint { + fn fmt(&self, f: &mut Formatter) -> fmt::Result { + match self { + Tracepoint::Call(Some(name)) => { + write!(f, "error occured in this call of function `{}`", name) + } + Tracepoint::Call(None) => f.pad("error occured in this function call"), + Tracepoint::Import => f.pad("error occured while importing this module"), + } + } +} + /// Convert a [`StrResult`] to a [`TypResult`] by adding span information. pub trait At { /// Add the span information. diff --git a/src/main.rs b/src/main.rs index 38a37bdec..55f83cd72 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,7 +9,7 @@ use codespan_reporting::term::{self, termcolor, Config, Styles}; use same_file::is_same_file; use termcolor::{ColorChoice, StandardStream, WriteColor}; -use typst::diag::{Error, Tracepoint}; +use typst::diag::Error; use typst::source::SourceStore; fn main() { @@ -136,14 +136,7 @@ fn print_diagnostics( // Stacktrace-like helper diagnostics. for point in error.trace { - let message = match point.v { - Tracepoint::Call(Some(name)) => { - format!("error occured in this call of function `{}`", name) - } - Tracepoint::Call(None) => "error occured in this function call".into(), - Tracepoint::Import => "error occured while importing this module".into(), - }; - + let message = point.v.to_string(); let help = Diagnostic::help().with_message(message).with_labels(vec![ Label::primary(point.span.source, point.span.to_range()), ]);