From 870f2359dd4fb383fdf00f2cd649ea9847925a74 Mon Sep 17 00:00:00 2001 From: Ethiraric Date: Mon, 25 Dec 2023 23:48:32 +0100 Subject: [PATCH] More fixes towards invalid tabs. --- parser/src/scanner.rs | 6 ++++++ parser/tests/yaml-test-suite.rs | 3 --- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/parser/src/scanner.rs b/parser/src/scanner.rs index 4d31447..03e2a1a 100644 --- a/parser/src/scanner.rs +++ b/parser/src/scanner.rs @@ -1819,6 +1819,12 @@ impl> Scanner { while is_blank(self.look_ch()) || is_break(self.ch()) { if is_blank(self.ch()) { if leading_blanks && (self.mark.col as isize) < indent && self.ch() == '\t' { + // If our line contains only whitespace, this is not an error. + // Skip over it. + self.skip_ws_to_eol(SkipTabs::Yes); + if is_breakz(self.ch()) { + continue; + } return Err(ScanError::new( start_mark, "while scanning a plain scalar, found a tab", diff --git a/parser/tests/yaml-test-suite.rs b/parser/tests/yaml-test-suite.rs index d9d4f72..ba9abdb 100644 --- a/parser/tests/yaml-test-suite.rs +++ b/parser/tests/yaml-test-suite.rs @@ -299,10 +299,7 @@ fn expected_events(expected_tree: &str) -> Vec { static EXPECTED_FAILURES: &[&str] = &[ // These seem to be plain bugs // TAB as start of plain scalar instead of whitespace - "Y79Y-04", // unexpected pass - "Y79Y-05", // unexpected pass // TABs in whitespace-only lines - "DK95-04", // TABs after marker ? or : (space required?) "Y79Y-07", "Y79Y-09",