diff --git a/crates/specctra-core/src/common.rs b/crates/specctra-core/src/common.rs index cdd49b2..3accd60 100644 --- a/crates/specctra-core/src/common.rs +++ b/crates/specctra-core/src/common.rs @@ -17,15 +17,6 @@ impl ListToken { } } - pub fn expect_start(self, valid_names: &[&'static str]) -> Result<(), ParseError> { - assert!(!valid_names.is_empty()); - if self.is_start_of(valid_names) { - Ok(()) - } else { - Err(ParseError::ExpectedStartOfList(valid_names[0])) - } - } - pub fn expect_any_start(self) -> Result { if let Self::Start { name } = self { Ok(name.to_ascii_lowercase()) diff --git a/crates/specctra-core/src/read.rs b/crates/specctra-core/src/read.rs index b77680d..b442f60 100644 --- a/crates/specctra-core/src/read.rs +++ b/crates/specctra-core/src/read.rs @@ -13,12 +13,6 @@ impl InputToken { Self { token, context } } - pub fn expect_start(self, valid_names: &[&'static str]) -> Result<(), ParseErrorContext> { - self.token - .expect_start(valid_names) - .map_err(|err| err.add_context(self.context)) - } - pub fn expect_any_start(self) -> Result { self.token .expect_any_start() @@ -295,10 +289,9 @@ impl ListTokenizer { &mut self, valid_names: &[&'static str], ) -> Result { - self.consume_token()?.expect_start(valid_names)?; - let value = self.read_value::()?; - self.consume_token()?.expect_end()?; - Ok(value) + assert!(!valid_names.is_empty()); + self.read_optional(valid_names)? + .ok_or_else(|| self.add_context(ParseError::ExpectedStartOfList(valid_names[0]))) } pub fn read_optional>(