Skip to content

Commit

Permalink
test(es/minifier): Add a test for a fixed issue (#6218)
Browse files Browse the repository at this point in the history
**Related issue (if exists):**

 - Closes #6217.
  • Loading branch information
kdy1 committed Oct 20, 2022
1 parent 3f648bd commit 725b118
Show file tree
Hide file tree
Showing 4 changed files with 161 additions and 5 deletions.
64 changes: 64 additions & 0 deletions crates/swc/tests/exec/issues-6xxx/6127/1/input/.swcrc
@@ -0,0 +1,64 @@
{
"jsc": {
"parser": {
"syntax": "ecmascript",
"jsx": false
},
"target": "es2019",
"loose": false,
"minify": {
"compress": {
"arguments": false,
"arrows": false,
"booleans": false,
"booleans_as_integers": false,
"collapse_vars": true,
"comparisons": false,
"computed_props": false,
"conditionals": false,
"dead_code": false,
"directives": false,
"drop_console": false,
"drop_debugger": false,
"evaluate": false,
"expression": false,
"hoist_funs": false,
"hoist_props": false,
"hoist_vars": false,
"if_return": false,
"join_vars": false,
"keep_classnames": false,
"keep_fargs": false,
"keep_fnames": false,
"keep_infinity": false,
"loops": false,
"negate_iife": false,
"properties": false,
"reduce_funcs": false,
"reduce_vars": false,
"side_effects": false,
"switches": false,
"typeofs": false,
"unsafe": false,
"unsafe_arrows": false,
"unsafe_comps": false,
"unsafe_Function": false,
"unsafe_math": false,
"unsafe_symbols": false,
"unsafe_methods": false,
"unsafe_proto": false,
"unsafe_regexp": false,
"unsafe_undefined": false,
"unused": false,
"const_to_let": false,
"pristine_globals": false
},
"mangle": false
}
},
"module": {
"type": "es6"
},
"minify": false,
"isModule": true
}
13 changes: 13 additions & 0 deletions crates/swc/tests/exec/issues-6xxx/6127/1/input/exec.js
@@ -0,0 +1,13 @@
const a = 0;
let b;
for (let i = 0; i < 2; ++i) {
if (i === 0) {
b = 1;
} else {
b = 2;
}
console.log(a, b);
}

let c = 1, d;
while (c--) { }
78 changes: 78 additions & 0 deletions crates/swc_ecma_minifier/tests/exec.rs
Expand Up @@ -10249,3 +10249,81 @@ fn issue_6039_2() {
"###,
);
}

#[test]
fn issue_6217_1() {
run_exec_test(
r###"
var foo = function foo() {
var walker = 0;
var arr = [];
function bar(defaultValue) {
var myIndex = walker;
walker += 1;
console.log({
arr: arr
});
if (arr.length < myIndex + 1) {
arr[myIndex] = defaultValue;
}
}
return bar;
};
var bar = foo();
bar(null);
bar(null);
bar(null);
bar(null);
bar(null);
"###,
r###"
{
"arguments": false,
"arrows": false,
"booleans": false,
"booleans_as_integers": false,
"collapse_vars": true,
"comparisons": false,
"computed_props": false,
"conditionals": false,
"dead_code": false,
"directives": false,
"drop_console": false,
"drop_debugger": false,
"evaluate": false,
"expression": false,
"hoist_funs": false,
"hoist_props": false,
"hoist_vars": false,
"if_return": false,
"join_vars": false,
"keep_classnames": false,
"keep_fargs": false,
"keep_fnames": false,
"keep_infinity": false,
"loops": false,
"negate_iife": false,
"properties": false,
"reduce_funcs": false,
"reduce_vars": false,
"side_effects": false,
"switches": false,
"typeofs": false,
"unsafe": false,
"unsafe_arrows": false,
"unsafe_comps": false,
"unsafe_Function": false,
"unsafe_math": false,
"unsafe_symbols": false,
"unsafe_methods": false,
"unsafe_proto": false,
"unsafe_regexp": false,
"unsafe_undefined": false,
"unused": false,
"const_to_let": false,
"pristine_globals": false
}
"###,
false,
);
}
11 changes: 6 additions & 5 deletions crates/swc_html_parser/tests/html5lib_tests.rs
@@ -1,3 +1,6 @@
#![allow(clippy::redundant_clone)]
#![allow(clippy::while_let_on_iterator)]

use std::{fs, mem::take, path::PathBuf};

use common::{document_span_visualizer, DomVisualizer};
Expand Down Expand Up @@ -666,11 +669,9 @@ fn html5lib_test_tree_construction(input: PathBuf) {
let need_skip_fragment = relative_path_to_test.contains("template_dat")
&& matches!(counter, 109 | 110 | 111);

if !need_skip_fragment {
if !document_fragment.is_empty() {
file_stem += ".fragment_";
file_stem += &document_fragment.join("").replace(' ', "_");
}
if !need_skip_fragment && !document_fragment.is_empty() {
file_stem += ".fragment_";
file_stem += &document_fragment.join("").replace(' ', "_");
}

if scripting_enabled {
Expand Down

1 comment on commit 725b118

@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: 725b118 Previous: 283549c Ratio
es/full/bugs-1 437998 ns/iter (± 20427) 426912 ns/iter (± 13546) 1.03
es/full/minify/libraries/antd 2097944493 ns/iter (± 27070343) 2078075035 ns/iter (± 48825153) 1.01
es/full/minify/libraries/d3 416658375 ns/iter (± 19928755) 406944546 ns/iter (± 12671202) 1.02
es/full/minify/libraries/echarts 1789134089 ns/iter (± 32617028) 1767568102 ns/iter (± 53081690) 1.01
es/full/minify/libraries/jquery 118354147 ns/iter (± 1861497) 116252784 ns/iter (± 3017153) 1.02
es/full/minify/libraries/lodash 140474033 ns/iter (± 3041316) 136879938 ns/iter (± 5634844) 1.03
es/full/minify/libraries/moment 71525820 ns/iter (± 738952) 68502021 ns/iter (± 1449227) 1.04
es/full/minify/libraries/react 24756386 ns/iter (± 571072) 23614531 ns/iter (± 478619) 1.05
es/full/minify/libraries/terser 296570773 ns/iter (± 7919194) 306488496 ns/iter (± 10374337) 0.97
es/full/minify/libraries/three 553019094 ns/iter (± 26127325) 576336279 ns/iter (± 26716444) 0.96
es/full/minify/libraries/typescript 3937085919 ns/iter (± 37768311) 3897668163 ns/iter (± 50729441) 1.01
es/full/minify/libraries/victory 856357482 ns/iter (± 31401938) 863769790 ns/iter (± 50507924) 0.99
es/full/minify/libraries/vue 177523192 ns/iter (± 3161882) 171919504 ns/iter (± 1634272) 1.03
es/full/codegen/es3 39690 ns/iter (± 1182) 38934 ns/iter (± 1255) 1.02
es/full/codegen/es5 39805 ns/iter (± 523) 38856 ns/iter (± 1107) 1.02
es/full/codegen/es2015 39765 ns/iter (± 557) 38503 ns/iter (± 1399) 1.03
es/full/codegen/es2016 39826 ns/iter (± 1513) 39787 ns/iter (± 429) 1.00
es/full/codegen/es2017 39464 ns/iter (± 2445) 39645 ns/iter (± 535) 1.00
es/full/codegen/es2018 38012 ns/iter (± 1367) 39749 ns/iter (± 1341) 0.96
es/full/codegen/es2019 39092 ns/iter (± 1187) 39695 ns/iter (± 1209) 0.98
es/full/codegen/es2020 39791 ns/iter (± 1026) 39701 ns/iter (± 488) 1.00
es/full/all/es3 228657605 ns/iter (± 4966356) 229231437 ns/iter (± 4957021) 1.00
es/full/all/es5 215772922 ns/iter (± 5054573) 218714717 ns/iter (± 8990297) 0.99
es/full/all/es2015 174009898 ns/iter (± 2525259) 175711196 ns/iter (± 3248668) 0.99
es/full/all/es2016 172748665 ns/iter (± 3710628) 173678526 ns/iter (± 4207363) 0.99
es/full/all/es2017 171968377 ns/iter (± 3988163) 172843108 ns/iter (± 5049879) 0.99
es/full/all/es2018 168984539 ns/iter (± 4133700) 171634574 ns/iter (± 5927538) 0.98
es/full/all/es2019 168491880 ns/iter (± 5968416) 170160867 ns/iter (± 6266805) 0.99
es/full/all/es2020 162280641 ns/iter (± 5464987) 164832523 ns/iter (± 4340154) 0.98
es/full/parser 846855 ns/iter (± 33627) 845195 ns/iter (± 21804) 1.00
es/full/base/fixer 31545 ns/iter (± 397) 31778 ns/iter (± 879) 0.99
es/full/base/resolver_and_hygiene 113310 ns/iter (± 4441) 110854 ns/iter (± 4340) 1.02
serialization of ast node 256 ns/iter (± 7) 253 ns/iter (± 5) 1.01
serialization of serde 260 ns/iter (± 2) 255 ns/iter (± 8) 1.02

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

Please sign in to comment.