From 0a1aebaf3c4473b2ee12dd7a1bef4f547677bf9d 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. --- saphyr/src/parser.rs | 8 +++++++- saphyr/tests/yaml-test-suite.rs | 1 - 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/saphyr/src/parser.rs b/saphyr/src/parser.rs index 41dc8b0..658ffd5 100644 --- a/saphyr/src/parser.rs +++ b/saphyr/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/saphyr/tests/yaml-test-suite.rs b/saphyr/tests/yaml-test-suite.rs index 570f696..2fb6284 100644 --- a/saphyr/tests/yaml-test-suite.rs +++ b/saphyr/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",