Skip to content

Commit

Permalink
fix(es/minifier): Don't convert a signed integer literal key to a num…
Browse files Browse the repository at this point in the history
…eric literal (#6529)

**Related issue:**

 - Closes #6528.
  • Loading branch information
hyp3rflow committed Nov 29, 2022
1 parent 6ca36c1 commit 81224b5
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
2 changes: 1 addition & 1 deletion crates/swc_ecma_minifier/src/compress/pure/properties.rs
Expand Up @@ -95,7 +95,7 @@ impl Pure<'_> {
return;
}

if !s.value.starts_with('0') || s.value.len() <= 1 {
if (!s.value.starts_with('0') && !s.value.starts_with('+')) || s.value.len() <= 1 {
if let Ok(v) = s.value.parse::<u32>() {
self.changed = true;
report_change!("misc: Optimizing numeric property name");
Expand Down
20 changes: 20 additions & 0 deletions crates/swc_ecma_minifier/tests/exec.rs
Expand Up @@ -10374,3 +10374,23 @@ fn issue_6463_1() {
"###,
);
}

#[test]
fn issue_6528() {
run_default_exec_test(
r###"
const foo = {
"+1": 1,
"2": 2,
"-3": 3,
}
console.log(foo[1]);
console.log(foo["+1"]);
console.log(foo["2"]);
console.log(foo[2]);
console.log(foo[-3]);
console.log(foo["-3"]);
"###,
)
}

1 comment on commit 81224b5

@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: 81224b5 Previous: cb15721 Ratio
es/full/bugs-1 365328 ns/iter (± 33945) 343776 ns/iter (± 23225) 1.06
es/full/minify/libraries/antd 2107189944 ns/iter (± 128191799) 2148324252 ns/iter (± 48139045) 0.98
es/full/minify/libraries/d3 470107055 ns/iter (± 35088197) 470452780 ns/iter (± 13182185) 1.00
es/full/minify/libraries/echarts 1774468471 ns/iter (± 79040254) 1780933104 ns/iter (± 52006441) 1.00
es/full/minify/libraries/jquery 124719297 ns/iter (± 5571075) 123795604 ns/iter (± 3649211) 1.01
es/full/minify/libraries/lodash 145008154 ns/iter (± 15196825) 141301219 ns/iter (± 6877106) 1.03
es/full/minify/libraries/moment 70419868 ns/iter (± 6250800) 67553329 ns/iter (± 3807315) 1.04
es/full/minify/libraries/react 26011022 ns/iter (± 8917317) 21983187 ns/iter (± 653902) 1.18
es/full/minify/libraries/terser 374857588 ns/iter (± 20216458) 372109389 ns/iter (± 11189303) 1.01
es/full/minify/libraries/three 674491467 ns/iter (± 60117562) 639157732 ns/iter (± 73834351) 1.06
es/full/minify/libraries/typescript 3929072169 ns/iter (± 103581545) 3822167868 ns/iter (± 108177072) 1.03
es/full/minify/libraries/victory 947208804 ns/iter (± 53613068) 955538507 ns/iter (± 32511372) 0.99
es/full/minify/libraries/vue 186362935 ns/iter (± 10012014) 181163799 ns/iter (± 6184765) 1.03
es/full/codegen/es3 33974 ns/iter (± 632) 35406 ns/iter (± 2952) 0.96
es/full/codegen/es5 33877 ns/iter (± 1046) 34262 ns/iter (± 2022) 0.99
es/full/codegen/es2015 33961 ns/iter (± 1526) 33933 ns/iter (± 1799) 1.00
es/full/codegen/es2016 33852 ns/iter (± 690) 33291 ns/iter (± 1449) 1.02
es/full/codegen/es2017 33934 ns/iter (± 2102) 34179 ns/iter (± 1731) 0.99
es/full/codegen/es2018 33910 ns/iter (± 828) 33371 ns/iter (± 1205) 1.02
es/full/codegen/es2019 33792 ns/iter (± 827) 33580 ns/iter (± 2392) 1.01
es/full/codegen/es2020 34074 ns/iter (± 2069) 33693 ns/iter (± 1338) 1.01
es/full/all/es3 216390998 ns/iter (± 25768620) 203575014 ns/iter (± 11057333) 1.06
es/full/all/es5 205628084 ns/iter (± 17480324) 183029752 ns/iter (± 8793684) 1.12
es/full/all/es2015 166888123 ns/iter (± 10837340) 148654412 ns/iter (± 8755662) 1.12
es/full/all/es2016 152641547 ns/iter (± 15029279) 146463715 ns/iter (± 11617861) 1.04
es/full/all/es2017 165712110 ns/iter (± 21696277) 147396017 ns/iter (± 6200401) 1.12
es/full/all/es2018 153998771 ns/iter (± 11429859) 145171157 ns/iter (± 15225598) 1.06
es/full/all/es2019 159882719 ns/iter (± 11490676) 146642222 ns/iter (± 7795028) 1.09
es/full/all/es2020 148746533 ns/iter (± 8774768) 144751549 ns/iter (± 9725405) 1.03
es/full/parser 728824 ns/iter (± 65214) 729148 ns/iter (± 41764) 1.00
es/full/base/fixer 26502 ns/iter (± 1685) 26898 ns/iter (± 918) 0.99
es/full/base/resolver_and_hygiene 94321 ns/iter (± 9653) 91839 ns/iter (± 3458) 1.03
serialization of ast node 219 ns/iter (± 14) 217 ns/iter (± 7) 1.01
serialization of serde 232 ns/iter (± 16) 234 ns/iter (± 10) 0.99

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

Please sign in to comment.