Show actual Tera source error

This commit is contained in:
Vincent Prouillet 2019-01-30 20:42:53 +01:00
parent 260c413de4
commit 776bf41123
2 changed files with 13 additions and 2 deletions

View File

@ -29,7 +29,17 @@ unsafe impl Send for Error {}
impl StdError for Error {
fn source(&self) -> Option<&(dyn StdError + 'static)> {
self.source.as_ref().map(|c| &**c)
let mut source = self.source.as_ref().map(|c| &**c);
if source.is_none() {
match self.kind {
ErrorKind::Tera(ref err) => {
source = err.source()
},
_ => ()
};
}
source
}
}

View File

@ -8,6 +8,7 @@ use chrono::Duration;
use termcolor::{Color, ColorChoice, ColorSpec, StandardStream, WriteColor};
use site::Site;
use errors::Error;
lazy_static! {
/// Termcolor color choice.
@ -92,7 +93,7 @@ pub fn report_elapsed_time(instant: Instant) {
}
/// Display an error message and the actual error(s)
pub fn unravel_errors(message: &str, error: &StdError) {
pub fn unravel_errors(message: &str, error: &Error) {
if !message.is_empty() {
self::error(message);
}