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()); + } }