Skip to content

Commit

Permalink
fix(es/renamer): Don't use symbols used by declarations if eval exi…
Browse files Browse the repository at this point in the history
…sts (#7116)

**Related issue:**

 - Closes #6971.
 - Closes #7094.
  • Loading branch information
kdy1 committed Mar 22, 2023
1 parent 737f2ad commit 6d9763e
Show file tree
Hide file tree
Showing 23 changed files with 17,170 additions and 17,079 deletions.
19 changes: 19 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6871/input/.swcrc
@@ -0,0 +1,19 @@
{
"jsc": {
"parser": {
"syntax": "ecmascript",
"jsx": false
},
"target": "es2015",
"loose": true,
"minify": {
"compress": false,
"mangle": false
}
},
"module": {
"type": "es6"
},
"minify": false,
"isModule": true
}
3 changes: 3 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6871/input/index.js
@@ -0,0 +1,3 @@
async function fromTokenizer() { }
async function _fromTokenizer() { }
eval()
16 changes: 16 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6871/output/index.js
@@ -0,0 +1,16 @@
import _async_to_generator from "@swc/helpers/src/_async_to_generator.mjs";
function fromTokenizer() {
return _fromTokenizer1.apply(this, arguments);
}
function _fromTokenizer1() {
_fromTokenizer1 = _async_to_generator(function*() {});
return _fromTokenizer1.apply(this, arguments);
}
function _fromTokenizer() {
return __fromTokenizer.apply(this, arguments);
}
function __fromTokenizer() {
__fromTokenizer = _async_to_generator(function*() {});
return __fromTokenizer.apply(this, arguments);
}
eval();
8 changes: 4 additions & 4 deletions crates/swc_ecma_minifier/tests/fixture/issues/6628/output.js
@@ -1,10 +1,10 @@
!function() {
var CallbackType, Collector = function() {
var n = function(n) {};
return n.usePlugin = function(n, u, l) {}, n.plugins = [], n;
var u = function(u) {};
return u.usePlugin = function(u, l, o) {}, u.plugins = [], u;
}();
!function(n) {
n[n.Var = 0] = "Var", n[n.All = 1] = "All";
!function(u) {
u[u.Var = 0] = "Var", u[u.All = 1] = "All";
}(CallbackType || (CallbackType = {}));
var CepRule = function() {
eval();
Expand Down
Expand Up @@ -15,7 +15,7 @@ push({
}();
},
"App.jsx": function() {
var ShaderChunk = {
var ShaderChunk1 = {
shadowmap_pars_vertex: "",
shadowmap_vertex: "",
shadowmask_pars_fragment: "",
Expand Down Expand Up @@ -47,7 +47,7 @@ push({
meshphong_frag: ""
};
ShaderLib.physical = {
x: ShaderChunk.meshphysical_frag
x: ShaderChunk1.meshphysical_frag
};
}
});
10 changes: 5 additions & 5 deletions crates/swc_ecma_minifier/tests/fixture/next/43052/output.js
@@ -1,6 +1,6 @@
use(function(__unused_webpack_module, exports, __webpack_require__) {
!function(e, t) {
t(exports, __webpack_require__(7294), __webpack_require__(1321));
!function(n, c) {
c(exports, __webpack_require__(7294), __webpack_require__(1321));
}(this, function(exports, React) {
"use strict";
var index_production = {
Expand All @@ -26,7 +26,7 @@ use(function(__unused_webpack_module, exports, __webpack_require__) {
});
});
});
(function e() {
const e = 1;
use(e);
(function n() {
const n = 1;
use(n);
});
30,052 changes: 15,026 additions & 15,026 deletions crates/swc_ecma_minifier/tests/fixture/next/wrap-contracts/output.js

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions crates/swc_ecma_minifier/tests/full/issues/7094/1/input.js
@@ -0,0 +1,5 @@
export function useSyncExternalStore$2(e, n, t) {
let a = n(); // any variable expect `e`
return a;
}
eval();
@@ -0,0 +1 @@
export function useSyncExternalStore$2(r,o,u){return o()}eval();
19 changes: 19 additions & 0 deletions crates/swc_ecma_minifier/tests/full/issues/7094/2/input.js
@@ -0,0 +1,19 @@

export function foo() {
eval();
return function useSyncExternalStore$2(e, n, t) {
let a = n(); // any variable expect `e`
return a;
}
}

export function bar() {

const shouldBeMangled = Math.random() > 0.5 ? 1 : 2;
console.log(shouldBeMangled)
console.log(shouldBeMangled)
console.log(shouldBeMangled)
console.log(shouldBeMangled)
console.log(shouldBeMangled)
console.log(shouldBeMangled)
}
@@ -0,0 +1 @@
export function foo(){return eval(),function(o,l,c){return l()}}export function bar(){const o=Math.random()>.5?1:2;console.log(o),console.log(o),console.log(o),console.log(o),console.log(o),console.log(o)}

1 comment on commit 6d9763e

@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: 6d9763e Previous: 610e1bb Ratio
es/full/bugs-1 294792 ns/iter (± 8692) 302868 ns/iter (± 8561) 0.97
es/full/minify/libraries/antd 1636485310 ns/iter (± 19211180) 1636708153 ns/iter (± 20498815) 1.00
es/full/minify/libraries/d3 299706338 ns/iter (± 4528581) 298099978 ns/iter (± 6884705) 1.01
es/full/minify/libraries/echarts 1227852490 ns/iter (± 9988016) 1242876701 ns/iter (± 7606453) 0.99
es/full/minify/libraries/jquery 89557235 ns/iter (± 518929) 90453153 ns/iter (± 614761) 0.99
es/full/minify/libraries/lodash 105039736 ns/iter (± 950168) 105142359 ns/iter (± 821767) 1.00
es/full/minify/libraries/moment 52120501 ns/iter (± 479065) 53069464 ns/iter (± 328632) 0.98
es/full/minify/libraries/react 18954445 ns/iter (± 121474) 19259111 ns/iter (± 143858) 0.98
es/full/minify/libraries/terser 244169630 ns/iter (± 1616264) 247433966 ns/iter (± 3254239) 0.99
es/full/minify/libraries/three 440597634 ns/iter (± 5181987) 445873793 ns/iter (± 4836745) 0.99
es/full/minify/libraries/typescript 3092986821 ns/iter (± 19635304) 3176427535 ns/iter (± 47638124) 0.97
es/full/minify/libraries/victory 664834940 ns/iter (± 9001330) 705458179 ns/iter (± 12472609) 0.94
es/full/minify/libraries/vue 130773228 ns/iter (± 1284448) 131270079 ns/iter (± 1797384) 1.00
es/full/codegen/es3 26663 ns/iter (± 75) 26507 ns/iter (± 82) 1.01
es/full/codegen/es5 26815 ns/iter (± 106) 26630 ns/iter (± 40) 1.01
es/full/codegen/es2015 26818 ns/iter (± 47) 26622 ns/iter (± 74) 1.01
es/full/codegen/es2016 26767 ns/iter (± 51) 26602 ns/iter (± 50) 1.01
es/full/codegen/es2017 26791 ns/iter (± 39) 26568 ns/iter (± 57) 1.01
es/full/codegen/es2018 26843 ns/iter (± 70) 26583 ns/iter (± 72) 1.01
es/full/codegen/es2019 26825 ns/iter (± 63) 26589 ns/iter (± 80) 1.01
es/full/codegen/es2020 26809 ns/iter (± 64) 26527 ns/iter (± 69) 1.01
es/full/all/es3 182181569 ns/iter (± 2545629) 176871631 ns/iter (± 4636742) 1.03
es/full/all/es5 172512583 ns/iter (± 3312106) 172701109 ns/iter (± 2181872) 1.00
es/full/all/es2015 136990129 ns/iter (± 1538485) 137497086 ns/iter (± 1764130) 1.00
es/full/all/es2016 133809188 ns/iter (± 2725141) 134824037 ns/iter (± 2973046) 0.99
es/full/all/es2017 133201251 ns/iter (± 1635445) 134238537 ns/iter (± 2213479) 0.99
es/full/all/es2018 128644649 ns/iter (± 2317575) 129232634 ns/iter (± 1732712) 1.00
es/full/all/es2019 127822448 ns/iter (± 1628042) 127286222 ns/iter (± 1496205) 1.00
es/full/all/es2020 119083468 ns/iter (± 1311019) 119401764 ns/iter (± 704887) 1.00
es/full/parser 532861 ns/iter (± 8529) 539940 ns/iter (± 9364) 0.99
es/full/base/fixer 22066 ns/iter (± 50) 22344 ns/iter (± 49) 0.99
es/full/base/resolver_and_hygiene 82280 ns/iter (± 265) 84478 ns/iter (± 93) 0.97
serialization of ast node 124 ns/iter (± 1) 124 ns/iter (± 0) 1
serialization of serde 127 ns/iter (± 0) 126 ns/iter (± 0) 1.01
css/minify/libraries/bootstrap 28433894 ns/iter (± 129566) 28936428 ns/iter (± 144246) 0.98
css/visitor/compare/clone 2103256 ns/iter (± 11933) 2076986 ns/iter (± 23217) 1.01
css/visitor/compare/visit_mut_span 2284649 ns/iter (± 7592) 2266684 ns/iter (± 7733) 1.01
css/visitor/compare/visit_mut_span_panic 2371497 ns/iter (± 38970) 2329054 ns/iter (± 9154) 1.02
css/visitor/compare/fold_span 3089656 ns/iter (± 21659) 3052552 ns/iter (± 22379) 1.01
css/visitor/compare/fold_span_panic 3204298 ns/iter (± 21575) 3199648 ns/iter (± 24604) 1.00
css/lexer/bootstrap_5_1_3 5107644 ns/iter (± 7300) 5117678 ns/iter (± 4484) 1.00
css/lexer/foundation_6_7_4 4310392 ns/iter (± 21208) 4306101 ns/iter (± 3856) 1.00
css/lexer/tailwind_3_1_1 816063 ns/iter (± 2974) 817719 ns/iter (± 472) 1.00
css/parser/bootstrap_5_1_3 21908482 ns/iter (± 85971) 22041993 ns/iter (± 186553) 0.99
css/parser/foundation_6_7_4 17405984 ns/iter (± 58679) 17458448 ns/iter (± 67049) 1.00
css/parser/tailwind_3_1_1 3354250 ns/iter (± 8071) 3331958 ns/iter (± 2624) 1.01
es/codegen/colors 327358 ns/iter (± 184774) 327310 ns/iter (± 185129) 1.00
es/codegen/large 1207352 ns/iter (± 615510) 1205080 ns/iter (± 612890) 1.00
es/codegen/with-parser/colors 46786 ns/iter (± 225) 47382 ns/iter (± 271) 0.99
es/codegen/with-parser/large 520005 ns/iter (± 1523) 522385 ns/iter (± 1487) 1.00
es/minify/libraries/antd 1409765201 ns/iter (± 12111197) 1449774277 ns/iter (± 20624233) 0.97
es/minify/libraries/d3 262948367 ns/iter (± 3148450) 256779578 ns/iter (± 3170533) 1.02
es/minify/libraries/echarts 1093902891 ns/iter (± 14164344) 1070279109 ns/iter (± 8613932) 1.02
es/minify/libraries/jquery 79071891 ns/iter (± 478849) 78392449 ns/iter (± 399254) 1.01
es/minify/libraries/lodash 95564818 ns/iter (± 479153) 93920084 ns/iter (± 1334126) 1.02
es/minify/libraries/moment 46052848 ns/iter (± 242089) 45487741 ns/iter (± 303904) 1.01
es/minify/libraries/react 17062332 ns/iter (± 57505) 16831412 ns/iter (± 180391) 1.01
es/minify/libraries/terser 211035135 ns/iter (± 1345431) 207062347 ns/iter (± 1615327) 1.02
es/minify/libraries/three 371088341 ns/iter (± 4289014) 359371531 ns/iter (± 2982361) 1.03
es/minify/libraries/typescript 2632948971 ns/iter (± 5676888) 2622938596 ns/iter (± 12358300) 1.00
es/minify/libraries/victory 600225162 ns/iter (± 8288276) 567043851 ns/iter (± 9476212) 1.06
es/minify/libraries/vue 116677725 ns/iter (± 1233421) 114732270 ns/iter (± 747309) 1.02
es/visitor/compare/clone 2318201 ns/iter (± 19068) 2312439 ns/iter (± 14634) 1.00
es/visitor/compare/visit_mut_span 2661323 ns/iter (± 7688) 2647609 ns/iter (± 5522) 1.01
es/visitor/compare/visit_mut_span_panic 2703329 ns/iter (± 9033) 2712570 ns/iter (± 4506) 1.00
es/visitor/compare/fold_span 3780523 ns/iter (± 15571) 3792094 ns/iter (± 15200) 1.00
es/visitor/compare/fold_span_panic 3925816 ns/iter (± 12460) 3942580 ns/iter (± 8426) 1.00
es/lexer/colors 15399 ns/iter (± 12) 15448 ns/iter (± 319) 1.00
es/lexer/angular 7399315 ns/iter (± 7875) 7430708 ns/iter (± 5323) 1.00
es/lexer/backbone 987351 ns/iter (± 522) 989464 ns/iter (± 988) 1.00
es/lexer/jquery 5556336 ns/iter (± 4400) 5583310 ns/iter (± 3902) 1.00
es/lexer/jquery mobile 8556375 ns/iter (± 4849) 8572902 ns/iter (± 16437) 1.00
es/lexer/mootools 4410428 ns/iter (± 11005) 4424705 ns/iter (± 4020) 1.00
es/lexer/underscore 832504 ns/iter (± 517) 835646 ns/iter (± 1047) 1.00
es/lexer/three 26154534 ns/iter (± 37513) 26217358 ns/iter (± 77137) 1.00
es/lexer/yui 4653380 ns/iter (± 5278) 4670024 ns/iter (± 4271) 1.00
es/parser/colors 29164 ns/iter (± 46) 29290 ns/iter (± 111) 1.00
es/parser/angular 17152675 ns/iter (± 285922) 15266136 ns/iter (± 154913) 1.12
es/parser/backbone 2280165 ns/iter (± 21192) 2225675 ns/iter (± 13093) 1.02
es/parser/jquery 13850924 ns/iter (± 423405) 12158027 ns/iter (± 107530) 1.14
es/parser/jquery mobile 21727797 ns/iter (± 377531) 19131014 ns/iter (± 184241) 1.14
es/parser/mootools 10070037 ns/iter (± 101046) 9273294 ns/iter (± 38444) 1.09
es/parser/underscore 1900777 ns/iter (± 8524) 1880196 ns/iter (± 12095) 1.01
es/parser/three 56601175 ns/iter (± 497544) 57133848 ns/iter (± 666041) 0.99
es/parser/yui 9253553 ns/iter (± 72728) 9257893 ns/iter (± 78122) 1.00
es/preset-env/usage/builtin_type 143235 ns/iter (± 34211) 144162 ns/iter (± 34986) 0.99
es/preset-env/usage/property 21418 ns/iter (± 90) 21118 ns/iter (± 166) 1.01
es/resolver/typescript 125503207 ns/iter (± 3501918) 122929684 ns/iter (± 2445151) 1.02
es/fixer/typescript 90878441 ns/iter (± 2676079) 86668790 ns/iter (± 1117811) 1.05
es/hygiene/typescript 191030363 ns/iter (± 2460193) 186087163 ns/iter (± 1570260) 1.03
es/resolver_with_hygiene/typescript 349503752 ns/iter (± 2007629) 323621828 ns/iter (± 1517478) 1.08
es/visitor/base-perf/module_clone 79928 ns/iter (± 687) 80215 ns/iter (± 1418) 1.00
es/visitor/base-perf/fold_empty 89494 ns/iter (± 1264) 89223 ns/iter (± 1738) 1.00
es/visitor/base-perf/fold_noop_impl_all 89308 ns/iter (± 1374) 90233 ns/iter (± 1594) 0.99
es/visitor/base-perf/fold_noop_impl_vec 90240 ns/iter (± 1094) 90198 ns/iter (± 1532) 1.00
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 56 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 53 ns/iter (± 0) 54 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_boxed 103 ns/iter (± 0) 104 ns/iter (± 0) 0.99
es/visitor/base-perf/boxing_unboxed 99 ns/iter (± 0) 105 ns/iter (± 0) 0.94
es/visitor/base-perf/visit_contains_this 3509 ns/iter (± 88) 3379 ns/iter (± 78) 1.04
es/base/parallel/resolver/typescript 7097046157 ns/iter (± 545388083) 6714561210 ns/iter (± 340888489) 1.06
es/base/parallel/hygiene/typescript 2180118476 ns/iter (± 12676137) 2247780142 ns/iter (± 37771607) 0.97
misc/visitors/time-complexity/time 5 95 ns/iter (± 0) 95 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 292 ns/iter (± 4) 294 ns/iter (± 8) 0.99
misc/visitors/time-complexity/time 15 599 ns/iter (± 16) 599 ns/iter (± 7) 1
misc/visitors/time-complexity/time 20 1127 ns/iter (± 53) 1140 ns/iter (± 16) 0.99
misc/visitors/time-complexity/time 40 5969 ns/iter (± 26) 6033 ns/iter (± 85) 0.99
misc/visitors/time-complexity/time 60 15561 ns/iter (± 27) 15206 ns/iter (± 40) 1.02
es/full-target/es2016 250746 ns/iter (± 501) 250198 ns/iter (± 522) 1.00
es/full-target/es2017 242502 ns/iter (± 836) 243323 ns/iter (± 696) 1.00
es/full-target/es2018 231992 ns/iter (± 355) 231965 ns/iter (± 560) 1.00
es2020_nullish_coalescing 90741 ns/iter (± 435) 90225 ns/iter (± 403) 1.01
es2020_optional_chaining 124351 ns/iter (± 442) 123400 ns/iter (± 442) 1.01
es2022_class_properties 146822 ns/iter (± 227) 147148 ns/iter (± 1004) 1.00
es2018_object_rest_spread 94731 ns/iter (± 173) 94193 ns/iter (± 428) 1.01
es2019_optional_catch_binding 83942 ns/iter (± 202) 83995 ns/iter (± 209) 1.00
es2017_async_to_generator 84468 ns/iter (± 236) 84443 ns/iter (± 184) 1.00
es2016_exponentiation 88685 ns/iter (± 246) 88576 ns/iter (± 498) 1.00
es2015_arrow 93072 ns/iter (± 534) 92853 ns/iter (± 398) 1.00
es2015_block_scoped_fn 90115 ns/iter (± 467) 89908 ns/iter (± 348) 1.00
es2015_block_scoping 169646 ns/iter (± 349) 168572 ns/iter (± 686) 1.01

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

Please sign in to comment.