about summary refs log tree commit diff
path: root/tvix/eval/src/errors.rs
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2022-10-03T10·21+0300
committertazjin <tazjin@tvl.su>2022-10-04T21·04+0000
commitd6643f66b1cb8db5fc802ad53ef0d2633a51e815 (patch)
tree5e2fdcd5c5a9bed3969f6d4081e71bda389a175e /tvix/eval/src/errors.rs
parent546f445f0788e35b8299f53e2c79d29180c73142 (diff)
feat(tvix/eval): use fancy error formatting in REPL r/5032
Change-Id: I8d5652d797b012bc3d5248ca2b2d0c87572dbf2e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6851
Tested-by: BuildkiteCI
Reviewed-by: wpcarro <wpcarro@gmail.com>
Diffstat (limited to 'tvix/eval/src/errors.rs')
-rw-r--r--tvix/eval/src/errors.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/tvix/eval/src/errors.rs b/tvix/eval/src/errors.rs
index b3b45c6cee3d..8ecad80535e0 100644
--- a/tvix/eval/src/errors.rs
+++ b/tvix/eval/src/errors.rs
@@ -3,7 +3,7 @@ use std::path::PathBuf;
 use std::{fmt::Display, num::ParseIntError};
 
 use codemap::{CodeMap, Span};
-use codemap_diagnostic::{Diagnostic, Emitter, Level, SpanLabel, SpanStyle};
+use codemap_diagnostic::{ColorConfig, Diagnostic, Emitter, Level, SpanLabel, SpanStyle};
 use smol_str::SmolStr;
 
 use crate::Value;
@@ -141,6 +141,12 @@ impl Error {
         String::from_utf8_lossy(&out).to_string()
     }
 
+    /// Render a fancy, human-readable output of this error and print
+    /// it to stderr.
+    pub fn fancy_format_stderr(&self, codemap: &CodeMap) {
+        Emitter::stderr(ColorConfig::Auto, Some(codemap)).emit(&[self.diagnostic(codemap)]);
+    }
+
     /// Create the optional span label displayed as an annotation on
     /// the underlined span of the error.
     fn span_label(&self) -> Option<String> {