Skip to content

Commit 90d2914

Browse files
Added private accessors tests
1 parent b4e664a commit 90d2914

File tree

79 files changed

+2545
-135
lines changed

Some content is hidden

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

79 files changed

+2545
-135
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
tests/cases/conformance/classes/members/privateNames/privateNameAccessors.ts(9,14): error TS2540: Cannot assign to '#roProp' because it is a read-only property.
2+
3+
4+
==== tests/cases/conformance/classes/members/privateNames/privateNameAccessors.ts (1 errors) ====
5+
class A1 {
6+
get #prop() { return ""; }
7+
set #prop(param: string) { }
8+
9+
get #roProp() { return ""; }
10+
11+
constructor(name: string) {
12+
this.#prop = "";
13+
this.#roProp = ""; // Error
14+
~~~~~~~
15+
!!! error TS2540: Cannot assign to '#roProp' because it is a read-only property.
16+
console.log(this.#prop);
17+
console.log(this.#roProp);
18+
}
19+
}
20+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
//// [privateNameAccessors.ts]
2+
class A1 {
3+
get #prop() { return ""; }
4+
set #prop(param: string) { }
5+
6+
get #roProp() { return ""; }
7+
8+
constructor(name: string) {
9+
this.#prop = "";
10+
this.#roProp = ""; // Error
11+
console.log(this.#prop);
12+
console.log(this.#roProp);
13+
}
14+
}
15+
16+
17+
//// [privateNameAccessors.js]
18+
"use strict";
19+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {
20+
if (!privateMap.has(receiver)) {
21+
throw new TypeError("attempted to set private field on non-instance");
22+
}
23+
privateMap.set(receiver, value);
24+
return value;
25+
};
26+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {
27+
if (!privateMap.has(receiver)) {
28+
throw new TypeError("attempted to get private field on non-instance");
29+
}
30+
return privateMap.get(receiver);
31+
};
32+
var _prop, _prop_1, _roProp;
33+
class A1 {
34+
constructor(name) {
35+
__classPrivateFieldSet(this, _prop_1, "");
36+
__classPrivateFieldSet(this, _roProp, ""); // Error
37+
console.log(__classPrivateFieldGet(this, _prop_1));
38+
console.log(__classPrivateFieldGet(this, _roProp));
39+
}
40+
get () { return ""; }
41+
set (param) { }
42+
get () { return ""; }
43+
}
44+
_prop = new WeakMap(), _prop_1 = new WeakMap(), _roProp = new WeakMap();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
=== tests/cases/conformance/classes/members/privateNames/privateNameAccessors.ts ===
2+
class A1 {
3+
>A1 : Symbol(A1, Decl(privateNameAccessors.ts, 0, 0))
4+
5+
get #prop() { return ""; }
6+
>#prop : Symbol(A1.#prop, Decl(privateNameAccessors.ts, 0, 10), Decl(privateNameAccessors.ts, 1, 30))
7+
8+
set #prop(param: string) { }
9+
>#prop : Symbol(A1.#prop, Decl(privateNameAccessors.ts, 0, 10), Decl(privateNameAccessors.ts, 1, 30))
10+
>param : Symbol(param, Decl(privateNameAccessors.ts, 2, 14))
11+
12+
get #roProp() { return ""; }
13+
>#roProp : Symbol(A1.#roProp, Decl(privateNameAccessors.ts, 2, 32))
14+
15+
constructor(name: string) {
16+
>name : Symbol(name, Decl(privateNameAccessors.ts, 6, 16))
17+
18+
this.#prop = "";
19+
>this.#prop : Symbol(A1.#prop, Decl(privateNameAccessors.ts, 0, 10), Decl(privateNameAccessors.ts, 1, 30))
20+
>this : Symbol(A1, Decl(privateNameAccessors.ts, 0, 0))
21+
22+
this.#roProp = ""; // Error
23+
>this.#roProp : Symbol(A1.#roProp, Decl(privateNameAccessors.ts, 2, 32))
24+
>this : Symbol(A1, Decl(privateNameAccessors.ts, 0, 0))
25+
26+
console.log(this.#prop);
27+
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
28+
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
29+
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
30+
>this.#prop : Symbol(A1.#prop, Decl(privateNameAccessors.ts, 0, 10), Decl(privateNameAccessors.ts, 1, 30))
31+
>this : Symbol(A1, Decl(privateNameAccessors.ts, 0, 0))
32+
33+
console.log(this.#roProp);
34+
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
35+
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
36+
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
37+
>this.#roProp : Symbol(A1.#roProp, Decl(privateNameAccessors.ts, 2, 32))
38+
>this : Symbol(A1, Decl(privateNameAccessors.ts, 0, 0))
39+
}
40+
}
41+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
=== tests/cases/conformance/classes/members/privateNames/privateNameAccessors.ts ===
2+
class A1 {
3+
>A1 : A1
4+
5+
get #prop() { return ""; }
6+
>#prop : string
7+
>"" : ""
8+
9+
set #prop(param: string) { }
10+
>#prop : string
11+
>param : string
12+
13+
get #roProp() { return ""; }
14+
>#roProp : string
15+
>"" : ""
16+
17+
constructor(name: string) {
18+
>name : string
19+
20+
this.#prop = "";
21+
>this.#prop = "" : ""
22+
>this.#prop : string
23+
>this : this
24+
>"" : ""
25+
26+
this.#roProp = ""; // Error
27+
>this.#roProp = "" : ""
28+
>this.#roProp : any
29+
>this : this
30+
>"" : ""
31+
32+
console.log(this.#prop);
33+
>console.log(this.#prop) : void
34+
>console.log : (...data: any[]) => void
35+
>console : Console
36+
>log : (...data: any[]) => void
37+
>this.#prop : string
38+
>this : this
39+
40+
console.log(this.#roProp);
41+
>console.log(this.#roProp) : void
42+
>console.log : (...data: any[]) => void
43+
>console : Console
44+
>log : (...data: any[]) => void
45+
>this.#roProp : string
46+
>this : this
47+
}
48+
}
49+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
tests/cases/conformance/classes/members/privateNames/privateNameAccessorsAccess.ts(14,10): error TS18013: Property '#prop' is not accessible outside class 'A2' because it has a private identifier.
2+
tests/cases/conformance/classes/members/privateNames/privateNameAccessorsAccess.ts(17,14): error TS18013: Property '#prop' is not accessible outside class 'A2' because it has a private identifier.
3+
tests/cases/conformance/classes/members/privateNames/privateNameAccessorsAccess.ts(22,18): error TS18013: Property '#prop' is not accessible outside class 'A2' because it has a private identifier.
4+
5+
6+
==== tests/cases/conformance/classes/members/privateNames/privateNameAccessorsAccess.ts (3 errors) ====
7+
class A2 {
8+
get #prop() { return ""; }
9+
set #prop(param: string) { }
10+
11+
constructor() {
12+
console.log(this.#prop);
13+
let a: A2 = this;
14+
a.#prop;
15+
function foo (){
16+
a.#prop;
17+
}
18+
}
19+
}
20+
new A2().#prop; // Error
21+
~~~~~
22+
!!! error TS18013: Property '#prop' is not accessible outside class 'A2' because it has a private identifier.
23+
24+
function foo (){
25+
new A2().#prop; // Error
26+
~~~~~
27+
!!! error TS18013: Property '#prop' is not accessible outside class 'A2' because it has a private identifier.
28+
}
29+
30+
class B2 {
31+
m() {
32+
new A2().#prop;
33+
~~~~~
34+
!!! error TS18013: Property '#prop' is not accessible outside class 'A2' because it has a private identifier.
35+
}
36+
}
37+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
//// [privateNameAccessorsAccess.ts]
2+
class A2 {
3+
get #prop() { return ""; }
4+
set #prop(param: string) { }
5+
6+
constructor() {
7+
console.log(this.#prop);
8+
let a: A2 = this;
9+
a.#prop;
10+
function foo (){
11+
a.#prop;
12+
}
13+
}
14+
}
15+
new A2().#prop; // Error
16+
17+
function foo (){
18+
new A2().#prop; // Error
19+
}
20+
21+
class B2 {
22+
m() {
23+
new A2().#prop;
24+
}
25+
}
26+
27+
28+
//// [privateNameAccessorsAccess.js]
29+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {
30+
if (!privateMap.has(receiver)) {
31+
throw new TypeError("attempted to get private field on non-instance");
32+
}
33+
return privateMap.get(receiver);
34+
};
35+
var _prop, _prop_1;
36+
class A2 {
37+
constructor() {
38+
console.log(__classPrivateFieldGet(this, _prop_1));
39+
let a = this;
40+
__classPrivateFieldGet(a, _prop_1);
41+
function foo() {
42+
__classPrivateFieldGet(a, _prop_1);
43+
}
44+
}
45+
get () { return ""; }
46+
set (param) { }
47+
}
48+
_prop = new WeakMap(), _prop_1 = new WeakMap();
49+
new A2().; // Error
50+
function foo() {
51+
new A2().; // Error
52+
}
53+
class B2 {
54+
m() {
55+
new A2().;
56+
}
57+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
=== tests/cases/conformance/classes/members/privateNames/privateNameAccessorsAccess.ts ===
2+
class A2 {
3+
>A2 : Symbol(A2, Decl(privateNameAccessorsAccess.ts, 0, 0))
4+
5+
get #prop() { return ""; }
6+
>#prop : Symbol(A2.#prop, Decl(privateNameAccessorsAccess.ts, 0, 10), Decl(privateNameAccessorsAccess.ts, 1, 30))
7+
8+
set #prop(param: string) { }
9+
>#prop : Symbol(A2.#prop, Decl(privateNameAccessorsAccess.ts, 0, 10), Decl(privateNameAccessorsAccess.ts, 1, 30))
10+
>param : Symbol(param, Decl(privateNameAccessorsAccess.ts, 2, 14))
11+
12+
constructor() {
13+
console.log(this.#prop);
14+
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
15+
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
16+
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
17+
>this.#prop : Symbol(A2.#prop, Decl(privateNameAccessorsAccess.ts, 0, 10), Decl(privateNameAccessorsAccess.ts, 1, 30))
18+
>this : Symbol(A2, Decl(privateNameAccessorsAccess.ts, 0, 0))
19+
20+
let a: A2 = this;
21+
>a : Symbol(a, Decl(privateNameAccessorsAccess.ts, 6, 11))
22+
>A2 : Symbol(A2, Decl(privateNameAccessorsAccess.ts, 0, 0))
23+
>this : Symbol(A2, Decl(privateNameAccessorsAccess.ts, 0, 0))
24+
25+
a.#prop;
26+
>a.#prop : Symbol(A2.#prop, Decl(privateNameAccessorsAccess.ts, 0, 10), Decl(privateNameAccessorsAccess.ts, 1, 30))
27+
>a : Symbol(a, Decl(privateNameAccessorsAccess.ts, 6, 11))
28+
29+
function foo (){
30+
>foo : Symbol(foo, Decl(privateNameAccessorsAccess.ts, 7, 16))
31+
32+
a.#prop;
33+
>a.#prop : Symbol(A2.#prop, Decl(privateNameAccessorsAccess.ts, 0, 10), Decl(privateNameAccessorsAccess.ts, 1, 30))
34+
>a : Symbol(a, Decl(privateNameAccessorsAccess.ts, 6, 11))
35+
}
36+
}
37+
}
38+
new A2().#prop; // Error
39+
>A2 : Symbol(A2, Decl(privateNameAccessorsAccess.ts, 0, 0))
40+
41+
function foo (){
42+
>foo : Symbol(foo, Decl(privateNameAccessorsAccess.ts, 13, 15))
43+
44+
new A2().#prop; // Error
45+
>A2 : Symbol(A2, Decl(privateNameAccessorsAccess.ts, 0, 0))
46+
}
47+
48+
class B2 {
49+
>B2 : Symbol(B2, Decl(privateNameAccessorsAccess.ts, 17, 1))
50+
51+
m() {
52+
>m : Symbol(B2.m, Decl(privateNameAccessorsAccess.ts, 19, 10))
53+
54+
new A2().#prop;
55+
>A2 : Symbol(A2, Decl(privateNameAccessorsAccess.ts, 0, 0))
56+
}
57+
}
58+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
=== tests/cases/conformance/classes/members/privateNames/privateNameAccessorsAccess.ts ===
2+
class A2 {
3+
>A2 : A2
4+
5+
get #prop() { return ""; }
6+
>#prop : string
7+
>"" : ""
8+
9+
set #prop(param: string) { }
10+
>#prop : string
11+
>param : string
12+
13+
constructor() {
14+
console.log(this.#prop);
15+
>console.log(this.#prop) : void
16+
>console.log : (...data: any[]) => void
17+
>console : Console
18+
>log : (...data: any[]) => void
19+
>this.#prop : string
20+
>this : this
21+
22+
let a: A2 = this;
23+
>a : A2
24+
>this : this
25+
26+
a.#prop;
27+
>a.#prop : string
28+
>a : A2
29+
30+
function foo (){
31+
>foo : () => void
32+
33+
a.#prop;
34+
>a.#prop : string
35+
>a : A2
36+
}
37+
}
38+
}
39+
new A2().#prop; // Error
40+
>new A2().#prop : any
41+
>new A2() : A2
42+
>A2 : typeof A2
43+
44+
function foo (){
45+
>foo : () => void
46+
47+
new A2().#prop; // Error
48+
>new A2().#prop : any
49+
>new A2() : A2
50+
>A2 : typeof A2
51+
}
52+
53+
class B2 {
54+
>B2 : B2
55+
56+
m() {
57+
>m : () => void
58+
59+
new A2().#prop;
60+
>new A2().#prop : any
61+
>new A2() : A2
62+
>A2 : typeof A2
63+
}
64+
}
65+

0 commit comments

Comments
 (0)