Skip to content

Commit 2071f89

Browse files
authoredMay 23, 2023
fix(es/preset-env): Fix pass ordering (#7434)
**Related issue:** - Closes #6898. - Closes #7432.
1 parent 8872b41 commit 2071f89

File tree

12 files changed

+176
-1
lines changed

12 files changed

+176
-1
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"jsc": {
3+
"parser": {
4+
"syntax": "ecmascript"
5+
},
6+
"target": "es5",
7+
"minify": {
8+
"compress": false,
9+
"mangle": false
10+
}
11+
},
12+
"env": {
13+
"targets": "chrome 30"
14+
},
15+
"minify": false
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
(async () => {
2+
const arr = [
3+
'value1',
4+
'value2',
5+
'value3',
6+
];
7+
8+
// for (const value of arr) {
9+
for (let i = 0; i < arr.length; i++) {
10+
const value = arr[i];
11+
setTimeout(() => {
12+
console.log('value', value);
13+
}, 0);
14+
}
15+
})();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"jsc": {
3+
"parser": {
4+
"syntax": "ecmascript"
5+
},
6+
"target": "es5",
7+
"minify": {
8+
"compress": false,
9+
"mangle": false
10+
}
11+
},
12+
"env": {
13+
"targets": "chrome 30"
14+
},
15+
"minify": false
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
(async () => {
2+
const array = [1, 2, 3]
3+
for (const el of array)
4+
setTimeout(() => {
5+
console.log(el)
6+
}, 1)
7+
})()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
(async () => {
2+
const arr = [
3+
'value1',
4+
'value2',
5+
'value3',
6+
];
7+
8+
// for (const value of arr) {
9+
for (let i = 0; i < arr.length; i++) {
10+
const value = arr[i];
11+
setTimeout(() => {
12+
console.log('value', value);
13+
}, 0);
14+
}
15+
})();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2+
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3+
_async_to_generator(function() {
4+
var _loop, arr, i;
5+
return _ts_generator(this, function(_state) {
6+
_loop = function(i) {
7+
var value = arr[i];
8+
setTimeout(function() {
9+
console.log("value", value);
10+
}, 0);
11+
};
12+
arr = [
13+
"value1",
14+
"value2",
15+
"value3"
16+
];
17+
// for (const value of arr) {
18+
for(i = 0; i < arr.length; i++)_loop(i);
19+
return [
20+
2
21+
];
22+
});
23+
})();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
(async () => {
2+
const array = [1, 2, 3]
3+
for (const el of array)
4+
setTimeout(() => {
5+
console.log(el)
6+
}, 1)
7+
})()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2+
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3+
_async_to_generator(function() {
4+
var array, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step;
5+
return _ts_generator(this, function(_state) {
6+
array = [
7+
1,
8+
2,
9+
3
10+
];
11+
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
12+
try {
13+
_loop = function() {
14+
var el = _step.value;
15+
setTimeout(function() {
16+
console.log(el);
17+
}, 1);
18+
};
19+
for(_iterator = array[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
20+
} catch (err) {
21+
_didIteratorError = true;
22+
_iteratorError = err;
23+
} finally{
24+
try {
25+
if (!_iteratorNormalCompletion && _iterator.return != null) {
26+
_iterator.return();
27+
}
28+
} finally{
29+
if (_didIteratorError) {
30+
throw _iteratorError;
31+
}
32+
}
33+
}
34+
return [
35+
2
36+
];
37+
});
38+
})();

‎crates/swc_ecma_preset_env/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -279,8 +279,8 @@ where
279279
es2015::destructuring(es2015::destructuring::Config { loose }),
280280
true
281281
);
282-
let pass = add!(pass, Regenerator, generator(global_mark, comments), true);
283282
let pass = add!(pass, BlockScoping, es2015::block_scoping(global_mark), true);
283+
let pass = add!(pass, Regenerator, generator(global_mark, comments), true);
284284

285285
let pass = add!(pass, NewTarget, es2015::new_target(), true);
286286

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
(async () => {
2+
const arr = [
3+
'value1',
4+
'value2',
5+
'value3',
6+
];
7+
8+
// for (const value of arr) {
9+
for (let i = 0; i < arr.length; i++) {
10+
const value = arr[i];
11+
setTimeout(() => {
12+
console.log('value', value);
13+
}, 0);
14+
}
15+
})();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
(async () => {
2+
const array = [1, 2, 3]
3+
for (const el of array)
4+
setTimeout(() => {
5+
console.log(el)
6+
}, 1)
7+
})()

‎crates/swc_ecma_transforms_compat/tests/es2015_block_scoping.rs

+16
Original file line numberDiff line numberDiff line change
@@ -1025,6 +1025,22 @@ fn exec(input: PathBuf) {
10251025
},
10261026
&input,
10271027
);
1028+
1029+
compare_stdout(
1030+
Default::default(),
1031+
|t| {
1032+
let unresolved_mark = Mark::new();
1033+
chain!(
1034+
resolver(unresolved_mark, Mark::new(), false),
1035+
es2015(
1036+
unresolved_mark,
1037+
Some(t.comments.clone()),
1038+
Default::default()
1039+
)
1040+
)
1041+
},
1042+
&input,
1043+
);
10281044
}
10291045

10301046
#[testing::fixture("tests/block-scoping/**/input.js")]

2 commit comments

Comments
 (2)

github-actions[bot] commented on May 23, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: 2071f89 Previous: 97d0f79 Ratio
es/full/bugs-1 315759 ns/iter (± 9613) 253218 ns/iter (± 5686) 1.25
es/full/minify/libraries/antd 1683686558 ns/iter (± 23275611) 1211855223 ns/iter (± 15929406) 1.39
es/full/minify/libraries/d3 320171734 ns/iter (± 9168150) 245868847 ns/iter (± 2615414) 1.30
es/full/minify/libraries/echarts 1307617391 ns/iter (± 16839712) 978913558 ns/iter (± 8491456) 1.34
es/full/minify/libraries/jquery 93119074 ns/iter (± 603062) 77522115 ns/iter (± 174566) 1.20
es/full/minify/libraries/lodash 110120966 ns/iter (± 906560) 87684915 ns/iter (± 577821) 1.26
es/full/minify/libraries/moment 54672760 ns/iter (± 902572) 45264273 ns/iter (± 288064) 1.21
es/full/minify/libraries/react 19933533 ns/iter (± 169490) 16454155 ns/iter (± 27509) 1.21
es/full/minify/libraries/terser 259027695 ns/iter (± 2025825) 200142834 ns/iter (± 731820) 1.29
es/full/minify/libraries/three 464528351 ns/iter (± 4842638) 343315055 ns/iter (± 1037152) 1.35
es/full/minify/libraries/typescript 3222657468 ns/iter (± 19421328) 2452251334 ns/iter (± 13578449) 1.31
es/full/minify/libraries/victory 710237270 ns/iter (± 13947326) 514532919 ns/iter (± 2624355) 1.38
es/full/minify/libraries/vue 136945586 ns/iter (± 1539285) 110347305 ns/iter (± 188075) 1.24
es/full/codegen/es3 34486 ns/iter (± 192) 31335 ns/iter (± 64) 1.10
es/full/codegen/es5 34547 ns/iter (± 136) 31391 ns/iter (± 63) 1.10
es/full/codegen/es2015 34502 ns/iter (± 183) 31356 ns/iter (± 84) 1.10
es/full/codegen/es2016 34577 ns/iter (± 215) 31256 ns/iter (± 76) 1.11
es/full/codegen/es2017 34612 ns/iter (± 169) 31502 ns/iter (± 61) 1.10
es/full/codegen/es2018 34368 ns/iter (± 179) 31364 ns/iter (± 101) 1.10
es/full/codegen/es2019 34435 ns/iter (± 186) 31467 ns/iter (± 87) 1.09
es/full/codegen/es2020 34479 ns/iter (± 173) 31310 ns/iter (± 82) 1.10
es/full/all/es3 186121728 ns/iter (± 2644429) 157719378 ns/iter (± 2070714) 1.18
es/full/all/es5 175747136 ns/iter (± 3135430) 150801031 ns/iter (± 901657) 1.17
es/full/all/es2015 140007063 ns/iter (± 3652538) 112511571 ns/iter (± 616084) 1.24
es/full/all/es2016 137815002 ns/iter (± 2045807) 111018343 ns/iter (± 638920) 1.24
es/full/all/es2017 138403315 ns/iter (± 3447731) 111114966 ns/iter (± 789334) 1.25
es/full/all/es2018 133655017 ns/iter (± 1653631) 109230060 ns/iter (± 440248) 1.22
es/full/all/es2019 131728210 ns/iter (± 1716599) 108463085 ns/iter (± 488352) 1.21
es/full/all/es2020 120659213 ns/iter (± 1254159) 103147459 ns/iter (± 323306) 1.17
es/full/parser 526103 ns/iter (± 8949) 466313 ns/iter (± 4177) 1.13
es/full/base/fixer 22651 ns/iter (± 19) 17573 ns/iter (± 51) 1.29
es/full/base/resolver_and_hygiene 85447 ns/iter (± 610) 74640 ns/iter (± 168) 1.14
serialization of serde 124 ns/iter (± 0) 112 ns/iter (± 0) 1.11
css/minify/libraries/bootstrap 27306237 ns/iter (± 125894) 23599737 ns/iter (± 536217) 1.16
css/visitor/compare/clone 2145679 ns/iter (± 5740) 1702604 ns/iter (± 3696) 1.26
css/visitor/compare/visit_mut_span 2320207 ns/iter (± 3589) 1806953 ns/iter (± 5051) 1.28
css/visitor/compare/visit_mut_span_panic 2365513 ns/iter (± 3486) 1882325 ns/iter (± 1701) 1.26
css/visitor/compare/fold_span 3078595 ns/iter (± 20558) 2580211 ns/iter (± 8713) 1.19
css/visitor/compare/fold_span_panic 3289446 ns/iter (± 17194) 2776043 ns/iter (± 11694) 1.18
css/lexer/bootstrap_5_1_3 5192484 ns/iter (± 9795) 4545136 ns/iter (± 1780) 1.14
css/lexer/foundation_6_7_4 4374118 ns/iter (± 3908) 3817676 ns/iter (± 2024) 1.15
css/lexer/tailwind_3_1_1 830875 ns/iter (± 309) 721510 ns/iter (± 419) 1.15
css/parser/bootstrap_5_1_3 21138431 ns/iter (± 106943) 18247762 ns/iter (± 22704) 1.16
css/parser/foundation_6_7_4 16900045 ns/iter (± 46007) 14631077 ns/iter (± 8862) 1.16
css/parser/tailwind_3_1_1 3246632 ns/iter (± 3508) 2822003 ns/iter (± 3861) 1.15
es/codegen/colors 735816 ns/iter (± 394952) 731517 ns/iter (± 400209) 1.01
es/codegen/large 3199927 ns/iter (± 1671465) 2976219 ns/iter (± 1582801) 1.08
es/codegen/with-parser/colors 48777 ns/iter (± 346) 41979 ns/iter (± 361) 1.16
es/codegen/with-parser/large 515855 ns/iter (± 1468) 464704 ns/iter (± 717) 1.11
es/minify/libraries/antd 1484653180 ns/iter (± 9622051) 1050859957 ns/iter (± 10260161) 1.41
es/minify/libraries/d3 268767255 ns/iter (± 3374599) 212751970 ns/iter (± 378112) 1.26
es/minify/libraries/echarts 1140796557 ns/iter (± 16739244) 842618760 ns/iter (± 3710774) 1.35
es/minify/libraries/jquery 82613258 ns/iter (± 838878) 68723907 ns/iter (± 145537) 1.20
es/minify/libraries/lodash 99033139 ns/iter (± 1181248) 79330254 ns/iter (± 221697) 1.25
es/minify/libraries/moment 47899011 ns/iter (± 292637) 40113586 ns/iter (± 60354) 1.19
es/minify/libraries/react 17713314 ns/iter (± 169285) 14850892 ns/iter (± 43994) 1.19
es/minify/libraries/terser 223784841 ns/iter (± 2854755) 174526882 ns/iter (± 136944) 1.28
es/minify/libraries/three 391691080 ns/iter (± 4445014) 293125154 ns/iter (± 1379056) 1.34
es/minify/libraries/typescript 2725231295 ns/iter (± 14319138) 2125956079 ns/iter (± 27541570) 1.28
es/minify/libraries/victory 595981462 ns/iter (± 13388505) 438252845 ns/iter (± 5343028) 1.36
es/minify/libraries/vue 122366287 ns/iter (± 952611) 99640075 ns/iter (± 185146) 1.23
es/visitor/compare/clone 2330093 ns/iter (± 19829) 1979405 ns/iter (± 6752) 1.18
es/visitor/compare/visit_mut_span 2681840 ns/iter (± 3593) 2324160 ns/iter (± 4659) 1.15
es/visitor/compare/visit_mut_span_panic 2743977 ns/iter (± 2732) 2369783 ns/iter (± 3260) 1.16
es/visitor/compare/fold_span 3820901 ns/iter (± 28343) 3406954 ns/iter (± 5707) 1.12
es/visitor/compare/fold_span_panic 3937634 ns/iter (± 11879) 3537044 ns/iter (± 5329) 1.11
es/lexer/colors 13078 ns/iter (± 39) 12176 ns/iter (± 11) 1.07
es/lexer/angular 6401679 ns/iter (± 2601) 5872808 ns/iter (± 2029) 1.09
es/lexer/backbone 793922 ns/iter (± 449) 750247 ns/iter (± 3282) 1.06
es/lexer/jquery 4447227 ns/iter (± 2391) 4263183 ns/iter (± 4432) 1.04
es/lexer/jquery mobile 6928502 ns/iter (± 9233) 6522483 ns/iter (± 2618) 1.06
es/lexer/mootools 3489566 ns/iter (± 10139) 3354962 ns/iter (± 3027) 1.04
es/lexer/underscore 655027 ns/iter (± 687) 623319 ns/iter (± 1782) 1.05
es/lexer/three 20972148 ns/iter (± 14432) 20178740 ns/iter (± 6706) 1.04
es/lexer/yui 3886090 ns/iter (± 2138) 3613516 ns/iter (± 34419) 1.08
es/parser/colors 29645 ns/iter (± 208) 25511 ns/iter (± 78) 1.16
es/parser/angular 15335954 ns/iter (± 110706) 13104798 ns/iter (± 64815) 1.17
es/parser/backbone 2193281 ns/iter (± 12197) 1942301 ns/iter (± 11207) 1.13
es/parser/jquery 11913412 ns/iter (± 136531) 10573723 ns/iter (± 43098) 1.13
es/parser/jquery mobile 18571282 ns/iter (± 278436) 16250768 ns/iter (± 78901) 1.14
es/parser/mootools 9029575 ns/iter (± 27048) 8179530 ns/iter (± 25740) 1.10
es/parser/underscore 1859905 ns/iter (± 12491) 1677330 ns/iter (± 9708) 1.11
es/parser/three 55844122 ns/iter (± 280705) 45396741 ns/iter (± 166411) 1.23
es/parser/yui 9174488 ns/iter (± 61977) 8045863 ns/iter (± 30456) 1.14
es/preset-env/usage/builtin_type 138227 ns/iter (± 34466) 147151 ns/iter (± 39761) 0.94
es/preset-env/usage/property 20341 ns/iter (± 77) 15209 ns/iter (± 42) 1.34
es/resolver/typescript 120842030 ns/iter (± 2230417) 88793718 ns/iter (± 1030341) 1.36
es/fixer/typescript 87677093 ns/iter (± 2325031) 64567577 ns/iter (± 470057) 1.36
es/hygiene/typescript 189733853 ns/iter (± 1699137) 131610968 ns/iter (± 1391531) 1.44
es/resolver_with_hygiene/typescript 331196883 ns/iter (± 1505440) 235585507 ns/iter (± 1820983) 1.41
es/visitor/base-perf/module_clone 80381 ns/iter (± 432) 59106 ns/iter (± 173) 1.36
es/visitor/base-perf/fold_empty 90615 ns/iter (± 262) 62941 ns/iter (± 159) 1.44
es/visitor/base-perf/fold_noop_impl_all 91001 ns/iter (± 307) 63432 ns/iter (± 253) 1.43
es/visitor/base-perf/fold_noop_impl_vec 91280 ns/iter (± 374) 63553 ns/iter (± 368) 1.44
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 51 ns/iter (± 0) 1.10
es/visitor/base-perf/boxing_unboxed_clone 42 ns/iter (± 0) 36 ns/iter (± 0) 1.17
es/visitor/base-perf/boxing_boxed 103 ns/iter (± 0) 110 ns/iter (± 0) 0.94
es/visitor/base-perf/boxing_unboxed 81 ns/iter (± 0) 76 ns/iter (± 0) 1.07
es/visitor/base-perf/visit_contains_this 3356 ns/iter (± 88) 2520 ns/iter (± 14) 1.33
es/base/parallel/resolver/typescript 5996433138 ns/iter (± 367221911) 4144791575 ns/iter (± 271271227) 1.45
es/base/parallel/hygiene/typescript 2207761577 ns/iter (± 14150688) 1487685434 ns/iter (± 46593775) 1.48
misc/visitors/time-complexity/time 5 103 ns/iter (± 0) 104 ns/iter (± 1) 0.99
misc/visitors/time-complexity/time 10 320 ns/iter (± 2) 275 ns/iter (± 18) 1.16
misc/visitors/time-complexity/time 15 648 ns/iter (± 12) 543 ns/iter (± 1) 1.19
misc/visitors/time-complexity/time 20 1193 ns/iter (± 0) 1091 ns/iter (± 64) 1.09
misc/visitors/time-complexity/time 40 6164 ns/iter (± 66) 3711 ns/iter (± 105) 1.66
misc/visitors/time-complexity/time 60 15752 ns/iter (± 83) 7681 ns/iter (± 5) 2.05
es/full-target/es2016 254028 ns/iter (± 1454) 226488 ns/iter (± 628) 1.12
es/full-target/es2017 246882 ns/iter (± 458) 215438 ns/iter (± 576) 1.15
es/full-target/es2018 236204 ns/iter (± 344) 201967 ns/iter (± 1076) 1.17
es2020_nullish_coalescing 92882 ns/iter (± 532) 68677 ns/iter (± 614) 1.35
es2020_optional_chaining 123829 ns/iter (± 158) 95400 ns/iter (± 381) 1.30
es2022_class_properties 149125 ns/iter (± 375) 117457 ns/iter (± 515) 1.27
es2018_object_rest_spread 95843 ns/iter (± 185) 72795 ns/iter (± 315) 1.32
es2019_optional_catch_binding 84764 ns/iter (± 190) 63497 ns/iter (± 243) 1.33
es2017_async_to_generator 85427 ns/iter (± 234) 64451 ns/iter (± 194) 1.33
es2016_exponentiation 89837 ns/iter (± 269) 67235 ns/iter (± 217) 1.34
es2015_arrow 93843 ns/iter (± 211) 71095 ns/iter (± 172) 1.32
es2015_block_scoped_fn 91608 ns/iter (± 181) 67922 ns/iter (± 145) 1.35
es2015_block_scoping 169774 ns/iter (± 503) 118024 ns/iter (± 415) 1.44

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

github-actions[bot] commented on May 23, 2023

@github-actions[bot]

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 2.

Benchmark suite Current: 2071f89 Previous: 97d0f79 Ratio
misc/visitors/time-complexity/time 60 15752 ns/iter (± 83) 7681 ns/iter (± 5) 2.05

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

CC: @kdy1

Please sign in to comment.