Skip to content

Commit

Permalink
fix(es/compat): Handle private names from class properties pass (#8090)
Browse files Browse the repository at this point in the history
**Related issue:**

 - Closes #7561
 - vercel/next.js#56612
  • Loading branch information
kdy1 committed Nov 2, 2023
1 parent 407aa63 commit 83a5a0c
Show file tree
Hide file tree
Showing 52 changed files with 2,723 additions and 1,103 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion crates/swc/src/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -223,8 +223,10 @@ impl<'a, 'b, P: swc_ecma_visit::Fold> PassBuilder<'a, 'b, P> {
set_public_fields: assumptions.set_public_class_fields,
no_document_all: assumptions.no_document_all,
static_blocks_mark: Mark::new(),
pure_getter: assumptions.pure_getters,
}
}
},
self.unresolved_mark
),
should_enable(self.target, EsVersion::Es2022)
),
Expand Down
19 changes: 19 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7561/es2019/input/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"jsc": {
"parser": {
"syntax": "ecmascript",
"jsx": false
},
"target": "es2019",
"loose": false,
"minify": {
"compress": false,
"mangle": false
}
},
"module": {
"type": "commonjs"
},
"minify": false,
"isModule": false
}
7 changes: 7 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7561/es2019/input/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class Foo {
#x;

test() {
this?.y.#x
}
}
15 changes: 15 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7561/es2019/output/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
var _class_private_field_get = require("@swc/helpers/_/_class_private_field_get");
var _class_private_field_init = require("@swc/helpers/_/_class_private_field_init");
var _x = /*#__PURE__*/ new WeakMap();
class Foo {
test() {
var _this, _this_y;
(_this = this) === null || _this === void 0 ? void 0 : _class_private_field_get._(_this_y = _this.y, _x);
}
constructor(){
_class_private_field_init._(this, _x, {
writable: true,
value: void 0
});
}
}
19 changes: 19 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7561/es2021/input/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"jsc": {
"parser": {
"syntax": "ecmascript",
"jsx": false
},
"target": "es2021",
"loose": false,
"minify": {
"compress": false,
"mangle": false
}
},
"module": {
"type": "commonjs"
},
"minify": false,
"isModule": false
}
7 changes: 7 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7561/es2021/input/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class Foo {
#x;

test() {
this?.y.#x
}
}
15 changes: 15 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7561/es2021/output/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
var _class_private_field_get = require("@swc/helpers/_/_class_private_field_get");
var _class_private_field_init = require("@swc/helpers/_/_class_private_field_init");
var _x = /*#__PURE__*/ new WeakMap();
class Foo {
test() {
var _this, _this_y;
(_this = this) === null || _this === void 0 ? void 0 : _class_private_field_get._(_this_y = _this.y, _x);
}
constructor(){
_class_private_field_init._(this, _x, {
writable: true,
value: void 0
});
}
}
19 changes: 19 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7561/es2022/input/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"jsc": {
"parser": {
"syntax": "ecmascript",
"jsx": false
},
"target": "es2022",
"loose": false,
"minify": {
"compress": false,
"mangle": false
}
},
"module": {
"type": "commonjs"
},
"minify": false,
"isModule": false
}
7 changes: 7 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7561/es2022/input/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class Foo {
#x;

test() {
this?.y.#x
}
}
6 changes: 6 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7561/es2022/output/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class Foo {
#x;
test() {
this?.y.#x;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@ import { _ as _class_private_field_set } from "@swc/helpers/_/_class_private_fie
var _fieldFunc = /*#__PURE__*/ new WeakMap(), _fieldFunc2 = /*#__PURE__*/ new WeakMap();
class A {
test() {
var _class_private_field_get1;
var _this_getInstance;
var _this, _this1, _ref, _this_getInstance;
_class_private_field_get(this, _fieldFunc).call(this);
(_class_private_field_get1 = _class_private_field_get(this, _fieldFunc)) === null || _class_private_field_get1 === void 0 ? void 0 : _class_private_field_get1.call(this);
(_this = _class_private_field_get(_ref = _this1 = this, _fieldFunc)) === null || _this === void 0 ? void 0 : _this.call(_this1);
const func = _class_private_field_get(this, _fieldFunc);
func();
new (_class_private_field_get(this, _fieldFunc))();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
import { _ as _class_static_private_field_spec_get } from "@swc/helpers/_/_class_static_private_field_spec_get";
class A {
test() {
var _class_static_private_field_spec_get1;
var _this;
_class_static_private_field_spec_get(A, A, _fieldFunc).call(A);
(_class_static_private_field_spec_get1 = _class_static_private_field_spec_get(A, A, _fieldFunc)) === null || _class_static_private_field_spec_get1 === void 0 ? void 0 : _class_static_private_field_spec_get1.call(A);
(_this = _class_static_private_field_spec_get(A, A, _fieldFunc)) === null || _this === void 0 ? void 0 : _this.call(A);
const func = _class_static_private_field_spec_get(A, A, _fieldFunc);
func();
new (_class_static_private_field_spec_get(A, A, _fieldFunc))();
Expand Down
1 change: 1 addition & 0 deletions crates/swc_ecma_compat_es2020/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ serde = { version = "1.0.188", features = ["derive"] }
swc_atoms = { version = "0.6.0", path = "../swc_atoms" }
swc_common = { version = "0.33.2", path = "../swc_common" }
swc_ecma_ast = { version = "0.110.2", path = "../swc_ecma_ast" }
swc_ecma_compat_es2022 = { version = "0.1.9", path = "../swc_ecma_compat_es2022" }
swc_ecma_transforms_base = { version = "0.134.13", path = "../swc_ecma_transforms_base" }
swc_ecma_utils = { version = "0.124.11", path = "../swc_ecma_utils" }
swc_ecma_visit = { version = "0.96.2", path = "../swc_ecma_visit" }
Expand Down

0 comments on commit 83a5a0c

Please sign in to comment.