Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(es/minifier): Fix code for dropping unreachable statements (#6429)
**Related issue:** - Closes #6405.
- Loading branch information
Showing
3 changed files
with
22 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
14 changes: 14 additions & 0 deletions
14
crates/swc_ecma_minifier/tests/pass-1/issue-6405/1/input.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
export const fn = () => { | ||
let val; | ||
|
||
if (!val) { | ||
return undefined; | ||
// works as expected if comment out below line | ||
throw new Error('first'); | ||
} | ||
|
||
if (val.a?.b !== true) { // Uncaught TypeError: Cannot read properties of undefined (reading 'a') | ||
throw new Error('second'); | ||
} | ||
return val; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
export const fn = ()=>{ | ||
let val; | ||
if (!!val) { | ||
if (val.a?.b !== !0) throw Error('second'); | ||
return val; | ||
} | ||
}; |
bb544ba
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Benchmark
es/full/bugs-1
367751
ns/iter (± 203364
)358728
ns/iter (± 20211
)1.03
es/full/minify/libraries/antd
12738437892
ns/iter (± 2721999605
)1970753614
ns/iter (± 83209994
)6.46
es/full/minify/libraries/d3
2243799199
ns/iter (± 495758453
)436403414
ns/iter (± 15106176
)5.14
es/full/minify/libraries/echarts
9137695707
ns/iter (± 627387443
)1649793064
ns/iter (± 61295639
)5.54
es/full/minify/libraries/jquery
688761246
ns/iter (± 144412401
)120893988
ns/iter (± 7793123
)5.70
es/full/minify/libraries/lodash
696059032
ns/iter (± 225730691
)139829224
ns/iter (± 7717097
)4.98
es/full/minify/libraries/moment
280589590
ns/iter (± 130493563
)67507421
ns/iter (± 2083928
)4.16
es/full/minify/libraries/react
54290508
ns/iter (± 10038943
)22202854
ns/iter (± 1072765
)2.45
es/full/minify/libraries/terser
2407548044
ns/iter (± 238808274
)359007216
ns/iter (± 8807000
)6.71
es/full/minify/libraries/three
4214102218
ns/iter (± 348135165
)616147879
ns/iter (± 12528583
)6.84
es/full/minify/libraries/typescript
23813881571
ns/iter (± 543816685
)3581732217
ns/iter (± 45334056
)6.65
es/full/minify/libraries/victory
5954681550
ns/iter (± 438502100
)881184048
ns/iter (± 19875891
)6.76
es/full/minify/libraries/vue
1017633454
ns/iter (± 213860154
)179471415
ns/iter (± 4730819
)5.67
es/full/codegen/es3
35635
ns/iter (± 4891
)34424
ns/iter (± 3250
)1.04
es/full/codegen/es5
35582
ns/iter (± 5846
)33917
ns/iter (± 3412
)1.05
es/full/codegen/es2015
36014
ns/iter (± 9531
)34112
ns/iter (± 1702
)1.06
es/full/codegen/es2016
35165
ns/iter (± 2406
)34087
ns/iter (± 5975
)1.03
es/full/codegen/es2017
35357
ns/iter (± 4231
)33948
ns/iter (± 4008
)1.04
es/full/codegen/es2018
35639
ns/iter (± 3679
)34556
ns/iter (± 3726
)1.03
es/full/codegen/es2019
35685
ns/iter (± 5038
)35521
ns/iter (± 4079
)1.00
es/full/codegen/es2020
35407
ns/iter (± 5120
)34688
ns/iter (± 3803
)1.02
es/full/all/es3
327846481
ns/iter (± 187578606
)212352806
ns/iter (± 12823051
)1.54
es/full/all/es5
225360514
ns/iter (± 183396960
)198628693
ns/iter (± 10760155
)1.13
es/full/all/es2015
192773879
ns/iter (± 162767019
)145676177
ns/iter (± 5143401
)1.32
es/full/all/es2016
239316360
ns/iter (± 122950047
)149710787
ns/iter (± 13111995
)1.60
es/full/all/es2017
276547865
ns/iter (± 160674054
)150991913
ns/iter (± 6325256
)1.83
es/full/all/es2018
248456241
ns/iter (± 168108418
)156666514
ns/iter (± 14027559
)1.59
es/full/all/es2019
176506771
ns/iter (± 114913441
)151802647
ns/iter (± 9561704
)1.16
es/full/all/es2020
187976892
ns/iter (± 65886548
)145116045
ns/iter (± 8847937
)1.30
es/full/parser
1034504
ns/iter (± 330922
)729070
ns/iter (± 64347
)1.42
es/full/base/fixer
27362
ns/iter (± 3639
)27598
ns/iter (± 2217
)0.99
es/full/base/resolver_and_hygiene
95006
ns/iter (± 10461
)91640
ns/iter (± 7732
)1.04
serialization of ast node
232
ns/iter (± 19
)223
ns/iter (± 24
)1.04
serialization of serde
230
ns/iter (± 17
)228
ns/iter (± 24
)1.01
This comment was automatically generated by workflow using github-action-benchmark.
bb544ba
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Possible performance regression was detected for benchmark.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold
2
.es/full/minify/libraries/antd
12738437892
ns/iter (± 2721999605
)1970753614
ns/iter (± 83209994
)6.46
es/full/minify/libraries/d3
2243799199
ns/iter (± 495758453
)436403414
ns/iter (± 15106176
)5.14
es/full/minify/libraries/echarts
9137695707
ns/iter (± 627387443
)1649793064
ns/iter (± 61295639
)5.54
es/full/minify/libraries/jquery
688761246
ns/iter (± 144412401
)120893988
ns/iter (± 7793123
)5.70
es/full/minify/libraries/lodash
696059032
ns/iter (± 225730691
)139829224
ns/iter (± 7717097
)4.98
es/full/minify/libraries/moment
280589590
ns/iter (± 130493563
)67507421
ns/iter (± 2083928
)4.16
es/full/minify/libraries/react
54290508
ns/iter (± 10038943
)22202854
ns/iter (± 1072765
)2.45
es/full/minify/libraries/terser
2407548044
ns/iter (± 238808274
)359007216
ns/iter (± 8807000
)6.71
es/full/minify/libraries/three
4214102218
ns/iter (± 348135165
)616147879
ns/iter (± 12528583
)6.84
es/full/minify/libraries/typescript
23813881571
ns/iter (± 543816685
)3581732217
ns/iter (± 45334056
)6.65
es/full/minify/libraries/victory
5954681550
ns/iter (± 438502100
)881184048
ns/iter (± 19875891
)6.76
es/full/minify/libraries/vue
1017633454
ns/iter (± 213860154
)179471415
ns/iter (± 4730819
)5.67
This comment was automatically generated by workflow using github-action-benchmark.
CC: @kdy1