Skip to content

Commit c78a964

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 c78a964

File tree

86 files changed

+512
-294
lines changed

Some content is hidden

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

86 files changed

+512
-294
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: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
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+
"use strict";
12+
// @target es6
913
var A = /** @class */ (function () {
1014
function A() {
15+
this.#foo = "foo";
16+
this.#foo = "foo";
1117
}
1218
return A;
1319
}());
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

Lines changed: 5 additions & 5 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,13 +9,11 @@ class A {
79
}
810

911
//// [privateNameField.js]
10-
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; };
11-
var _name;
12+
"use strict";
13+
// @target es6
1214
var A = /** @class */ (function () {
1315
function A(name) {
14-
_name.set(this, void 0);
15-
_classPrivateFieldSet(this, _name, name);
16+
this.#name = name;
1617
}
1718
return A;
1819
}());
19-
_name = new WeakMap();
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
}

tests/baselines/reference/privateNameNotAccessibleOutsideDefiningClass.js

Lines changed: 4 additions & 0 deletions
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,6 +9,8 @@ new A().#foo = 4; // Error
79

810

911
//// [privateNameNotAccessibleOutsideDefiningClass.js]
12+
"use strict";
13+
// @target es6
1014
var A = /** @class */ (function () {
1115
function A() {
1216
this.#foo = 3;

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: 7 additions & 2 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,9 +17,12 @@ 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
1822
function createClass() {
1923
return /** @class */ (function () {
2024
function class_1() {
25+
this.#foo = 3;
2126
}
2227
class_1.prototype.equals = function (other) {
2328
return this.#foo = other.#foo;
Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,39 @@
11
=== tests/cases/conformance/classes/members/privateNames/privateNameSneakyRuntimeException.ts ===
2+
// @target es6
3+
24
function createClass () {
35
>createClass : Symbol(createClass, Decl(privateNameSneakyRuntimeException.ts, 0, 0))
46

57
return class {
6-
#foo;
7-
>#foo : Symbol((Anonymous class)[#foo], Decl(privateNameSneakyRuntimeException.ts, 1, 18))
8+
#foo = 3;
9+
>#foo : Symbol((Anonymous class)[#foo], Decl(privateNameSneakyRuntimeException.ts, 3, 18))
810

9-
equals(other) {
10-
>equals : Symbol((Anonymous class).equals, Decl(privateNameSneakyRuntimeException.ts, 2, 13))
11-
>other : Symbol(other, Decl(privateNameSneakyRuntimeException.ts, 3, 15))
11+
equals(other: any) {
12+
>equals : Symbol((Anonymous class).equals, Decl(privateNameSneakyRuntimeException.ts, 4, 17))
13+
>other : Symbol(other, Decl(privateNameSneakyRuntimeException.ts, 5, 15))
1214

1315
return this.#foo = other.#foo;
14-
>this.#foo : Symbol((Anonymous class)[#foo], Decl(privateNameSneakyRuntimeException.ts, 1, 18))
15-
>this : Symbol((Anonymous class), Decl(privateNameSneakyRuntimeException.ts, 1, 10))
16-
>other : Symbol(other, Decl(privateNameSneakyRuntimeException.ts, 3, 15))
16+
>this.#foo : Symbol((Anonymous class)[#foo], Decl(privateNameSneakyRuntimeException.ts, 3, 18))
17+
>this : Symbol((Anonymous class), Decl(privateNameSneakyRuntimeException.ts, 3, 10))
18+
>other : Symbol(other, Decl(privateNameSneakyRuntimeException.ts, 5, 15))
1719
}
1820
};
1921
}
2022

2123
const a = new (createClass())();
22-
>a : Symbol(a, Decl(privateNameSneakyRuntimeException.ts, 9, 5))
24+
>a : Symbol(a, Decl(privateNameSneakyRuntimeException.ts, 11, 5))
2325
>createClass : Symbol(createClass, Decl(privateNameSneakyRuntimeException.ts, 0, 0))
2426

2527
const b = new (createClass())();
26-
>b : Symbol(b, Decl(privateNameSneakyRuntimeException.ts, 10, 5))
28+
>b : Symbol(b, Decl(privateNameSneakyRuntimeException.ts, 12, 5))
2729
>createClass : Symbol(createClass, Decl(privateNameSneakyRuntimeException.ts, 0, 0))
2830

2931
console.log(a.equals(b)); // OK at compile time but will be a runtime error
3032
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
3133
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
3234
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
33-
>a.equals : Symbol((Anonymous class).equals, Decl(privateNameSneakyRuntimeException.ts, 2, 13))
34-
>a : Symbol(a, Decl(privateNameSneakyRuntimeException.ts, 9, 5))
35-
>equals : Symbol((Anonymous class).equals, Decl(privateNameSneakyRuntimeException.ts, 2, 13))
36-
>b : Symbol(b, Decl(privateNameSneakyRuntimeException.ts, 10, 5))
35+
>a.equals : Symbol((Anonymous class).equals, Decl(privateNameSneakyRuntimeException.ts, 4, 17))
36+
>a : Symbol(a, Decl(privateNameSneakyRuntimeException.ts, 11, 5))
37+
>equals : Symbol((Anonymous class).equals, Decl(privateNameSneakyRuntimeException.ts, 4, 17))
38+
>b : Symbol(b, Decl(privateNameSneakyRuntimeException.ts, 12, 5))
3739

0 commit comments

Comments
 (0)