Skip to content

Commit

Permalink
feat(css/parser): Support new nesting spec (#6337)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-akait committed Nov 3, 2022
1 parent d90b0c6 commit e0967ef
Show file tree
Hide file tree
Showing 35 changed files with 13,109 additions and 2,141 deletions.
8 changes: 5 additions & 3 deletions crates/swc_css_ast/src/base.rs
Expand Up @@ -4,7 +4,7 @@ use swc_common::{ast_node, EqIgnoreSpan, Span};
use crate::{
AlphaValue, AtRule, CalcSum, CmykComponent, Color, ComplexSelector, DashedIdent, Delimiter,
Dimension, Hue, Ident, Integer, KeyframeBlock, LayerName, Number, Percentage, Ratio,
SelectorList, Str, TokenAndSpan, UnicodeRange, Url,
RelativeSelectorList, SelectorList, Str, TokenAndSpan, UnicodeRange, Url,
};

#[ast_node("Stylesheet")]
Expand Down Expand Up @@ -38,10 +38,12 @@ pub struct QualifiedRule {
#[ast_node]
#[derive(Eq, Hash, Is, EqIgnoreSpan)]
pub enum QualifiedRulePrelude {
#[tag("ListOfComponentValues")]
ListOfComponentValues(ListOfComponentValues),
#[tag("SelectorList")]
SelectorList(SelectorList),
#[tag("RelativeSelectorList")]
RelativeSelectorList(RelativeSelectorList),
#[tag("ListOfComponentValues")]
ListOfComponentValues(ListOfComponentValues),
}

#[ast_node]
Expand Down
4 changes: 4 additions & 0 deletions crates/swc_css_codegen/src/lib.rs
Expand Up @@ -93,6 +93,10 @@ where
emit!(self, n);
formatting_space!(self);
}
QualifiedRulePrelude::RelativeSelectorList(n) => {
emit!(self, n);
formatting_space!(self);
}
QualifiedRulePrelude::ListOfComponentValues(n) => {
emit!(
&mut *self.with_ctx(Ctx {
Expand Down
Expand Up @@ -24,8 +24,7 @@
.foo {
color: red;
@media (min-width: 480px) {
& h1,
& h2 {
& h1, & h2 {
color: blue;
}
}
Expand Down
Expand Up @@ -83,8 +83,8 @@ body:first-of-type .selector {}
$property: value;color: red;
}
.selector {
color: red;
&property: value;}
&property: value;color: red;
}
.selector {
*property: value;color: red;
}
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 comment on commit e0967ef

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: e0967ef Previous: 91e863c Ratio
es/full/bugs-1 351364 ns/iter (± 20908) 331718 ns/iter (± 25706) 1.06
es/full/minify/libraries/antd 1829321242 ns/iter (± 29125849) 1797724119 ns/iter (± 29929586) 1.02
es/full/minify/libraries/d3 405237948 ns/iter (± 18282831) 399097051 ns/iter (± 18322773) 1.02
es/full/minify/libraries/echarts 1550598867 ns/iter (± 41174619) 1546475600 ns/iter (± 140472343) 1.00
es/full/minify/libraries/jquery 100373220 ns/iter (± 1433529) 101777121 ns/iter (± 7311339) 0.99
es/full/minify/libraries/lodash 116993111 ns/iter (± 1015937) 125573295 ns/iter (± 6061870) 0.93
es/full/minify/libraries/moment 59687642 ns/iter (± 1319819) 60778087 ns/iter (± 7937619) 0.98
es/full/minify/libraries/react 21055209 ns/iter (± 857536) 22417839 ns/iter (± 1431694) 0.94
es/full/minify/libraries/terser 318863367 ns/iter (± 10884109) 320516010 ns/iter (± 10258579) 0.99
es/full/minify/libraries/three 564434193 ns/iter (± 16643987) 953904644 ns/iter (± 268307073) 0.59
es/full/minify/libraries/typescript 3361574147 ns/iter (± 47643530) 3537087713 ns/iter (± 103404925) 0.95
es/full/minify/libraries/victory 829108107 ns/iter (± 20403702) 865248442 ns/iter (± 32840423) 0.96
es/full/minify/libraries/vue 158391347 ns/iter (± 8731634) 156936916 ns/iter (± 5571299) 1.01
es/full/codegen/es3 33853 ns/iter (± 937) 36596 ns/iter (± 4930) 0.93
es/full/codegen/es5 33725 ns/iter (± 803) 37307 ns/iter (± 3577) 0.90
es/full/codegen/es2015 33762 ns/iter (± 1224) 35756 ns/iter (± 2719) 0.94
es/full/codegen/es2016 33794 ns/iter (± 712) 35527 ns/iter (± 3693) 0.95
es/full/codegen/es2017 33947 ns/iter (± 600) 35893 ns/iter (± 3095) 0.95
es/full/codegen/es2018 33781 ns/iter (± 2307) 36236 ns/iter (± 4123) 0.93
es/full/codegen/es2019 33664 ns/iter (± 2014) 36527 ns/iter (± 7382) 0.92
es/full/codegen/es2020 33659 ns/iter (± 2391) 36463 ns/iter (± 3583) 0.92
es/full/all/es3 193581954 ns/iter (± 10371129) 198386225 ns/iter (± 23539440) 0.98
es/full/all/es5 193902669 ns/iter (± 10936114) 190593913 ns/iter (± 14371935) 1.02
es/full/all/es2015 149939834 ns/iter (± 7585277) 150663018 ns/iter (± 10158280) 1.00
es/full/all/es2016 147618663 ns/iter (± 6901716) 147370427 ns/iter (± 13320523) 1.00
es/full/all/es2017 147070043 ns/iter (± 12120155) 148639673 ns/iter (± 12020115) 0.99
es/full/all/es2018 145198637 ns/iter (± 11847557) 144693007 ns/iter (± 10288206) 1.00
es/full/all/es2019 144542908 ns/iter (± 9985761) 145812194 ns/iter (± 11858368) 0.99
es/full/all/es2020 140674698 ns/iter (± 9246783) 142579621 ns/iter (± 14618600) 0.99
es/full/parser 708769 ns/iter (± 35559) 738612 ns/iter (± 87332) 0.96
es/full/base/fixer 26323 ns/iter (± 1399) 29274 ns/iter (± 3921) 0.90
es/full/base/resolver_and_hygiene 91694 ns/iter (± 1767) 96502 ns/iter (± 15391) 0.95
serialization of ast node 216 ns/iter (± 9) 235 ns/iter (± 32) 0.92
serialization of serde 229 ns/iter (± 1) 218 ns/iter (± 30) 1.05

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.