From 84a7d2a0ab7e6c199b7e04ed54472da029c8d644 Mon Sep 17 00:00:00 2001 From: Ethiraric Date: Mon, 22 Jan 2024 23:09:20 +0100 Subject: [PATCH] Fix indent in block scalars. --- parser/src/scanner.rs | 13 +++++++++++-- parser/tests/yaml-test-suite.rs | 1 - 2 files changed, 11 insertions(+), 3 deletions(-) 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 ];