From ab579f1716d5a7de07be99417b38bacfca587a3d Mon Sep 17 00:00:00 2001 From: Yuheng Chen Date: Thu, 2 Jul 2015 23:46:04 +0800 Subject: [PATCH] Display error line and col number for ScanError --- parser/src/lib.rs | 7 +++++++ parser/src/scanner.rs | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/parser/src/lib.rs b/parser/src/lib.rs index d18f85e..1cba925 100644 --- a/parser/src/lib.rs +++ b/parser/src/lib.rs @@ -50,6 +50,7 @@ pub use emitter::{YamlEmitter, EmitError}; #[cfg(test)] mod tests { use super::*; + #[test] fn test_api() { let s = @@ -91,6 +92,11 @@ mod tests { assert!(writer.len() > 0); } + fn try_fail(s: &str) -> Result, ScanError> { + let t = try!(YamlLoader::load_from_str(s)); + Ok(t) + } + #[test] fn test_fail() { let s = @@ -101,6 +107,7 @@ key: [1, 2]] key1:a2 "; assert!(YamlLoader::load_from_str(s).is_err()); + assert!(try_fail(s).is_err()); } } diff --git a/parser/src/scanner.rs b/parser/src/scanner.rs index 8811acf..03f717d 100644 --- a/parser/src/scanner.rs +++ b/parser/src/scanner.rs @@ -61,8 +61,10 @@ impl Error for ScanError { } impl fmt::Display for ScanError { + // col starts from 0 fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - self.info.fmt(formatter) + write!(formatter, "{} at line {} column {}", self.info, + self.mark.line, self.mark.col + 1) } }