Skip to content

Commit

Permalink
fix(css/minifier): Don't remove custom variables with different case (#…
Browse files Browse the repository at this point in the history
…6655)

Co-authored-by: Donny/강동윤 <kdy1997.dev@gmail.com>
  • Loading branch information
alexander-akait and kdy1 committed Dec 15, 2022
1 parent 139e356 commit dd7280d
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 7 deletions.
26 changes: 20 additions & 6 deletions crates/swc_css_minifier/src/compressor/rules.rs
Expand Up @@ -58,10 +58,25 @@ impl Compressor {
}
}

fn get_declaration_name(&self, declaration: &Declaration) -> JsWord {
match &declaration.name {
DeclarationName::Ident(Ident { value, .. }) => value.to_ascii_lowercase(),
DeclarationName::DashedIdent(DashedIdent { value, .. }) => value.to_ascii_lowercase(),
fn is_same_declaration_name(&self, left: &Declaration, right: &Declaration) -> bool {
match (&left.name, &right.name) {
(
DeclarationName::Ident(Ident {
value: left_value, ..
}),
DeclarationName::Ident(Ident {
value: right_value, ..
}),
) => left_value.eq_ignore_ascii_case(right_value),
(
DeclarationName::DashedIdent(DashedIdent {
value: left_value, ..
}),
DeclarationName::DashedIdent(DashedIdent {
value: right_value, ..
}),
) => left_value == right_value,
_ => false,
}
}

Expand Down Expand Up @@ -541,8 +556,7 @@ impl Compressor {
}
ComponentValue::Declaration(box declaration) if prev_rule.is_some() => {
if let Some(ComponentValue::Declaration(box prev_rule)) = &mut prev_rule {
if self.get_declaration_name(prev_rule)
== self.get_declaration_name(declaration)
if self.is_same_declaration_name(prev_rule, declaration)
&& prev_rule.value.eq_ignore_span(&declaration.value)
{
remove_rules_list.push(prev_index);
Expand Down
Expand Up @@ -106,3 +106,21 @@ h1{font-weight:bold}
font-weight:bold
}
}

:root {
--color: red;
--color: red;
--Color: red;
}

.class {
--color: red;
--color: red;
--Color: red;

.nested {
--color: red;
--color: red;
--Color: red;
}
}

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

1 comment on commit dd7280d

@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: dd7280d Previous: cb4173a Ratio
es/full/bugs-1 301746 ns/iter (± 15980) 307549 ns/iter (± 17103) 0.98
es/full/minify/libraries/antd 1674349273 ns/iter (± 18102999) 1747643644 ns/iter (± 19341265) 0.96
es/full/minify/libraries/d3 345309378 ns/iter (± 6213571) 313284816 ns/iter (± 4775108) 1.10
es/full/minify/libraries/echarts 1409533091 ns/iter (± 12437506) 1354874075 ns/iter (± 12750915) 1.04
es/full/minify/libraries/jquery 91865227 ns/iter (± 926830) 92036818 ns/iter (± 776717) 1.00
es/full/minify/libraries/lodash 110142203 ns/iter (± 1487266) 107803067 ns/iter (± 793937) 1.02
es/full/minify/libraries/moment 53672509 ns/iter (± 560904) 53624495 ns/iter (± 356373) 1.00
es/full/minify/libraries/react 19725196 ns/iter (± 75130) 19217933 ns/iter (± 334353) 1.03
es/full/minify/libraries/terser 262577198 ns/iter (± 2606289) 257417945 ns/iter (± 2765754) 1.02
es/full/minify/libraries/three 493155394 ns/iter (± 10546326) 491971444 ns/iter (± 5626645) 1.00
es/full/minify/libraries/typescript 3148086238 ns/iter (± 12942944) 3343596629 ns/iter (± 36374127) 0.94
es/full/minify/libraries/victory 701966659 ns/iter (± 9500858) 755861182 ns/iter (± 15794788) 0.93
es/full/minify/libraries/vue 135721085 ns/iter (± 1747340) 132540867 ns/iter (± 2237567) 1.02
es/full/codegen/es3 27774 ns/iter (± 70) 27342 ns/iter (± 60) 1.02
es/full/codegen/es5 27703 ns/iter (± 57) 27224 ns/iter (± 48) 1.02
es/full/codegen/es2015 27785 ns/iter (± 59) 27206 ns/iter (± 75) 1.02
es/full/codegen/es2016 27767 ns/iter (± 94) 27199 ns/iter (± 58) 1.02
es/full/codegen/es2017 27797 ns/iter (± 54) 27159 ns/iter (± 64) 1.02
es/full/codegen/es2018 27723 ns/iter (± 72) 27169 ns/iter (± 72) 1.02
es/full/codegen/es2019 27781 ns/iter (± 65) 27196 ns/iter (± 38) 1.02
es/full/codegen/es2020 27710 ns/iter (± 59) 27183 ns/iter (± 58) 1.02
es/full/all/es3 168302220 ns/iter (± 2435441) 165807884 ns/iter (± 2838023) 1.02
es/full/all/es5 160139068 ns/iter (± 1694618) 159599653 ns/iter (± 1206851) 1.00
es/full/all/es2015 120312948 ns/iter (± 1140688) 119457396 ns/iter (± 651824) 1.01
es/full/all/es2016 119549374 ns/iter (± 1531191) 118742186 ns/iter (± 754297) 1.01
es/full/all/es2017 118321623 ns/iter (± 1310418) 117044212 ns/iter (± 946954) 1.01
es/full/all/es2018 116547773 ns/iter (± 1407914) 115900335 ns/iter (± 625258) 1.01
es/full/all/es2019 115611503 ns/iter (± 1086907) 115242257 ns/iter (± 757364) 1.00
es/full/all/es2020 111850588 ns/iter (± 1328141) 110804480 ns/iter (± 773503) 1.01
es/full/parser 504227 ns/iter (± 8435) 517522 ns/iter (± 8407) 0.97
es/full/base/fixer 22051 ns/iter (± 19) 21674 ns/iter (± 24) 1.02
es/full/base/resolver_and_hygiene 77835 ns/iter (± 61) 77950 ns/iter (± 400) 1.00
serialization of ast node 138 ns/iter (± 0) 138 ns/iter (± 0) 1
serialization of serde 125 ns/iter (± 0) 124 ns/iter (± 0) 1.01
css/minify/libraries/bootstrap 27121734 ns/iter (± 86473) 27171931 ns/iter (± 159908) 1.00
css/visitor/compare/clone 2077861 ns/iter (± 22418) 2052928 ns/iter (± 16640) 1.01
css/visitor/compare/visit_mut_span 2272933 ns/iter (± 7584) 2254912 ns/iter (± 5824) 1.01
css/visitor/compare/visit_mut_span_panic 2303362 ns/iter (± 5355) 2302595 ns/iter (± 3875) 1.00
css/visitor/compare/fold_span 2987549 ns/iter (± 27100) 3014376 ns/iter (± 22136) 0.99
css/visitor/compare/fold_span_panic 3136911 ns/iter (± 31261) 3140004 ns/iter (± 21920) 1.00
css/lexer/bootstrap_5_1_3 5252488 ns/iter (± 520) 5195876 ns/iter (± 5685) 1.01
css/lexer/foundation_6_7_4 4454566 ns/iter (± 8436) 4411955 ns/iter (± 5414) 1.01
css/lexer/tailwind_3_1_1 836299 ns/iter (± 1297) 827014 ns/iter (± 921) 1.01
css/parser/bootstrap_5_1_3 20795903 ns/iter (± 62888) 20795778 ns/iter (± 92331) 1.00
css/parser/foundation_6_7_4 16691247 ns/iter (± 57250) 16614590 ns/iter (± 358718) 1.00
css/parser/tailwind_3_1_1 3197397 ns/iter (± 2873) 3191332 ns/iter (± 1817) 1.00
es/codegen/colors 333577 ns/iter (± 186915) 322832 ns/iter (± 181265) 1.03
es/codegen/large 1223599 ns/iter (± 642653) 1222619 ns/iter (± 648829) 1.00
es/codegen/with-parser/colors 46684 ns/iter (± 199) 46444 ns/iter (± 185) 1.01
es/codegen/with-parser/large 505130 ns/iter (± 1096) 506151 ns/iter (± 792) 1.00
es/minify/libraries/antd 1484735425 ns/iter (± 20806933) 1537765646 ns/iter (± 17495496) 0.97
es/minify/libraries/d3 319776037 ns/iter (± 12482925) 270564678 ns/iter (± 2546261) 1.18
es/minify/libraries/echarts 1243400053 ns/iter (± 8429440) 1168670568 ns/iter (± 8739553) 1.06
es/minify/libraries/jquery 81032541 ns/iter (± 1809025) 79049173 ns/iter (± 402012) 1.03
es/minify/libraries/lodash 98505772 ns/iter (± 916214) 97178072 ns/iter (± 654722) 1.01
es/minify/libraries/moment 46683470 ns/iter (± 492962) 46448220 ns/iter (± 557728) 1.01
es/minify/libraries/react 17987078 ns/iter (± 339421) 17132418 ns/iter (± 178791) 1.05
es/minify/libraries/terser 228321030 ns/iter (± 6268166) 221322840 ns/iter (± 1344115) 1.03
es/minify/libraries/three 418844145 ns/iter (± 9902259) 407318621 ns/iter (± 6715311) 1.03
es/minify/libraries/typescript 2713944380 ns/iter (± 8405994) 2872945859 ns/iter (± 16800180) 0.94
es/minify/libraries/victory 636404657 ns/iter (± 12645697) 661292915 ns/iter (± 13593674) 0.96
es/minify/libraries/vue 121510487 ns/iter (± 940268) 120009351 ns/iter (± 1165564) 1.01
es/visitor/compare/clone 2390911 ns/iter (± 26338) 2397189 ns/iter (± 32516) 1.00
es/visitor/compare/visit_mut_span 2891528 ns/iter (± 35932) 2820002 ns/iter (± 6403) 1.03
es/visitor/compare/visit_mut_span_panic 2867450 ns/iter (± 4297) 2895829 ns/iter (± 9637) 0.99
es/visitor/compare/fold_span 3990312 ns/iter (± 16350) 4073064 ns/iter (± 19496) 0.98
es/visitor/compare/fold_span_panic 4287639 ns/iter (± 69047) 4186693 ns/iter (± 40180) 1.02
es/lexer/colors 17357 ns/iter (± 126) 17301 ns/iter (± 11) 1.00
es/lexer/angular 8248807 ns/iter (± 5124) 8277733 ns/iter (± 3768) 1.00
es/lexer/backbone 1074789 ns/iter (± 1362) 1080932 ns/iter (± 653) 0.99
es/lexer/jquery 5966398 ns/iter (± 5094) 5989510 ns/iter (± 9387) 1.00
es/lexer/jquery mobile 9194606 ns/iter (± 14205) 9217453 ns/iter (± 8822) 1.00
es/lexer/mootools 4681885 ns/iter (± 9353) 4703594 ns/iter (± 6606) 1.00
es/lexer/underscore 903986 ns/iter (± 1348) 903078 ns/iter (± 1696) 1.00
es/lexer/three 28104989 ns/iter (± 12868) 28083250 ns/iter (± 23122) 1.00
es/lexer/yui 5056345 ns/iter (± 4593) 5078391 ns/iter (± 4588) 1.00
es/parser/colors 30981 ns/iter (± 159) 31127 ns/iter (± 172) 1.00
es/parser/angular 16286011 ns/iter (± 174309) 16169038 ns/iter (± 216179) 1.01
es/parser/backbone 2300821 ns/iter (± 10092) 2329835 ns/iter (± 15506) 0.99
es/parser/jquery 12529217 ns/iter (± 303944) 12518000 ns/iter (± 69109) 1.00
es/parser/jquery mobile 20453714 ns/iter (± 254557) 19906042 ns/iter (± 165118) 1.03
es/parser/mootools 9517058 ns/iter (± 41754) 9577984 ns/iter (± 22266) 0.99
es/parser/underscore 1950867 ns/iter (± 11690) 1972276 ns/iter (± 9221) 0.99
es/parser/three 59673652 ns/iter (± 361073) 60737398 ns/iter (± 552253) 0.98
es/parser/yui 9668724 ns/iter (± 51177) 9722516 ns/iter (± 58254) 0.99
es/preset-env/usage/builtin_type 140838 ns/iter (± 31104) 138109 ns/iter (± 29992) 1.02
es/preset-env/usage/property 21473 ns/iter (± 85) 21520 ns/iter (± 119) 1.00
es/resolver/typescript 111818192 ns/iter (± 1902982) 121828619 ns/iter (± 2534116) 0.92
es/fixer/typescript 88121870 ns/iter (± 337094) 100484955 ns/iter (± 7791125) 0.88
es/hygiene/typescript 174158307 ns/iter (± 2102339) 199837365 ns/iter (± 767829) 0.87
es/resolver_with_hygiene/typescript 308996916 ns/iter (± 1731308) 340751107 ns/iter (± 1599241) 0.91
es/visitor/base-perf/module_clone 76988 ns/iter (± 1312) 76327 ns/iter (± 1135) 1.01
es/visitor/base-perf/fold_empty 84961 ns/iter (± 1611) 86218 ns/iter (± 1582) 0.99
es/visitor/base-perf/fold_noop_impl_all 85436 ns/iter (± 1464) 85527 ns/iter (± 630) 1.00
es/visitor/base-perf/fold_noop_impl_vec 86034 ns/iter (± 1024) 86968 ns/iter (± 1212) 0.99
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 56 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 59 ns/iter (± 0) 60 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_boxed 105 ns/iter (± 0) 102 ns/iter (± 0) 1.03
es/visitor/base-perf/boxing_unboxed 102 ns/iter (± 0) 108 ns/iter (± 0) 0.94
es/visitor/base-perf/visit_contains_this 3536 ns/iter (± 94) 3560 ns/iter (± 95) 0.99
es/base/parallel/resolver/typescript 5570814808 ns/iter (± 468679324) 6119864528 ns/iter (± 453058491) 0.91
es/base/parallel/hygiene/typescript 1989326598 ns/iter (± 22945061) 2247701111 ns/iter (± 22222650) 0.89
misc/visitors/time-complexity/time 5 93 ns/iter (± 0) 93 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 324 ns/iter (± 0) 331 ns/iter (± 4) 0.98
misc/visitors/time-complexity/time 15 650 ns/iter (± 11) 638 ns/iter (± 1) 1.02
misc/visitors/time-complexity/time 20 1197 ns/iter (± 8) 1196 ns/iter (± 5) 1.00
misc/visitors/time-complexity/time 40 6154 ns/iter (± 5) 6149 ns/iter (± 10) 1.00
misc/visitors/time-complexity/time 60 15573 ns/iter (± 82) 15522 ns/iter (± 11) 1.00
es/full-target/es2016 187538 ns/iter (± 517) 189636 ns/iter (± 1289) 0.99
es/full-target/es2017 182452 ns/iter (± 543) 183036 ns/iter (± 612) 1.00
es/full-target/es2018 171125 ns/iter (± 517) 172317 ns/iter (± 656) 0.99
es2020_nullish_coalescing 66917 ns/iter (± 152) 67161 ns/iter (± 188) 1.00
es2020_optional_chaining 95362 ns/iter (± 8272) 95859 ns/iter (± 368) 0.99
es2022_class_properties 93428 ns/iter (± 176) 93487 ns/iter (± 166) 1.00
es2018_object_rest_spread 71551 ns/iter (± 168) 71647 ns/iter (± 120) 1.00
es2019_optional_catch_binding 61017 ns/iter (± 195) 60909 ns/iter (± 115) 1.00
es2017_async_to_generator 61646 ns/iter (± 202) 61540 ns/iter (± 125) 1.00
es2016_exponentiation 64858 ns/iter (± 118) 65125 ns/iter (± 90) 1.00
es2015_arrow 70443 ns/iter (± 185) 70293 ns/iter (± 281) 1.00
es2015_block_scoped_fn 65318 ns/iter (± 107) 65846 ns/iter (± 106) 0.99
es2015_block_scoping 155062 ns/iter (± 8729) 153039 ns/iter (± 9249) 1.01
es2015_classes 116551 ns/iter (± 423) 117250 ns/iter (± 455) 0.99
es2015_computed_props 60980 ns/iter (± 85) 60986 ns/iter (± 151) 1.00
es2015_destructuring 115237 ns/iter (± 202) 116234 ns/iter (± 795) 0.99
es2015_duplicate_keys 63535 ns/iter (± 104) 63729 ns/iter (± 80) 1.00
es2015_parameters 79095 ns/iter (± 91) 79609 ns/iter (± 130) 0.99
es2015_fn_name 66071 ns/iter (± 480) 66921 ns/iter (± 448) 0.99
es2015_for_of 63868 ns/iter (± 133) 64215 ns/iter (± 163) 0.99
es2015_instanceof 62958 ns/iter (± 88) 63376 ns/iter (± 135) 0.99
es2015_shorthand_property 60617 ns/iter (± 78) 61026 ns/iter (± 200) 0.99
es2015_spread 60781 ns/iter (± 113) 61113 ns/iter (± 125) 0.99
es2015_sticky_regex 62380 ns/iter (± 111) 62722 ns/iter (± 255) 0.99
es2015_typeof_symbol 61978 ns/iter (± 92) 62302 ns/iter (± 156) 0.99
es/transform/baseline/base 51784 ns/iter (± 94) 51825 ns/iter (± 126) 1.00
es/transform/baseline/common_reserved_word 62127 ns/iter (± 65) 62141 ns/iter (± 197) 1.00
es/transform/baseline/common_typescript 142239 ns/iter (± 985) 142944 ns/iter (± 165) 1.00
es/target/es3 168983 ns/iter (± 348) 169271 ns/iter (± 416) 1.00
es/target/es2015 626315 ns/iter (± 918) 632907 ns/iter (± 1455) 0.99
es/target/es2016 64796 ns/iter (± 87) 65235 ns/iter (± 100) 0.99
es/target/es2017 61420 ns/iter (± 111) 61693 ns/iter (± 139) 1.00
es/target/es2018 81360 ns/iter (± 42) 81578 ns/iter (± 164) 1.00
es/target/es2020 131768 ns/iter (± 179) 132271 ns/iter (± 435) 1.00
babelify-only 677327 ns/iter (± 1354) 671107 ns/iter (± 1558) 1.01
parse_and_babelify_angular 42652523 ns/iter (± 1123666) 45717147 ns/iter (± 894610) 0.93
parse_and_babelify_backbone 5326692 ns/iter (± 82655) 5450147 ns/iter (± 52413) 0.98
parse_and_babelify_jquery 30809480 ns/iter (± 482893) 33290365 ns/iter (± 284656) 0.93
parse_and_babelify_jquery_mobile 53681856 ns/iter (± 565494) 57085374 ns/iter (± 525509) 0.94
parse_and_babelify_mootools 31894813 ns/iter (± 448976) 34689749 ns/iter (± 223867) 0.92
parse_and_babelify_underscore 4295623 ns/iter (± 17386) 4368149 ns/iter (± 22565) 0.98
parse_and_babelify_yui 31982738 ns/iter (± 475074) 34397162 ns/iter (± 983371) 0.93
html/minify/document/css_spec 41854210 ns/iter (± 244726) 42316429 ns/iter (± 153518) 0.99
html/minify/document/github 17397933 ns/iter (± 59405) 17503163 ns/iter (± 56464) 0.99
html/minify/document/stackoverflow 15504560 ns/iter (± 18626) 15608511 ns/iter (± 50109) 0.99
html/minify/document_fragment/css_spec 39699450 ns/iter (± 191964) 40783326 ns/iter (± 133475) 0.97
html/minify/document_fragment/github 16702598 ns/iter (± 31125) 16794670 ns/iter (± 35438) 0.99
html/minify/document_fragment/stackoverflow 15035567 ns/iter (± 30146) 15219623 ns/iter (± 54089) 0.99
html/document/visitor/compare/clone 335839 ns/iter (± 2209) 342927 ns/iter (± 2157) 0.98
html/document/visitor/compare/visit_mut_span 364090 ns/iter (± 1844) 363714 ns/iter (± 1807) 1.00
html/document/visitor/compare/visit_mut_span_panic 374543 ns/iter (± 1797) 374205 ns/iter (± 2336) 1.00
html/document/visitor/compare/fold_span 401047 ns/iter (± 2185) 403141 ns/iter (± 2523) 0.99
html/document/visitor/compare/fold_span_panic 457221 ns/iter (± 2288) 458588 ns/iter (± 2549) 1.00
html/document_fragment/visitor/compare/clone 332182 ns/iter (± 1910) 334030 ns/iter (± 1848) 0.99
html/document_fragment/visitor/compare/visit_mut_span 361082 ns/iter (± 2405) 363046 ns/iter (± 3489) 0.99
html/document_fragment/visitor/compare/visit_mut_span_panic 368514 ns/iter (± 1876) 372158 ns/iter (± 1811) 0.99
html/document_fragment/visitor/compare/fold_span 398510 ns/iter (± 1963) 402757 ns/iter (± 2100) 0.99
html/document_fragment/visitor/compare/fold_span_panic 455011 ns/iter (± 2145) 462885 ns/iter (± 2117) 0.98
html/lexer/css_2021_spec 15506154 ns/iter (± 18847) 15551820 ns/iter (± 67920) 1.00
html/lexer/github_com_17_05_2022 6021602 ns/iter (± 5859) 6014614 ns/iter (± 5386) 1.00
html/lexer/stackoverflow_com_17_05_2022 5624320 ns/iter (± 4013) 5627358 ns/iter (± 7907) 1.00
html/parser/parser_document/css_2021_spec 25496876 ns/iter (± 242788) 25829958 ns/iter (± 137744) 0.99
html/parser/parser_document/github_com_17_05_2022 8738933 ns/iter (± 10772) 8793884 ns/iter (± 23491) 0.99
html/parser/parser_document/stackoverflow_com_17_05_2022 7697910 ns/iter (± 7892) 7713298 ns/iter (± 15061) 1.00
html/parser/parser_document_fragment/css_2021_spec 25969464 ns/iter (± 264215) 25804260 ns/iter (± 473366) 1.01
html/parser/parser_document_fragment/github_com_17_05_2022 8751978 ns/iter (± 6495) 8793308 ns/iter (± 19000) 1.00
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7724252 ns/iter (± 6674) 7737262 ns/iter (± 60702) 1.00

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

Please sign in to comment.