Skip to content

Commit 351c75c

Browse files
committed
private name tests strict+es6
Update private name tests to use 'strict' type checking and to target es6 instead of default. Makes the js output easier to read and tests more surface area with other checker features. Signed-off-by: Max Heiber <[email protected]>
1 parent a4bc65b commit 351c75c

File tree

89 files changed

+627
-354
lines changed

Some content is hidden

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

89 files changed

+627
-354
lines changed

tests/baselines/reference/privateNameAndIndexSignature.errors.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
tests/cases/conformance/classes/members/privateNames/privateNameAndIndexSignature.ts(4,14): error TS2339: Property '#f' does not exist on type 'A'.
1+
tests/cases/conformance/classes/members/privateNames/privateNameAndIndexSignature.ts(6,14): error TS2339: Property '#f' does not exist on type 'A'.
22

33

44
==== tests/cases/conformance/classes/members/privateNames/privateNameAndIndexSignature.ts (1 errors) ====
5+
// @target es6
6+
57
class A {
68
[k: string]: any;
79
constructor(message: string) {

tests/baselines/reference/privateNameAndIndexSignature.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//// [privateNameAndIndexSignature.ts]
2+
// @target es6
3+
24
class A {
35
[k: string]: any;
46
constructor(message: string) {
@@ -8,6 +10,8 @@ class A {
810

911

1012
//// [privateNameAndIndexSignature.js]
13+
"use strict";
14+
// @target es6
1115
var A = /** @class */ (function () {
1216
function A(message) {
1317
this.#f = 3; // Error Property '#f' does not exist on type 'A'.

tests/baselines/reference/privateNameAndIndexSignature.symbols

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
=== tests/cases/conformance/classes/members/privateNames/privateNameAndIndexSignature.ts ===
2+
// @target es6
3+
24
class A {
35
>A : Symbol(A, Decl(privateNameAndIndexSignature.ts, 0, 0))
46

57
[k: string]: any;
6-
>k : Symbol(k, Decl(privateNameAndIndexSignature.ts, 1, 5))
8+
>k : Symbol(k, Decl(privateNameAndIndexSignature.ts, 3, 5))
79

810
constructor(message: string) {
9-
>message : Symbol(message, Decl(privateNameAndIndexSignature.ts, 2, 16))
11+
>message : Symbol(message, Decl(privateNameAndIndexSignature.ts, 4, 16))
1012

1113
this.#f = 3 // Error Property '#f' does not exist on type 'A'.
1214
>this : Symbol(A, Decl(privateNameAndIndexSignature.ts, 0, 0))

tests/baselines/reference/privateNameAndIndexSignature.types

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
=== tests/cases/conformance/classes/members/privateNames/privateNameAndIndexSignature.ts ===
2+
// @target es6
3+
24
class A {
35
>A : A
46

tests/baselines/reference/privateNameConstructorReserved.errors.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
tests/cases/conformance/classes/members/privateNames/privateNameConstructorReserved.ts(2,5): error TS18006: '#constructor' is a reserved word.
1+
tests/cases/conformance/classes/members/privateNames/privateNameConstructorReserved.ts(4,5): error TS18006: '#constructor' is a reserved word.
22

33

44
==== tests/cases/conformance/classes/members/privateNames/privateNameConstructorReserved.ts (1 errors) ====
5+
// @target es6
6+
57
class A {
68
#constructor() {} // Error: `#constructor` is a reserved word.
79
~~~~~~~~~~~~

tests/baselines/reference/privateNameConstructorReserved.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
//// [privateNameConstructorReserved.ts]
2+
// @target es6
3+
24
class A {
35
#constructor() {} // Error: `#constructor` is a reserved word.
46
}
57

68

79
//// [privateNameConstructorReserved.js]
10+
// @target es6
811
var A = /** @class */ (function () {
912
function A() {
1013
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
=== tests/cases/conformance/classes/members/privateNames/privateNameConstructorReserved.ts ===
2+
// @target es6
3+
24
class A {
35
>A : Symbol(A, Decl(privateNameConstructorReserved.ts, 0, 0))
46

57
#constructor() {} // Error: `#constructor` is a reserved word.
6-
>#constructor : Symbol(A[#constructor], Decl(privateNameConstructorReserved.ts, 0, 9))
8+
>#constructor : Symbol(A.#constructor, Decl(privateNameConstructorReserved.ts, 2, 9))
79
}
810

tests/baselines/reference/privateNameConstructorReserved.types

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
=== tests/cases/conformance/classes/members/privateNames/privateNameConstructorReserved.ts ===
2+
// @target es6
3+
24
class A {
35
>A : A
46

tests/baselines/reference/privateNameDuplicateField.errors.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
tests/cases/conformance/classes/members/privateNames/privateNameDuplicateField.ts(3,5): error TS2300: Duplicate identifier '#foo'.
1+
tests/cases/conformance/classes/members/privateNames/privateNameDuplicateField.ts(5,5): error TS2300: Duplicate identifier '#foo'.
22

33

44
==== tests/cases/conformance/classes/members/privateNames/privateNameDuplicateField.ts (1 errors) ====
5+
// @target es6
6+
57
class A {
6-
#foo;
7-
#foo;
8+
#foo = "foo";
9+
#foo = "foo";
810
~~~~
911
!!! error TS2300: Duplicate identifier '#foo'.
1012
}
Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
//// [privateNameDuplicateField.ts]
2+
// @target es6
3+
24
class A {
3-
#foo;
4-
#foo;
5+
#foo = "foo";
6+
#foo = "foo";
57
}
68

79

810
//// [privateNameDuplicateField.js]
11+
// @target es6
12+
var _foo, _foo_1;
13+
"use strict";
914
var A = /** @class */ (function () {
1015
function A() {
16+
_foo_1.set(this, "foo");
17+
_foo_1.set(this, "foo");
1118
}
1219
return A;
1320
}());
21+
_foo = new WeakMap(), _foo_1 = new WeakMap();
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
=== tests/cases/conformance/classes/members/privateNames/privateNameDuplicateField.ts ===
2+
// @target es6
3+
24
class A {
35
>A : Symbol(A, Decl(privateNameDuplicateField.ts, 0, 0))
46

5-
#foo;
6-
>#foo : Symbol(A[#foo], Decl(privateNameDuplicateField.ts, 0, 9), Decl(privateNameDuplicateField.ts, 1, 9))
7+
#foo = "foo";
8+
>#foo : Symbol(A.#foo, Decl(privateNameDuplicateField.ts, 2, 9), Decl(privateNameDuplicateField.ts, 3, 17))
79

8-
#foo;
9-
>#foo : Symbol(A[#foo], Decl(privateNameDuplicateField.ts, 0, 9), Decl(privateNameDuplicateField.ts, 1, 9))
10+
#foo = "foo";
11+
>#foo : Symbol(A.#foo, Decl(privateNameDuplicateField.ts, 2, 9), Decl(privateNameDuplicateField.ts, 3, 17))
1012
}
1113

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
=== tests/cases/conformance/classes/members/privateNames/privateNameDuplicateField.ts ===
2+
// @target es6
3+
24
class A {
35
>A : A
46

5-
#foo;
6-
>#foo : any
7+
#foo = "foo";
8+
>#foo : string
9+
>"foo" : "foo"
710

8-
#foo;
9-
>#foo : any
11+
#foo = "foo";
12+
>#foo : string
13+
>"foo" : "foo"
1014
}
1115

tests/baselines/reference/privateNameField.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//// [privateNameField.ts]
2+
// @target es6
3+
24
class A {
35
#name: string;
46
constructor(name: string) {
@@ -7,8 +9,10 @@ class A {
79
}
810

911
//// [privateNameField.js]
12+
// @target es6
1013
var _classPrivateFieldSet = function (receiver, privateMap, value) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to set private field on non-instance"); } privateMap.set(receiver, value); return value; };
1114
var _name;
15+
"use strict";
1216
var A = /** @class */ (function () {
1317
function A(name) {
1418
_name.set(this, void 0);
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
=== tests/cases/conformance/classes/members/privateNames/privateNameField.ts ===
2+
// @target es6
3+
24
class A {
35
>A : Symbol(A, Decl(privateNameField.ts, 0, 0))
46

57
#name: string;
6-
>#name : Symbol(A.#name, Decl(privateNameField.ts, 0, 9))
8+
>#name : Symbol(A.#name, Decl(privateNameField.ts, 2, 9))
79

810
constructor(name: string) {
9-
>name : Symbol(name, Decl(privateNameField.ts, 2, 16))
11+
>name : Symbol(name, Decl(privateNameField.ts, 4, 16))
1012

1113
this.#name = name;
12-
>this.#name : Symbol(A.#name, Decl(privateNameField.ts, 0, 9))
14+
>this.#name : Symbol(A.#name, Decl(privateNameField.ts, 2, 9))
1315
>this : Symbol(A, Decl(privateNameField.ts, 0, 0))
14-
>name : Symbol(name, Decl(privateNameField.ts, 2, 16))
16+
>name : Symbol(name, Decl(privateNameField.ts, 4, 16))
1517
}
1618
}

tests/baselines/reference/privateNameField.types

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
=== tests/cases/conformance/classes/members/privateNames/privateNameField.ts ===
2+
// @target es6
3+
24
class A {
35
>A : A
46

tests/baselines/reference/privateNameNotAccessibleOutsideDefiningClass.errors.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
tests/cases/conformance/classes/members/privateNames/privateNameNotAccessibleOutsideDefiningClass.ts(5,9): error TS2339: Property '#foo' does not exist on type 'A'.
2-
tests/cases/conformance/classes/members/privateNames/privateNameNotAccessibleOutsideDefiningClass.ts(5,9): error TS18007: Property '#foo' is not accessible outside class 'A' because it has a private name.
1+
tests/cases/conformance/classes/members/privateNames/privateNameNotAccessibleOutsideDefiningClass.ts(7,9): error TS2339: Property '#foo' does not exist on type 'A'.
2+
tests/cases/conformance/classes/members/privateNames/privateNameNotAccessibleOutsideDefiningClass.ts(7,9): error TS18007: Property '#foo' is not accessible outside class 'A' because it has a private name.
33

44

55
==== tests/cases/conformance/classes/members/privateNames/privateNameNotAccessibleOutsideDefiningClass.ts (2 errors) ====
6+
// @target es6
7+
68
class A {
79
#foo: number = 3;
810
}
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
//// [privateNameNotAccessibleOutsideDefiningClass.ts]
2+
// @target es6
3+
24
class A {
35
#foo: number = 3;
46
}
@@ -7,10 +9,14 @@ new A().#foo = 4; // Error
79

810

911
//// [privateNameNotAccessibleOutsideDefiningClass.js]
12+
// @target es6
13+
var _foo;
14+
"use strict";
1015
var A = /** @class */ (function () {
1116
function A() {
12-
this.#foo = 3;
17+
_foo.set(this, 3);
1318
}
1419
return A;
1520
}());
21+
_foo = new WeakMap();
1622
new A().#foo = 4; // Error

tests/baselines/reference/privateNameNotAccessibleOutsideDefiningClass.symbols

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
=== tests/cases/conformance/classes/members/privateNames/privateNameNotAccessibleOutsideDefiningClass.ts ===
2+
// @target es6
3+
24
class A {
35
>A : Symbol(A, Decl(privateNameNotAccessibleOutsideDefiningClass.ts, 0, 0))
46

57
#foo: number = 3;
6-
>#foo : Symbol(A[#foo], Decl(privateNameNotAccessibleOutsideDefiningClass.ts, 0, 9))
8+
>#foo : Symbol(A.#foo, Decl(privateNameNotAccessibleOutsideDefiningClass.ts, 2, 9))
79
}
810

911
new A().#foo = 4; // Error

tests/baselines/reference/privateNameNotAccessibleOutsideDefiningClass.types

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
=== tests/cases/conformance/classes/members/privateNames/privateNameNotAccessibleOutsideDefiningClass.ts ===
2+
// @target es6
3+
24
class A {
35
>A : A
46

tests/baselines/reference/privateNameNotAllowedOutsideClass.errors.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
tests/cases/conformance/classes/members/privateNames/privateNameNotAllowedOutsideClass.ts(1,7): error TS1134: Variable declaration expected.
2-
tests/cases/conformance/classes/members/privateNames/privateNameNotAllowedOutsideClass.ts(1,12): error TS1134: Variable declaration expected.
3-
tests/cases/conformance/classes/members/privateNames/privateNameNotAllowedOutsideClass.ts(1,14): error TS1134: Variable declaration expected.
1+
tests/cases/conformance/classes/members/privateNames/privateNameNotAllowedOutsideClass.ts(3,7): error TS1134: Variable declaration expected.
2+
tests/cases/conformance/classes/members/privateNames/privateNameNotAllowedOutsideClass.ts(3,12): error TS1134: Variable declaration expected.
3+
tests/cases/conformance/classes/members/privateNames/privateNameNotAllowedOutsideClass.ts(3,14): error TS1134: Variable declaration expected.
44

55

66
==== tests/cases/conformance/classes/members/privateNames/privateNameNotAllowedOutsideClass.ts (3 errors) ====
7+
// @target es6
8+
79
const #foo = 3;
810
~~~~
911
!!! error TS1134: Variable declaration expected.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
//// [privateNameNotAllowedOutsideClass.ts]
2+
// @target es6
3+
24
const #foo = 3;
35

46
//// [privateNameNotAllowedOutsideClass.js]
7+
"use strict";
8+
// @target es6
59
var ;
610
3;
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
=== tests/cases/conformance/classes/members/privateNames/privateNameNotAllowedOutsideClass.ts ===
2-
const #foo = 3;
2+
// @target es6
3+
No type information for this code.
4+
No type information for this code.const #foo = 3;
35
No type information for this code.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
=== tests/cases/conformance/classes/members/privateNames/privateNameNotAllowedOutsideClass.ts ===
2+
// @target es6
3+
24
const #foo = 3;
35
>3 : 3
46

tests/baselines/reference/privateNameSneakyRuntimeException.js

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
//// [privateNameSneakyRuntimeException.ts]
2+
// @target es6
3+
24
function createClass () {
35
return class {
4-
#foo;
5-
equals(other) {
6+
#foo = 3;
7+
equals(other: any) {
68
return this.#foo = other.#foo;
79
}
810
};
@@ -15,15 +17,23 @@ console.log(a.equals(b)); // OK at compile time but will be a runtime error
1517

1618

1719
//// [privateNameSneakyRuntimeException.js]
20+
"use strict";
21+
// @target es6
22+
var _classPrivateFieldGet = function (receiver, privateMap) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return privateMap.get(receiver); };
23+
var _classPrivateFieldSet = function (receiver, privateMap, value) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to set private field on non-instance"); } privateMap.set(receiver, value); return value; };
1824
function createClass() {
19-
return /** @class */ (function () {
20-
function class_1() {
21-
}
22-
class_1.prototype.equals = function (other) {
23-
return this.#foo = other.#foo;
24-
};
25-
return class_1;
26-
}());
25+
var _foo, _a;
26+
return _a = /** @class */ (function () {
27+
function class_1() {
28+
_foo.set(this, 3);
29+
}
30+
class_1.prototype.equals = function (other) {
31+
return _classPrivateFieldSet(this, _foo, _classPrivateFieldGet(other, _foo));
32+
};
33+
return class_1;
34+
}()),
35+
_foo = new WeakMap(),
36+
_a;
2737
}
2838
var a = new (createClass())();
2939
var b = new (createClass())();

0 commit comments

Comments
 (0)