Skip to content

Commit 55a7097

Browse files
authored
do not clone the receiver (#57)
1 parent 668245b commit 55a7097

9 files changed

+19
-12
lines changed

src/compiler/transformers/classFields.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -326,9 +326,7 @@ namespace ts {
326326
}
327327

328328
function createPrivateIdentifierAccess(info: PrivateIdentifierInfo, receiver: Expression): Expression {
329-
receiver = visitNode(receiver, visitor, isExpression);
330-
const synthesizedReceiver = nodeIsSynthesized(receiver) ? receiver : factory.cloneNode(receiver);
331-
return createPrivateIdentifierAccessHelper(info, synthesizedReceiver);
329+
return createPrivateIdentifierAccessHelper(info, visitNode(receiver, visitor, isExpression));
332330
}
333331

334332
function createPrivateIdentifierAccessHelper(info: PrivateIdentifierInfo, receiver: Expression): Expression {

tests/baselines/reference/privateNameAndAny.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,13 @@ class A {
4141
}
4242
method(thing) {
4343
__classPrivateFieldGet(thing, _A_foo, "f"); // OK
44-
__classPrivateFieldGet(thing, _a, "m", _A_m).call(// OK
44+
__classPrivateFieldGet(// OK
45+
thing, _a, "m", _A_m).call(// OK
4546
thing);
4647
__classPrivateFieldGet(thing, _a, "f", _A_baz);
4748
thing.; // Error
48-
__classPrivateFieldGet(thing, _A_foo, "f").call(// Error
49+
__classPrivateFieldGet(// Error
50+
thing, _A_foo, "f").call(// Error
4951
thing);
5052
}
5153
methodU(thing) {

tests/baselines/reference/privateNameMethod.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ class A1 {
2525
_A1_instances.add(this);
2626
__classPrivateFieldGet(this, _A1_instances, "m", _A1_method).call(this, "");
2727
__classPrivateFieldGet(this, _A1_instances, "m", _A1_method).call(this, 1); // Error
28-
__classPrivateFieldGet(this, _A1_instances, "m", _A1_method).call(// Error
28+
__classPrivateFieldGet(// Error
29+
this, _A1_instances, "m", _A1_method).call(// Error
2930
this); // Error
3031
}
3132
}

tests/baselines/reference/privateNameNestedMethodAccess.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ class C {
4343
_D_instances.add(this);
4444
__classPrivateFieldGet(new C(), _C_foo, "f");
4545
__classPrivateFieldGet(new C(), _D_instances, "m", _D_bar); // Error
46-
__classPrivateFieldGet(new C(), _C_instances, "a", _C_baz_get);
46+
__classPrivateFieldGet(// Error
47+
new C(), _C_instances, "a", _C_baz_get);
4748
__classPrivateFieldGet(new D(), _D_instances, "m", _D_bar);
4849
}
4950
n(x) {

tests/baselines/reference/privateNameStaticMethod.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ class A1 {
2424
constructor() {
2525
__classPrivateFieldGet(A1, _a, "m", _A1_method).call(A1, "");
2626
__classPrivateFieldGet(A1, _a, "m", _A1_method).call(A1, 1); // Error
27-
__classPrivateFieldGet(A1, _a, "m", _A1_method).call(// Error
27+
__classPrivateFieldGet(// Error
28+
A1, _a, "m", _A1_method).call(// Error
2829
A1); // Error
2930
}
3031
}

tests/baselines/reference/privateNamesAndStaticFields.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ class A {
4040
constructor() {
4141
__classPrivateFieldSet(A, _a, 3, "f", _A_foo);
4242
__classPrivateFieldGet(B, _a, "f", _A_foo); // Error
43-
__classPrivateFieldGet(B, _a, "f", _A_bar); // Error
43+
__classPrivateFieldGet(// Error
44+
B, _a, "f", _A_bar); // Error
4445
}
4546
}
4647
_a = A;

tests/baselines/reference/privateNamesConstructorChain-1.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ class Parent {
2727
}
2828
accessChildProps() {
2929
__classPrivateFieldGet(new Child(), _Parent_foo, "f"); // OK (`#foo` was added when `Parent`'s constructor was called on `child`)
30-
__classPrivateFieldGet(Child, _a, "f", _Parent_bar); // Error: not found
30+
__classPrivateFieldGet(// OK (`#foo` was added when `Parent`'s constructor was called on `child`)
31+
Child, _a, "f", _Parent_bar); // Error: not found
3132
}
3233
}
3334
_a = Parent, _Parent_foo = new WeakMap();

tests/baselines/reference/privateNamesConstructorChain-2.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ class Parent {
2929
}
3030
accessChildProps() {
3131
__classPrivateFieldGet(new Child(), _Parent_foo, "f"); // OK (`#foo` was added when `Parent`'s constructor was called on `child`)
32-
__classPrivateFieldGet(Child, _a, "f", _Parent_bar); // Error: not found
32+
__classPrivateFieldGet(// OK (`#foo` was added when `Parent`'s constructor was called on `child`)
33+
Child, _a, "f", _Parent_bar); // Error: not found
3334
}
3435
}
3536
_a = Parent, _Parent_foo = new WeakMap();

tests/baselines/reference/privateStaticNameShadowing.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ class X {
2828
_b = X, _X_m = function _X_m() {
2929
const X = {}; // shadow the class
3030
const _a = {}; // shadow the first generated var
31-
__classPrivateFieldGet(X, _b, "m", _X_m).call(// shadow the first generated var
31+
__classPrivateFieldGet(// shadow the first generated var
32+
X, _b, "m", _X_m).call(// shadow the first generated var
3233
X); // Should check with X as the receiver with _b as the class constructor
3334
return 1;
3435
};

0 commit comments

Comments
 (0)