diff --git a/crates/swc_css_parser/src/parser/at_rules/mod.rs b/crates/swc_css_parser/src/parser/at_rules/mod.rs index 3ca096cdd77a..c86164dba8d1 100644 --- a/crates/swc_css_parser/src/parser/at_rules/mod.rs +++ b/crates/swc_css_parser/src/parser/at_rules/mod.rs @@ -976,8 +976,6 @@ where I: ParserInput, { fn parse(&mut self) -> PResult { - self.input.skip_ws(); - let start_pos = self.input.cur_span().lo; let mut last_pos; let mut conditions = vec![]; @@ -1132,8 +1130,12 @@ where let mut parse_condition = || { expect!(self, "("); + self.input.skip_ws(); + let condition = self.parse()?; + self.input.skip_ws(); + expect!(self, ")"); Ok(SupportsInParens::SupportsCondition(condition)) @@ -1297,8 +1299,6 @@ where I: ParserInput, { fn parse(&mut self) -> PResult { - self.input.skip_ws(); - let query = self.parse()?; let mut queries = vec![query]; @@ -1438,8 +1438,6 @@ where I: ParserInput, { fn parse(&mut self) -> PResult { - self.input.skip_ws(); - let start_pos = self.input.cur_span().lo; let mut last_pos; let mut conditions = vec![]; @@ -1494,8 +1492,6 @@ where I: ParserInput, { fn parse(&mut self) -> PResult { - self.input.skip_ws(); - let start_pos = self.input.cur_span().lo; let mut last_pos; let mut conditions = vec![]; @@ -1640,8 +1636,12 @@ where let mut parse_media_condition = || { expect!(self, "("); + self.input.skip_ws(); + let media_condition = self.parse()?; + self.input.skip_ws(); + expect!(self, ")"); Ok(MediaInParens::MediaCondition(media_condition)) @@ -1923,8 +1923,6 @@ where I: ParserInput, { fn parse(&mut self) -> PResult { - self.input.skip_ws(); - let span = self.input.cur_span(); let page_type = if is!(self, Ident) { diff --git a/crates/swc_css_parser/src/parser/selectors/mod.rs b/crates/swc_css_parser/src/parser/selectors/mod.rs index 094a87779f7a..5450f9ee76b1 100644 --- a/crates/swc_css_parser/src/parser/selectors/mod.rs +++ b/crates/swc_css_parser/src/parser/selectors/mod.rs @@ -12,8 +12,6 @@ where I: ParserInput, { fn parse(&mut self) -> PResult { - self.input.skip_ws(); - let child: ComplexSelector = self.parse()?; let mut children = vec![child]; @@ -126,8 +124,6 @@ where I: ParserInput, { fn parse(&mut self) -> PResult { - self.input.skip_ws(); - let child: CompoundSelector = self.parse()?; let mut children = vec![child]; @@ -170,8 +166,6 @@ where I: ParserInput, { fn parse(&mut self) -> PResult { - self.input.skip_ws(); - let child: RelativeSelector = self.parse()?; let mut children = vec![child]; @@ -293,7 +287,7 @@ where self.input.skip_ws(); // TODO should be refactor after grammar parsing - if is_one_of!(self, EOF, ",", "{", ")") { + if is_one_of!(self, EOF, ",", ")") { break; } @@ -859,14 +853,22 @@ where match &*names.0.to_ascii_lowercase() { "local" | "global" if self.config.css_modules => { + self.input.skip_ws(); + let selector_list = self.parse()?; + self.input.skip_ws(); + children .push(PseudoClassSelectorChildren::ComplexSelector(selector_list)); } "-moz-any" | "-webkit-any" => { + self.input.skip_ws(); + let compound_selector_list = self.parse()?; + self.input.skip_ws(); + children.push(PseudoClassSelectorChildren::CompoundSelectorList( compound_selector_list, )); @@ -876,9 +878,9 @@ where let ident = self.parse()?; - children.push(PseudoClassSelectorChildren::Ident(ident)); - self.input.skip_ws(); + + children.push(PseudoClassSelectorChildren::Ident(ident)); } "lang" => { self.input.skip_ws(); @@ -928,15 +930,23 @@ where } } "current" | "past" | "future" => { + self.input.skip_ws(); + let compound_selector_list = self.parse()?; + self.input.skip_ws(); + children.push(PseudoClassSelectorChildren::CompoundSelectorList( compound_selector_list, )); } "not" | "matches" => { + self.input.skip_ws(); + let selector_list = self.parse()?; + self.input.skip_ws(); + children.push(PseudoClassSelectorChildren::SelectorList(selector_list)); } "is" | "where" => { @@ -974,10 +984,10 @@ where let selector_list = self.parse()?; + self.input.skip_ws(); + children .push(PseudoClassSelectorChildren::SelectorList(selector_list)); - - self.input.skip_ws(); } } "host" | "host-context" => { @@ -985,11 +995,11 @@ where let compound_selector = self.parse()?; + self.input.skip_ws(); + children.push(PseudoClassSelectorChildren::CompoundSelector( compound_selector, )); - - self.input.skip_ws(); } _ => { return Err(Error::new(span, ErrorKind::Ignore)); diff --git a/crates/swc_css_parser/src/parser/values_and_units/mod.rs b/crates/swc_css_parser/src/parser/values_and_units/mod.rs index 25189aa70fbe..0c2eaf715191 100644 --- a/crates/swc_css_parser/src/parser/values_and_units/mod.rs +++ b/crates/swc_css_parser/src/parser/values_and_units/mod.rs @@ -2912,7 +2912,7 @@ where } let name = Ident { - span: swc_common::Span::new(span.lo, span.hi - BytePos(1), Default::default()), + span: Span::new(span.lo, span.hi - BytePos(1), Default::default()), value: function_name, raw: Some(raw_function_name), };