From 85a2c8eaeb8fce39d0567c5c7bad44b955989146 Mon Sep 17 00:00:00 2001 From: ConnorSkees <39542938+ConnorSkees@users.noreply.github.com> Date: Mon, 17 Feb 2020 09:40:30 -0500 Subject: [PATCH] Better error for missing identifier after `:` in selector --- src/selector.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/selector.rs b/src/selector.rs index 3fae6f6..68de4b8 100644 --- a/src/selector.rs +++ b/src/selector.rs @@ -212,7 +212,10 @@ impl<'a> SelectorParser<'a> { Ok(Selector(self.selectors)) } - fn consume_pseudo_selector(&mut self, tokens: &'_ mut Peekable>) { + fn consume_pseudo_selector( + &mut self, + tokens: &'_ mut Peekable>, + ) -> SassResult<()> { if let Some(tok) = tokens.next() { match tok.kind { TokenKind::Ident(s) => { @@ -250,9 +253,10 @@ impl<'a> SelectorParser<'a> { self.selectors.push(SelectorKind::PseudoElement(s)) } } - _ => todo!("expected ident or `:` after `:` in selector"), + _ => return Err("Expected identifier.".into()), } } + Ok(()) } fn tokens_to_selectors(&mut self, tokens: &'_ mut Peekable>) -> SassResult<()> { @@ -283,7 +287,7 @@ impl<'a> SelectorParser<'a> { } TokenKind::Symbol(Symbol::Period) => self.selectors.push(SelectorKind::Class), TokenKind::Symbol(Symbol::Hash) => self.selectors.push(SelectorKind::Id), - TokenKind::Symbol(Symbol::Colon) => self.consume_pseudo_selector(tokens), + TokenKind::Symbol(Symbol::Colon) => self.consume_pseudo_selector(tokens)?, TokenKind::Symbol(Symbol::Comma) => self.selectors.push(SelectorKind::Multiple), TokenKind::Symbol(Symbol::Gt) => self.selectors.push(SelectorKind::ImmediateChild), TokenKind::Symbol(Symbol::Plus) => self.selectors.push(SelectorKind::Following),