diff --git a/parser/src/scanner.rs b/parser/src/scanner.rs index ef4986a..3f1b199 100644 --- a/parser/src/scanner.rs +++ b/parser/src/scanner.rs @@ -1643,8 +1643,14 @@ impl> Scanner { return Ok(Token(start_mark, TokenType::Scalar(style, contents))); } - let start_mark = self.mark; + if self.mark.col < indent && (self.mark.col as isize) > self.indent { + return Err(ScanError::new( + self.mark, + "wrongly indented line in block scalar", + )); + } + let start_mark = self.mark; while self.mark.col == indent && !is_z(self.ch()) { if indent == 0 { self.lookahead(4); @@ -1817,7 +1823,10 @@ impl> Scanner { } if (self.mark.col as isize) < self.indent { - return Err(ScanError::new(start_mark, "invalid identation in quoted scalar")); + return Err(ScanError::new( + start_mark, + "invalid identation in quoted scalar", + )); } leading_blanks = false; diff --git a/parser/tests/yaml-test-suite.rs b/parser/tests/yaml-test-suite.rs index fee25c3..0d35790 100644 --- a/parser/tests/yaml-test-suite.rs +++ b/parser/tests/yaml-test-suite.rs @@ -315,7 +315,6 @@ fn expected_events(expected_tree: &str) -> Vec { #[rustfmt::skip] static EXPECTED_FAILURES: &[&str] = &[ // Misc - "S98Z", // Block scalar and indent problems? "U99R", // Comma is not allowed in tags "WZ62", // Empty content ];