summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/diag.rs14
-rw-r--r--src/main.rs11
2 files changed, 16 insertions, 9 deletions
diff --git a/src/diag.rs b/src/diag.rs
index 6249a7cd..f0455310 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<T> {
/// Add the span information.
diff --git a/src/main.rs b/src/main.rs
index 38a37bde..55f83cd7 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()),
]);