From c1125beeea590c874bd32ad3fc0fe6a1912dc6c4 Mon Sep 17 00:00:00 2001 From: xwbx <1677759063@qq.com> Date: Fri, 26 Sep 2025 18:46:42 +0800 Subject: [PATCH 1/3] fix: remove continue --- .../oxc_minifier/src/peephole/minimize_statements.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/crates/oxc_minifier/src/peephole/minimize_statements.rs b/crates/oxc_minifier/src/peephole/minimize_statements.rs index b5356af76a9b6..bdb167aa7bac8 100644 --- a/crates/oxc_minifier/src/peephole/minimize_statements.rs +++ b/crates/oxc_minifier/src/peephole/minimize_statements.rs @@ -643,8 +643,9 @@ impl<'a> PeepholeOptimizations { let mut optimize_implicit_jump = false; // "while (x) { if (y) continue; z(); }" => "while (x) { if (!y) z(); }" // "while (x) { if (y) continue; else z(); w(); }" => "while (x) { if (!y) { z(); w(); } }" => "for (; x;) !y && (z(), w());" - if ctx.ancestors().nth(1).is_some_and(Ancestor::is_for_statement) - && let Statement::ContinueStatement(continue_stmt) = &if_stmt.consequent + if ctx.ancestors().nth(1).is_some_and(|v| { + v.is_for_statement() || v.is_for_in_statement() || v.is_for_of_statement() + }) && let Statement::ContinueStatement(continue_stmt) = &if_stmt.consequent && continue_stmt.label.is_none() { optimize_implicit_jump = true; @@ -1808,4 +1809,10 @@ mod test { "function _() { for (var x = j, i = 0; i < 10; i++) { let j = k; console.log(i, j, j) } }", ); } + #[test] + fn test_for_continue_in_for() { + test("for( a of b ){ if(c) { continue; } d() }", "for ( a of b ) c || d();"); + test("for( a in b ){ if(c) { continue; } d() }", "for ( a in b ) c || d();"); + test("for( ; ; ){ if(c) { continue; } d() }", "for ( ; ; ) c || d();"); + } } From bb7e4642e26b1ec40148154cd18fa5280bdaf374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=95=E8=88=9E=E5=85=AB=E5=BC=A6?= <1677759063@qq.com> Date: Sat, 27 Sep 2025 18:41:44 +0800 Subject: [PATCH 2/3] update snapshot --- tasks/minsize/minsize.snap | 10 +++++----- tasks/track_memory_allocations/allocs_minifier.snap | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tasks/minsize/minsize.snap b/tasks/minsize/minsize.snap index bb52b5323a700..49bbe18e9fef4 100644 --- a/tasks/minsize/minsize.snap +++ b/tasks/minsize/minsize.snap @@ -5,23 +5,23 @@ Original | minified | minified | gzip | gzip | Iterations | Fi 173.90 kB | 59.44 kB | 59.82 kB | 19.16 kB | 19.33 kB | 2 | moment.js -287.63 kB | 89.27 kB | 90.07 kB | 30.91 kB | 31.95 kB | 2 | jquery.js +287.63 kB | 89.26 kB | 90.07 kB | 30.91 kB | 31.95 kB | 2 | jquery.js 342.15 kB | 117 kB | 118.14 kB | 43.19 kB | 44.37 kB | 2 | vue.js 544.10 kB | 71.15 kB | 72.48 kB | 25.85 kB | 26.20 kB | 2 | lodash.js -555.77 kB | 267.47 kB | 270.13 kB | 88.05 kB | 90.80 kB | 2 | d3.js +555.77 kB | 267.45 kB | 270.13 kB | 88.05 kB | 90.80 kB | 2 | d3.js 1.01 MB | 439.53 kB | 458.89 kB | 122.13 kB | 126.71 kB | 2 | bundle.min.js -1.25 MB | 642.80 kB | 646.76 kB | 159.41 kB | 163.73 kB | 2 | three.js +1.25 MB | 642.77 kB | 646.76 kB | 159.40 kB | 163.73 kB | 2 | three.js -2.14 MB | 712.13 kB | 724.14 kB | 160.90 kB | 181.07 kB | 2 | victory.js +2.14 MB | 712.11 kB | 724.14 kB | 160.89 kB | 181.07 kB | 2 | victory.js 3.20 MB | 1.00 MB | 1.01 MB | 323.05 kB | 331.56 kB | 3 | echarts.js 6.69 MB | 2.22 MB | 2.31 MB | 458.81 kB | 488.28 kB | 4 | antd.js -10.95 MB | 3.34 MB | 3.49 MB | 855.11 kB | 915.50 kB | 4 | typescript.js +10.95 MB | 3.34 MB | 3.49 MB | 855.09 kB | 915.50 kB | 4 | typescript.js diff --git a/tasks/track_memory_allocations/allocs_minifier.snap b/tasks/track_memory_allocations/allocs_minifier.snap index 21b017178ddbd..841f913c20d30 100644 --- a/tasks/track_memory_allocations/allocs_minifier.snap +++ b/tasks/track_memory_allocations/allocs_minifier.snap @@ -1,12 +1,12 @@ File | File size || Sys allocs | Sys reallocs || Arena allocs | Arena reallocs | Arena bytes ------------------------------------------------------------------------------------------------------------------------------------------- -checker.ts | 2.92 MB || 84076 | 14190 || 153733 | 29463 +checker.ts | 2.92 MB || 84078 | 14191 || 153771 | 29399 cal.com.tsx | 1.06 MB || 40528 | 3033 || 37173 | 4736 RadixUIAdoptionSection.jsx | 2.52 kB || 85 | 9 || 30 | 6 -pdf.mjs | 567.30 kB || 19825 | 2900 || 47404 | 7781 +pdf.mjs | 567.30 kB || 19825 | 2900 || 47465 | 7754 antd.js | 6.69 MB || 99749 | 13523 || 331957 | 69885 From 4664d9e51ff8d5e1d2f81be6297b812575488c70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0?= Date: Sat, 27 Sep 2025 20:55:16 +0900 Subject: [PATCH 3/3] chore: add line break MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 翠 --- crates/oxc_minifier/src/peephole/minimize_statements.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/oxc_minifier/src/peephole/minimize_statements.rs b/crates/oxc_minifier/src/peephole/minimize_statements.rs index bdb167aa7bac8..baf5b3df05ef2 100644 --- a/crates/oxc_minifier/src/peephole/minimize_statements.rs +++ b/crates/oxc_minifier/src/peephole/minimize_statements.rs @@ -1809,6 +1809,7 @@ mod test { "function _() { for (var x = j, i = 0; i < 10; i++) { let j = k; console.log(i, j, j) } }", ); } + #[test] fn test_for_continue_in_for() { test("for( a of b ){ if(c) { continue; } d() }", "for ( a of b ) c || d();");