From b2aa95b4c1171ee64267147e6bfab8a177c9b515 Mon Sep 17 00:00:00 2001 From: Ethiraric Date: Thu, 18 Jan 2024 19:16:17 +0100 Subject: [PATCH] Fix towards multiple documents in a single stream. --- parser/src/parser.rs | 8 +++++++- parser/tests/yaml-test-suite.rs | 1 - 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/parser/src/parser.rs b/parser/src/parser.rs index 41dc8b0..658ffd5 100644 --- a/parser/src/parser.rs +++ b/parser/src/parser.rs @@ -555,8 +555,10 @@ impl> Parser { } fn document_end(&mut self) -> ParseResult { + let mut explicit_end = false; let marker: Marker = match *self.peek_token()? { Token(mark, TokenType::DocumentEnd) => { + explicit_end = true; self.skip(); mark } @@ -564,7 +566,11 @@ impl> Parser { }; self.tags.clear(); - self.state = State::DocumentStart; + if explicit_end { + self.state = State::ImplicitDocumentStart; + } else { + self.state = State::DocumentStart; + } Ok((Event::DocumentEnd, marker)) } diff --git a/parser/tests/yaml-test-suite.rs b/parser/tests/yaml-test-suite.rs index 570f696..2fb6284 100644 --- a/parser/tests/yaml-test-suite.rs +++ b/parser/tests/yaml-test-suite.rs @@ -298,7 +298,6 @@ fn expected_events(expected_tree: &str) -> Vec { #[rustfmt::skip] static EXPECTED_FAILURES: &[&str] = &[ // Bare document after end marker - "7Z25", "M7A3", // Scalar marker on document start line "DK3J",