From 2fb19e161e7ee10126287116074908f349dce291 Mon Sep 17 00:00:00 2001 From: Connor Skees Date: Wed, 29 Jul 2020 08:58:21 -0400 Subject: [PATCH] resolve newly failing tests from merge --- src/parse/value/parse.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/parse/value/parse.rs b/src/parse/value/parse.rs index 3ceb474..fcbbdfd 100644 --- a/src/parse/value/parse.rs +++ b/src/parse/value/parse.rs @@ -297,7 +297,10 @@ impl<'a> Parser<'a> { .span(module_span)) } - fn parse_ident_value(&mut self) -> SassResult> { + fn parse_ident_value( + &mut self, + predicate: &dyn Fn(&mut PeekMoreIterator>) -> bool, + ) -> SassResult> { let Spanned { node: mut s, span } = self.parse_identifier()?; self.span_before = span; @@ -384,8 +387,10 @@ impl<'a> Parser<'a> { .span(span)); } Some(Token { kind: '.', .. }) => { - self.toks.next(); - return self.parse_module_item(&s, span); + if !predicate(self.toks) { + self.toks.next(); + return self.parse_module_item(&s, span); + } } _ => {} } @@ -524,7 +529,7 @@ impl<'a> Parser<'a> { || (!kind.is_ascii() && !kind.is_control()) || (kind == '-' && self.next_is_hypen()) => { - return Some(self.parse_ident_value()); + return Some(self.parse_ident_value(predicate)); } '0'..='9' | '.' => { let Spanned { @@ -652,7 +657,7 @@ impl<'a> Parser<'a> { if let Some(Token { kind: '{', pos }) = self.toks.peek_forward(1) { self.span_before = *pos; self.toks.reset_cursor(); - return Some(self.parse_ident_value()); + return Some(self.parse_ident_value(predicate)); } self.toks.reset_cursor(); self.toks.next();