From cb28e81e69588b31360d710b1e76367ee67f3edf Mon Sep 17 00:00:00 2001 From: Hendrik Sollich Date: Tue, 21 Jun 2016 21:50:27 +0200 Subject: [PATCH] returning ScanError instead of running unreachable!() fixes #23 --- parser/src/scanner.rs | 2 +- parser/src/yaml.rs | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/parser/src/scanner.rs b/parser/src/scanner.rs index 3d6b3c1..058a050 100644 --- a/parser/src/scanner.rs +++ b/parser/src/scanner.rs @@ -949,7 +949,7 @@ impl> Scanner { self.roll_indent(mark.col, None, TokenType::BlockSequenceStart, mark); } else { // - * only allowed in block - unreachable!(); + return Err(ScanError::new(self.mark, r#""-" is only valid inside a block"#)) } try!(self.remove_simple_key()); self.allow_simple_key(); diff --git a/parser/src/yaml.rs b/parser/src/yaml.rs index 86730dc..15aea91 100644 --- a/parser/src/yaml.rs +++ b/parser/src/yaml.rs @@ -469,4 +469,11 @@ a1: &DEFAULT assert!(doc[25][0].as_bool().unwrap()); assert!(!doc[25][1].as_bool().unwrap()); } + + #[test] + fn test_bad_hypen() { + // See: https://github.com/chyh1990/yaml-rust/issues/23 + let s = "{-"; + assert!(YamlLoader::load_from_str(&s).is_err()); + } }