Skip to content

Commit 81224b5

Browse files
authoredNov 29, 2022
fix(es/minifier): Don't convert a signed integer literal key to a numeric literal (#6529)
**Related issue:** - Closes #6528.
1 parent 6ca36c1 commit 81224b5

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed
 

‎crates/swc_ecma_minifier/src/compress/pure/properties.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ impl Pure<'_> {
9595
return;
9696
}
9797

98-
if !s.value.starts_with('0') || s.value.len() <= 1 {
98+
if (!s.value.starts_with('0') && !s.value.starts_with('+')) || s.value.len() <= 1 {
9999
if let Ok(v) = s.value.parse::<u32>() {
100100
self.changed = true;
101101
report_change!("misc: Optimizing numeric property name");

‎crates/swc_ecma_minifier/tests/exec.rs

+20
Original file line numberDiff line numberDiff line change
@@ -10374,3 +10374,23 @@ fn issue_6463_1() {
1037410374
"###,
1037510375
);
1037610376
}
10377+
10378+
#[test]
10379+
fn issue_6528() {
10380+
run_default_exec_test(
10381+
r###"
10382+
const foo = {
10383+
"+1": 1,
10384+
"2": 2,
10385+
"-3": 3,
10386+
}
10387+
10388+
console.log(foo[1]);
10389+
console.log(foo["+1"]);
10390+
console.log(foo["2"]);
10391+
console.log(foo[2]);
10392+
console.log(foo[-3]);
10393+
console.log(foo["-3"]);
10394+
"###,
10395+
)
10396+
}

1 commit comments

Comments
 (1)

github-actions[bot] commented on Nov 29, 2022

@github-actions[bot]

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.