diff --git a/src/output.rs b/src/output.rs index d6caa3e..7f651ec 100644 --- a/src/output.rs +++ b/src/output.rs @@ -80,23 +80,11 @@ impl Css { fn parse_stmt(&mut self, stmt: Stmt, extender: &mut Extender) -> SassResult> { Ok(match stmt { - Stmt::RuleSet { - selector, - super_selector, - body, - } => { + Stmt::RuleSet { selector, body } => { if body.is_empty() { return Ok(Vec::new()); } - let selector = if extender.is_empty() { - selector.resolve_parent_selectors(&super_selector, true)? - } else { - Selector(extender.add_selector( - selector.resolve_parent_selectors(&super_selector, true)?.0, - None, - )) - } - .remove_placeholders(); + let selector = selector.remove_placeholders(); if selector.is_empty() { return Ok(Vec::new()); } diff --git a/src/parse/mod.rs b/src/parse/mod.rs index 66e2d53..f60b850 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -40,7 +40,6 @@ pub(crate) enum Comment { #[derive(Debug, Clone)] pub(crate) enum Stmt { RuleSet { - super_selector: Selector, selector: Selector, body: Vec, }, @@ -272,11 +271,7 @@ impl<'a> Parser<'a> { self.scopes.pop(); self.super_selectors.pop(); self.at_root = self.super_selectors.is_empty(); - stmts.push(Stmt::RuleSet { - selector, - body, - super_selector, - }); + stmts.push(Stmt::RuleSet { selector, body }); } }, } @@ -378,7 +373,10 @@ impl<'a> Parser<'a> { // todo: we should be registering the selector here, but that would require being given // an `Rc>`, which we haven't implemented yet. - Ok(Selector(selector)) + Ok(Selector(selector).resolve_parent_selectors( + self.super_selectors.last(), + !self.at_root || self.at_root_has_selector, + )?) } /// Eat and return the contents of a comment. @@ -1029,7 +1027,6 @@ impl<'a> Parser<'a> { body = vec![Stmt::RuleSet { selector: self.super_selectors.last().clone(), body, - super_selector: Selector::new(self.span_before), }]; } @@ -1082,7 +1079,6 @@ impl<'a> Parser<'a> { body = vec![Stmt::RuleSet { selector: self.super_selectors.last().clone(), body, - super_selector: Selector::new(self.span_before), }]; } @@ -1144,11 +1140,11 @@ impl<'a> Parser<'a> { } Stmt::RuleSet { selector, body, .. } if !at_root_has_selector => { Some(Ok(Stmt::RuleSet { - super_selector: Selector::new(self.span_before), - selector: match selector.resolve_parent_selectors(&at_rule_selector, false) { - Ok(v) => v, - Err(e) => return Some(Err(e)), - }, + selector, + // selector: match selector.resolve_parent_selectors(&at_rule_selector, false) { + // Ok(v) => v, + // Err(e) => return Some(Err(e)), + // }, body, })) } @@ -1158,7 +1154,6 @@ impl<'a> Parser<'a> { let mut stmts = vec![Stmt::RuleSet { selector: at_rule_selector, body: styles, - super_selector: Selector::new(self.span_before), }]; stmts.extend(raw_stmts); Ok(stmts) @@ -1279,7 +1274,6 @@ impl<'a> Parser<'a> { body = vec![Stmt::RuleSet { selector: self.super_selectors.last().clone(), body, - super_selector: Selector::new(self.span_before), }]; }