File tree 5 files changed +82
-0
lines changed
tests/fixture/issues/9619
5 files changed +82
-0
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ swc_core : patch
3
+ swc_ecma_minifier : patch
4
+ ---
5
+
6
+ fix: compress consecutive return statements properly
Original file line number Diff line number Diff line change @@ -219,6 +219,16 @@ impl Optimizer<'_> {
219
219
}
220
220
} ,
221
221
222
+ (
223
+ Some ( Stmt :: Block ( BlockStmt { stmts : s1, .. } ) ) ,
224
+ Some ( Stmt :: Block ( BlockStmt { stmts : s2, .. } ) ) ,
225
+ ) if s1. iter ( ) . any ( |s| matches ! ( s, Stmt :: Return ( ..) ) )
226
+ && s2. iter ( ) . any ( |s| matches ! ( s, Stmt :: Return ( ..) ) ) =>
227
+ {
228
+ log_abort ! ( "if_return: [x] Aborting because early return is observed" ) ;
229
+ return ;
230
+ }
231
+
222
232
_ => { }
223
233
}
224
234
}
Original file line number Diff line number Diff line change
1
+ {
2
+ "arguments" : false ,
3
+ "arrows" : false ,
4
+ "booleans" : false ,
5
+ "booleans_as_integers" : false ,
6
+ "collapse_vars" : false ,
7
+ "comparisons" : false ,
8
+ "computed_props" : false ,
9
+ "conditionals" : false ,
10
+ "dead_code" : true ,
11
+ "directives" : false ,
12
+ "drop_console" : false ,
13
+ "drop_debugger" : false ,
14
+ "evaluate" : false ,
15
+ "expression" : false ,
16
+ "hoist_funs" : false ,
17
+ "hoist_props" : false ,
18
+ "hoist_vars" : false ,
19
+ "if_return" : true ,
20
+ "join_vars" : false ,
21
+ "keep_classnames" : false ,
22
+ "keep_fargs" : false ,
23
+ "keep_fnames" : false ,
24
+ "keep_infinity" : false ,
25
+ "loops" : false ,
26
+ "negate_iife" : false ,
27
+ "properties" : false ,
28
+ "reduce_funcs" : false ,
29
+ "reduce_vars" : false ,
30
+ "side_effects" : false ,
31
+ "switches" : true ,
32
+ "typeofs" : false ,
33
+ "unsafe" : false ,
34
+ "unsafe_arrows" : false ,
35
+ "unsafe_comps" : false ,
36
+ "unsafe_Function" : false ,
37
+ "unsafe_math" : false ,
38
+ "unsafe_symbols" : false ,
39
+ "unsafe_methods" : false ,
40
+ "unsafe_proto" : false ,
41
+ "unsafe_regexp" : false ,
42
+ "unsafe_undefined" : false ,
43
+ "unused" : true ,
44
+ "const_to_let" : false ,
45
+ "pristine_globals" : false ,
46
+ "passes" : 1
47
+ }
Original file line number Diff line number Diff line change
1
+ var a = ( ( ) => {
2
+ switch ( "production" ) {
3
+ case "production" :
4
+ return "expected" ;
5
+ default :
6
+ return "unexpected1" ;
7
+ }
8
+
9
+ switch ( "production" ) {
10
+ case "production" :
11
+ return "unexpected2" ;
12
+ default :
13
+ return "unexpected3" ;
14
+ }
15
+ } ) ( ) ;
16
+
17
+ console . log ( a ) ;
Original file line number Diff line number Diff line change
1
+ var a = ( ( ) => "expected" ) ( ) ;
2
+ console . log ( a ) ;
You can’t perform that action at this time.
0 commit comments