Skip to content

Commit babdf4a

Browse files
committed
Don't transform privateIdentifiers for esnext target
1 parent 08306cf commit babdf4a

File tree

8 files changed

+233
-14
lines changed

8 files changed

+233
-14
lines changed

src/compiler/transformers/classFields.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ namespace ts {
204204
node.name,
205205
/*questionOrExclamationToken*/ undefined,
206206
/*type*/ undefined,
207-
/*initializer*/ undefined
207+
/*initializer*/ visitNode(node.initializer, visitor)
208208
);
209209
}
210210
// Create a temporary variable to store a computed property name (if necessary).
@@ -752,7 +752,10 @@ namespace ts {
752752
? updateComputedPropertyName(property.name, getGeneratedNameForNode(property.name))
753753
: property.name;
754754

755-
if (shouldTransformPrivateFields && isPrivateIdentifier(propertyName)) {
755+
if (isPrivateIdentifier(propertyName)) {
756+
if (!shouldTransformPrivateFields) {
757+
return undefined
758+
}
756759
const privateIdentifierInfo = accessPrivateIdentifier(propertyName);
757760
if (privateIdentifierInfo) {
758761
switch (privateIdentifierInfo.placement) {

tests/baselines/reference/privateNameAndStaticInitializer(target=esnext).js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,8 @@ class A {
1010
//// [privateNameAndStaticInitializer.js]
1111
class A {
1212
constructor() {
13-
this.#foo = 1;
14-
this.#prop = 2;
1513
}
16-
#foo;
17-
#prop;
14+
#foo = 1;
15+
#prop = 2;
1816
}
1917
A.inst = new A();

tests/baselines/reference/privateNameFieldDestructuredBinding(target=esnext).js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ class A {
2727
//// [privateNameFieldDestructuredBinding.js]
2828
class A {
2929
constructor() {
30-
this.#field = 1;
3130
this.otherObject = new A();
3231
let y;
3332
({ x: this.#field, y } = this.testObject());
@@ -38,7 +37,7 @@ class A {
3837
[this.#field = 2] = [];
3938
[this.otherObject.#field = 2] = [];
4039
}
41-
#field;
40+
#field = 1;
4241
testObject() {
4342
return { x: 10, y: 6 };
4443
}

tests/baselines/reference/privateNameFieldsESNext.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,20 @@ class C {
2424
class C {
2525
constructor() {
2626
this.a = 123;
27-
this.#a = 10;
2827
this.c = "hello";
29-
this.#something = () => 1234;
3028
}
31-
#a;
29+
#a = 10;
3230
#b;
3331
method() {
3432
console.log(this.#a);
3533
this.#a = "hello";
3634
console.log(this.#b);
3735
}
38-
static #m;
36+
static #m = "test";
3937
static #x;
4038
static test() {
4139
console.log(this.#m);
4240
console.log(this.#x = "test");
4341
}
44-
#something;
42+
#something = () => 1234;
4543
}
46-
C.#m = "test";
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
//// [privateNameFieldsESNextNested.ts]
2+
class C {
3+
// public fields should be transformed
4+
foo;
5+
bar = "hi bar";
6+
baz = () => {
7+
class D {
8+
// public fields should be transformed
9+
foo;
10+
bar = "hi bar nested under baz";
11+
// #private fields should not be transformed
12+
#foo;
13+
#bar = "hi #bar nested under baz"
14+
}
15+
}
16+
// #private fields should not be transformed
17+
#foo;
18+
#bar = "hi #bar"
19+
#baz = () => {
20+
class D {
21+
// public fields should be transformed
22+
foo;
23+
bar = "hi bar nested under #baz";
24+
// #private fields should not be transformed
25+
#foo;
26+
#bar = "hi #bar nested under #baz"
27+
}
28+
}
29+
}
30+
31+
32+
//// [privateNameFieldsESNextNested.js]
33+
class C {
34+
constructor() {
35+
this.bar = "hi bar";
36+
this.baz = () => {
37+
class D {
38+
constructor() {
39+
this.bar = "hi bar nested under baz";
40+
}
41+
// #private fields should not be transformed
42+
#foo;
43+
#bar = "hi #bar nested under baz";
44+
}
45+
};
46+
}
47+
// #private fields should not be transformed
48+
#foo;
49+
#bar = "hi #bar";
50+
#baz = () => {
51+
class D {
52+
constructor() {
53+
this.bar = "hi bar nested under #baz";
54+
}
55+
// #private fields should not be transformed
56+
#foo;
57+
#bar = "hi #bar nested under #baz";
58+
}
59+
};
60+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
=== tests/cases/conformance/classes/members/privateNames/privateNameFieldsESNextNested.ts ===
2+
class C {
3+
>C : Symbol(C, Decl(privateNameFieldsESNextNested.ts, 0, 0))
4+
5+
// public fields should be transformed
6+
foo;
7+
>foo : Symbol(C.foo, Decl(privateNameFieldsESNextNested.ts, 0, 9))
8+
9+
bar = "hi bar";
10+
>bar : Symbol(C.bar, Decl(privateNameFieldsESNextNested.ts, 2, 8))
11+
12+
baz = () => {
13+
>baz : Symbol(C.baz, Decl(privateNameFieldsESNextNested.ts, 3, 19))
14+
15+
class D {
16+
>D : Symbol(D, Decl(privateNameFieldsESNextNested.ts, 4, 17))
17+
18+
// public fields should be transformed
19+
foo;
20+
>foo : Symbol(D.foo, Decl(privateNameFieldsESNextNested.ts, 5, 17))
21+
22+
bar = "hi bar nested under baz";
23+
>bar : Symbol(D.bar, Decl(privateNameFieldsESNextNested.ts, 7, 16))
24+
25+
// #private fields should not be transformed
26+
#foo;
27+
>#foo : Symbol(D.#foo, Decl(privateNameFieldsESNextNested.ts, 8, 44))
28+
29+
#bar = "hi #bar nested under baz"
30+
>#bar : Symbol(D.#bar, Decl(privateNameFieldsESNextNested.ts, 10, 17))
31+
}
32+
}
33+
// #private fields should not be transformed
34+
#foo;
35+
>#foo : Symbol(C.#foo, Decl(privateNameFieldsESNextNested.ts, 13, 5))
36+
37+
#bar = "hi #bar"
38+
>#bar : Symbol(C.#bar, Decl(privateNameFieldsESNextNested.ts, 15, 9))
39+
40+
#baz = () => {
41+
>#baz : Symbol(C.#baz, Decl(privateNameFieldsESNextNested.ts, 16, 20))
42+
43+
class D {
44+
>D : Symbol(D, Decl(privateNameFieldsESNextNested.ts, 17, 18))
45+
46+
// public fields should be transformed
47+
foo;
48+
>foo : Symbol(D.foo, Decl(privateNameFieldsESNextNested.ts, 18, 17))
49+
50+
bar = "hi bar nested under #baz";
51+
>bar : Symbol(D.bar, Decl(privateNameFieldsESNextNested.ts, 20, 16))
52+
53+
// #private fields should not be transformed
54+
#foo;
55+
>#foo : Symbol(D.#foo, Decl(privateNameFieldsESNextNested.ts, 21, 45))
56+
57+
#bar = "hi #bar nested under #baz"
58+
>#bar : Symbol(D.#bar, Decl(privateNameFieldsESNextNested.ts, 23, 17))
59+
}
60+
}
61+
}
62+
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
=== tests/cases/conformance/classes/members/privateNames/privateNameFieldsESNextNested.ts ===
2+
class C {
3+
>C : C
4+
5+
// public fields should be transformed
6+
foo;
7+
>foo : any
8+
9+
bar = "hi bar";
10+
>bar : string
11+
>"hi bar" : "hi bar"
12+
13+
baz = () => {
14+
>baz : () => void
15+
>() => { class D { // public fields should be transformed foo; bar = "hi bar nested under baz"; // #private fields should not be transformed #foo; #bar = "hi #bar nested under baz" } } : () => void
16+
17+
class D {
18+
>D : D
19+
20+
// public fields should be transformed
21+
foo;
22+
>foo : any
23+
24+
bar = "hi bar nested under baz";
25+
>bar : string
26+
>"hi bar nested under baz" : "hi bar nested under baz"
27+
28+
// #private fields should not be transformed
29+
#foo;
30+
>#foo : any
31+
32+
#bar = "hi #bar nested under baz"
33+
>#bar : string
34+
>"hi #bar nested under baz" : "hi #bar nested under baz"
35+
}
36+
}
37+
// #private fields should not be transformed
38+
#foo;
39+
>#foo : any
40+
41+
#bar = "hi #bar"
42+
>#bar : string
43+
>"hi #bar" : "hi #bar"
44+
45+
#baz = () => {
46+
>#baz : () => void
47+
>() => { class D { // public fields should be transformed foo; bar = "hi bar nested under #baz"; // #private fields should not be transformed #foo; #bar = "hi #bar nested under #baz" } } : () => void
48+
49+
class D {
50+
>D : D
51+
52+
// public fields should be transformed
53+
foo;
54+
>foo : any
55+
56+
bar = "hi bar nested under #baz";
57+
>bar : string
58+
>"hi bar nested under #baz" : "hi bar nested under #baz"
59+
60+
// #private fields should not be transformed
61+
#foo;
62+
>#foo : any
63+
64+
#bar = "hi #bar nested under #baz"
65+
>#bar : string
66+
>"hi #bar nested under #baz" : "hi #bar nested under #baz"
67+
}
68+
}
69+
}
70+
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// @target: esnext
2+
3+
class C {
4+
// public fields should be transformed
5+
foo;
6+
bar = "hi bar";
7+
baz = () => {
8+
class D {
9+
// public fields should be transformed
10+
foo;
11+
bar = "hi bar nested under baz";
12+
// #private fields should not be transformed
13+
#foo;
14+
#bar = "hi #bar nested under baz"
15+
}
16+
}
17+
// #private fields should not be transformed
18+
#foo;
19+
#bar = "hi #bar"
20+
#baz = () => {
21+
class D {
22+
// public fields should be transformed
23+
foo;
24+
bar = "hi bar nested under #baz";
25+
// #private fields should not be transformed
26+
#foo;
27+
#bar = "hi #bar nested under #baz"
28+
}
29+
}
30+
}

0 commit comments

Comments
 (0)