Fix tests related to anchor/alias indentation.

I have no idea what I'm doing.
This commit is contained in:
Ethiraric 2024-01-22 21:33:18 +01:00
parent ca7579a3c9
commit 71c54f318f
2 changed files with 13 additions and 4 deletions

View file

@ -1463,6 +1463,13 @@ impl<T: Iterator<Item = char>> Scanner<T> {
)); ));
} }
// ???, fixes test G9HC.
if let Some(Token(mark, TokenType::Anchor(..) | TokenType::Tag(..))) = self.tokens.back() {
if self.mark.col == 0 && mark.col == 0 && self.indent > -1 {
return Err(ScanError::new(*mark, "invalid indentation for anchor"));
}
}
// Skip over the `-`. // Skip over the `-`.
let mark = self.mark; let mark = self.mark;
self.skip(); self.skip();
@ -2047,6 +2054,10 @@ impl<T: Iterator<Item = char>> Scanner<T> {
let indent = self.indent + 1; let indent = self.indent + 1;
let start_mark = self.mark; let start_mark = self.mark;
if self.flow_level > 0 && (start_mark.col as isize) < indent {
return Err(ScanError::new(start_mark, "foo"));
}
let mut string = String::new(); let mut string = String::new();
let mut leading_break = String::new(); let mut leading_break = String::new();
let mut trailing_breaks = String::new(); let mut trailing_breaks = String::new();
@ -2371,10 +2382,10 @@ impl<T: Iterator<Item = char>> Scanner<T> {
} }
} }
/// Save the last token in [`Self::tokens`] as a simple key. /// Mark the next token to be inserted as a potential simple key.
fn save_simple_key(&mut self) { fn save_simple_key(&mut self) {
if self.simple_key_allowed { if self.simple_key_allowed {
let required = self.flow_level > 0 let required = self.flow_level == 0
&& self.indent == (self.mark.col as isize) && self.indent == (self.mark.col as isize)
&& self.indents.last().unwrap().needs_block_end; && self.indents.last().unwrap().needs_block_end;
let mut sk = SimpleKey::new(self.mark); let mut sk = SimpleKey::new(self.mark);

View file

@ -315,8 +315,6 @@ fn expected_events(expected_tree: &str) -> Vec<String> {
#[rustfmt::skip] #[rustfmt::skip]
static EXPECTED_FAILURES: &[&str] = &[ static EXPECTED_FAILURES: &[&str] = &[
// Misc // Misc
"G9HC", // Anchor indent problem(?)
"H7J7", // Anchor indent / linebreak problem?
"3UYS", // Escaped / "3UYS", // Escaped /
"HRE5", // Escaped ' in double-quoted (should not work) "HRE5", // Escaped ' in double-quoted (should not work)
"QB6E", // Indent for multiline double-quoted scalar "QB6E", // Indent for multiline double-quoted scalar