Skip to content

Commit cad18fa

Browse files
authored
feat(es/compat): Implement auto accessors fully (#7370)
**Related issue:** - Closes #7193.
1 parent a2577ad commit cad18fa

File tree

64 files changed

+1499
-766
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+1499
-766
lines changed

crates/swc_ecma_transforms_proposal/src/decorator_2022_03.rs

+317-164
Large diffs are not rendered by default.

crates/swc_ecma_transforms_proposal/tests/decorators.rs

-7
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@ fn exec(input: PathBuf) {
3131
fn exec_inner(input: PathBuf) {
3232
let code = std::fs::read_to_string(&input).unwrap();
3333

34-
if code.contains("accessor ") {
35-
return;
36-
}
37-
3834
swc_ecma_transforms_testing::exec_tr(
3935
"decorator",
4036
Syntax::Typescript(TsConfig {
@@ -53,9 +49,6 @@ fn fixture(input: PathBuf) {
5349

5450
fn fixture_inner(input: PathBuf) {
5551
let src = std::fs::read_to_string(&input).unwrap();
56-
if src.contains("accessor ") {
57-
return;
58-
}
5952

6053
let output = input.with_file_name("output.js");
6154

crates/swc_ecma_transforms_proposal/tests/decorators/2022-03-accessors--to-es2015/private/output.js

+58-41
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,64 @@
1-
var _init_a, _get_a, _set_a, _init_b, _get_b, _set_b, _initProto;
2-
const dec = () => { };
3-
var _A = /*#__PURE__*/new WeakMap();
4-
var _a = /*#__PURE__*/new WeakMap();
5-
var _B = /*#__PURE__*/new WeakMap();
6-
var _b = /*#__PURE__*/new WeakMap();
1+
var _init_a, _get___a, _set___a, _init_b, _get___b, _set___b, _initProto;
2+
const dec = ()=>{};
3+
var ___a = /*#__PURE__*/ new WeakMap(), _a = /*#__PURE__*/ new WeakMap(), ___b = /*#__PURE__*/ new WeakMap(), _b = /*#__PURE__*/ new WeakMap();
74
class Foo {
8-
constructor() {
9-
classPrivateFieldInitSpec(this, _b, {
10-
get: _get_b2,
11-
set: _set_b2
12-
});
13-
classPrivateFieldInitSpec(this, _a, {
14-
get: _get_a2,
15-
set: _set_a2
16-
});
17-
classPrivateFieldInitSpec(this, _A, {
18-
writable: true,
19-
value: (_initProto(this), _init_a(this))
20-
});
21-
classPrivateFieldInitSpec(this, _B, {
22-
writable: true,
23-
value: _init_b(this, 123)
24-
});
25-
}
5+
constructor(){
6+
_class_private_field_init(this, _a, {
7+
get: get_a,
8+
set: set_a
9+
});
10+
_class_private_field_init(this, _b, {
11+
get: get_b,
12+
set: set_b
13+
});
14+
_class_private_field_init(this, ___a, {
15+
writable: true,
16+
value: (_initProto(this), _init_a(this))
17+
});
18+
_class_private_field_init(this, ___b, {
19+
writable: true,
20+
value: _init_b(this, 123)
21+
});
22+
}
2623
}
27-
function _set_a2(v) {
28-
_set_a(this, v);
24+
var __ = {
25+
writable: true,
26+
value: (()=>{
27+
({ e: [_init_a, _get___a, _set___a, _init_b, _get___b, _set___b, _initProto] } = _apply_decs_2203_r(Foo, [
28+
[
29+
dec,
30+
1,
31+
"a",
32+
function() {
33+
return _class_private_field_get(this, ___a);
34+
},
35+
function(_v) {
36+
_class_private_field_set(this, ___a, _v);
37+
}
38+
],
39+
[
40+
dec,
41+
1,
42+
"b",
43+
function() {
44+
return _class_private_field_get(this, ___b);
45+
},
46+
function(_v) {
47+
_class_private_field_set(this, ___b, _v);
48+
}
49+
]
50+
], []));
51+
})()
52+
};
53+
function get_a() {
54+
return _get___a(this);
2955
}
30-
function _get_a2() {
31-
return _get_a(this);
56+
function set_a(_v) {
57+
_set___a(this, _v);
3258
}
33-
function _set_b2(v) {
34-
_set_b(this, v);
59+
function get_b() {
60+
return _get___b(this);
3561
}
36-
function _get_b2() {
37-
return _get_b(this);
62+
function set_b(_v) {
63+
_set___b(this, _v);
3864
}
39-
[_init_a, _get_a, _set_a, _init_b, _get_b, _set_b, _initProto] = _applyDecs2203R(Foo, [[dec, 1, "a", function () {
40-
return classPrivateFieldGet(this, _A);
41-
}, function (value) {
42-
classPrivateFieldSet(this, _A, value);
43-
}], [dec, 1, "b", function () {
44-
return classPrivateFieldGet(this, _B);
45-
}, function (value) {
46-
classPrivateFieldSet(this, _B, value);
47-
}]], []).e;
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,61 @@
11
var _init_a, _init_b, _computedKey, _init_computedKey, _initProto;
2-
const dec = () => { };
2+
const dec = ()=>{};
33
_computedKey = 'c';
4-
var _A = /*#__PURE__*/new WeakMap();
5-
var _B = /*#__PURE__*/new WeakMap();
6-
var _C = /*#__PURE__*/new WeakMap();
4+
var ____private_a = /*#__PURE__*/ new WeakMap(), ____private_b = /*#__PURE__*/ new WeakMap(), ____private_computedKey = /*#__PURE__*/ new WeakMap();
5+
let _computedKey1 = _computedKey, _computedKey2 = _computedKey;
76
class Foo {
8-
constructor() {
9-
classPrivateFieldInitSpec(this, _A, {
10-
writable: true,
11-
value: (_initProto(this), _init_a(this))
12-
});
13-
classPrivateFieldInitSpec(this, _B, {
14-
writable: true,
15-
value: _init_b(this, 123)
16-
});
17-
classPrivateFieldInitSpec(this, _C, {
18-
writable: true,
19-
value: _init_computedKey(this, 456)
20-
});
21-
}
22-
get a() {
23-
return classPrivateFieldGet(this, _A);
24-
}
25-
set a(v) {
26-
classPrivateFieldSet(this, _A, v);
27-
}
28-
get b() {
29-
return classPrivateFieldGet(this, _B);
30-
}
31-
set b(v) {
32-
classPrivateFieldSet(this, _B, v);
33-
}
34-
get [_computedKey]() {
35-
return classPrivateFieldGet(this, _C);
36-
}
37-
set [_computedKey](v) {
38-
classPrivateFieldSet(this, _C, v);
39-
}
7+
get a() {
8+
return _class_private_field_get(this, ____private_a);
9+
}
10+
set a(_v) {
11+
_class_private_field_set(this, ____private_a, _v);
12+
}
13+
get b() {
14+
return _class_private_field_get(this, ____private_b);
15+
}
16+
set b(_v) {
17+
_class_private_field_set(this, ____private_b, _v);
18+
}
19+
get [_computedKey1]() {
20+
return _class_private_field_get(this, ____private_computedKey);
21+
}
22+
set [_computedKey2](_v) {
23+
_class_private_field_set(this, ____private_computedKey, _v);
24+
}
25+
constructor(){
26+
_class_private_field_init(this, ____private_a, {
27+
writable: true,
28+
value: (_initProto(this), _init_a(this))
29+
});
30+
_class_private_field_init(this, ____private_b, {
31+
writable: true,
32+
value: _init_b(this, 123)
33+
});
34+
_class_private_field_init(this, ____private_computedKey, {
35+
writable: true,
36+
value: _init_computedKey(this, 456)
37+
});
38+
}
4039
}
41-
[_init_a, _init_b, _init_computedKey, _initProto] = _applyDecs2203R(Foo, [[dec, 1, "a"], [dec, 1, "b"], [dec, 1, _computedKey]], []).e;
40+
var __ = {
41+
writable: true,
42+
value: (()=>{
43+
({ e: [_init_a, _init_b, _init_computedKey, _initProto] } = _apply_decs_2203_r(Foo, [
44+
[
45+
dec,
46+
1,
47+
"a"
48+
],
49+
[
50+
dec,
51+
1,
52+
"b"
53+
],
54+
[
55+
dec,
56+
1,
57+
_computedKey
58+
]
59+
], []));
60+
})()
61+
};

crates/swc_ecma_transforms_proposal/tests/decorators/2022-03-accessors--to-es2015/static-private/output.js

+56-42
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,62 @@
1-
var _init_a, _get_a, _set_a, _init_b, _get_b, _set_b, _initStatic;
2-
const dec = () => { };
3-
var _a = /*#__PURE__*/new WeakMap();
4-
var _b = /*#__PURE__*/new WeakMap();
1+
var _init_a, _get___a, _set___a, _init_b, _get___b, _set___b, _initStatic;
2+
const dec = ()=>{};
53
class Foo {
6-
constructor() {
7-
classPrivateFieldInitSpec(this, _b, {
8-
get: _get_b2,
9-
set: _set_b2
10-
});
11-
classPrivateFieldInitSpec(this, _a, {
12-
get: _get_a2,
13-
set: _set_a2
14-
});
15-
}
164
}
17-
function _set_a2(v) {
18-
_set_a(this, v);
5+
var _a = {
6+
get: get_a,
7+
set: set_a
8+
};
9+
var _b = {
10+
get: get_b,
11+
set: set_b
12+
};
13+
var __ = {
14+
writable: true,
15+
value: (()=>{
16+
({ e: [_init_a, _get___a, _set___a, _init_b, _get___b, _set___b, _initStatic] } = _apply_decs_2203_r(Foo, [
17+
[
18+
dec,
19+
6,
20+
"a",
21+
function() {
22+
return _class_static_private_field_spec_get(this, Foo, ___a);
23+
},
24+
function(_v) {
25+
_class_static_private_field_spec_set(this, Foo, ___a, _v);
26+
}
27+
],
28+
[
29+
dec,
30+
6,
31+
"b",
32+
function() {
33+
return _class_static_private_field_spec_get(this, Foo, ___b);
34+
},
35+
function(_v) {
36+
_class_static_private_field_spec_set(this, Foo, ___b, _v);
37+
}
38+
]
39+
], []));
40+
_initStatic(Foo);
41+
})()
42+
};
43+
var ___a = {
44+
writable: true,
45+
value: _init_a(Foo)
46+
};
47+
var ___b = {
48+
writable: true,
49+
value: _init_b(Foo, 123)
50+
};
51+
function get_a() {
52+
return _get___a(this);
1953
}
20-
function _get_a2() {
21-
return _get_a(this);
54+
function set_a(_v) {
55+
_set___a(this, _v);
2256
}
23-
function _set_b2(v) {
24-
_set_b(this, v);
57+
function get_b() {
58+
return _get___b(this);
2559
}
26-
function _get_b2() {
27-
return _get_b(this);
60+
function set_b(_v) {
61+
_set___b(this, _v);
2862
}
29-
(() => {
30-
[_init_a, _get_a, _set_a, _init_b, _get_b, _set_b, _initStatic] = _applyDecs2203R(Foo, [[dec, 6, "a", function () {
31-
return classStaticPrivateFieldSpecGet(this, Foo, _A);
32-
}, function (value) {
33-
classStaticPrivateFieldSpecSet(this, Foo, _A, value);
34-
}], [dec, 6, "b", function () {
35-
return classStaticPrivateFieldSpecGet(this, Foo, _B);
36-
}, function (value) {
37-
classStaticPrivateFieldSpecSet(this, Foo, _B, value);
38-
}]], []).e;
39-
_initStatic(Foo);
40-
})();
41-
var _A = {
42-
writable: true,
43-
value: _init_a(Foo)
44-
};
45-
var _B = {
46-
writable: true,
47-
value: _init_b(Foo, 123)
48-
};

0 commit comments

Comments
 (0)