Skip to content

Commit 0bcbbbd

Browse files
committed
disallow static field access
1 parent 9767fbb commit 0bcbbbd

File tree

6 files changed

+263
-59
lines changed

6 files changed

+263
-59
lines changed

src/compiler/checker.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17109,7 +17109,7 @@ namespace ts {
1710917109
if (!enclosingClass) {
1711017110
let thisParameter: ParameterDeclaration | undefined;
1711117111
const thisContainer = getThisContainer(node, /* includeArrowFunctions */ false);
17112-
if (!thisContainer || !isFunctionLike(thisContainer) || !(thisParameter = getThisParameter(thisContainer)) || !thisParameter.type) {
17112+
if (flags & ModifierFlags.Static || !thisContainer || !isFunctionLike(thisContainer) || !(thisParameter = getThisParameter(thisContainer)) || !thisParameter.type) {
1711317113
error(errorNode, Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses, symbolToString(prop), typeToString(getDeclaringClass(prop) || type));
1711417114
return false;
1711517115
}
@@ -17121,7 +17121,7 @@ namespace ts {
1712117121
if (flags & ModifierFlags.Static) {
1712217122
return true;
1712317123
}
17124-
if (type.flags & TypeFlags.TypeParameter) {
17124+
if (type.flags & TypeFlags.TypeParameter) {
1712517125
// get the original type -- represented as the type constraint of the 'this' type
1712617126
type = (type as TypeParameter).isThisType ? getConstraintOfTypeParameter(<TypeParameter>type)! : getBaseConstraintOfType(<TypeParameter>type)!; // TODO: GH#18217 Use a different variable that's allowed to be undefined
1712717127
}

tests/baselines/reference/thisTypeAccessibility.errors.txt

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
1-
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(14,10): error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
2-
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(20,10): error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
1+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(17,10): error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
2+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(20,13): error TS2341: Property 'sp' is private and only accessible within class 'MyClass'.
3+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(21,13): error TS2445: Property 'spp' is protected and only accessible within class 'MyClass' and its subclasses.
34
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(26,10): error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
5+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(29,13): error TS2341: Property 'sp' is private and only accessible within class 'MyClass'.
6+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(30,13): error TS2445: Property 'spp' is protected and only accessible within class 'MyClass' and its subclasses.
7+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(35,10): error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
8+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(38,13): error TS2341: Property 'sp' is private and only accessible within class 'MyClass'.
9+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(39,13): error TS2445: Property 'spp' is protected and only accessible within class 'MyClass' and its subclasses.
410

511

6-
==== tests/cases/conformance/types/thisType/thisTypeAccessibility.ts (3 errors) ====
12+
==== tests/cases/conformance/types/thisType/thisTypeAccessibility.ts (9 errors) ====
713
class MyClass {
814
private p: number = 123;
915
protected pp: number = 123;
1016
public ppp: number = 123;
17+
private static sp: number = 123;
18+
protected static spp: number = 123;
19+
public static sppp: number = 123;
1120
}
1221

1322
interface MyClass {
@@ -22,6 +31,13 @@ tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(26,10): error TS
2231
!!! error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
2332
this.pp = p;
2433
this.ppp = p;
34+
MyClass.sp = p;
35+
~~
36+
!!! error TS2341: Property 'sp' is private and only accessible within class 'MyClass'.
37+
MyClass.spp = p;
38+
~~~
39+
!!! error TS2445: Property 'spp' is protected and only accessible within class 'MyClass' and its subclasses.
40+
MyClass.sppp = p;
2541
}
2642

2743
MyClass.prototype.extension2 = function<T extends MyClass> (this: T, p: number) {
@@ -30,6 +46,13 @@ tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(26,10): error TS
3046
!!! error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
3147
this.pp = p;
3248
this.ppp = p;
49+
MyClass.sp = p;
50+
~~
51+
!!! error TS2341: Property 'sp' is private and only accessible within class 'MyClass'.
52+
MyClass.spp = p;
53+
~~~
54+
!!! error TS2445: Property 'spp' is protected and only accessible within class 'MyClass' and its subclasses.
55+
MyClass.sppp = p;
3356
}
3457

3558
function extension3<T extends MyClass> (this: T, p: number) {
@@ -38,6 +61,13 @@ tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(26,10): error TS
3861
!!! error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
3962
this.pp = p;
4063
this.ppp = p;
64+
MyClass.sp = p;
65+
~~
66+
!!! error TS2341: Property 'sp' is private and only accessible within class 'MyClass'.
67+
MyClass.spp = p;
68+
~~~
69+
!!! error TS2445: Property 'spp' is protected and only accessible within class 'MyClass' and its subclasses.
70+
MyClass.sppp = p;
4171
}
4272

4373
MyClass.prototype.extension3 = extension3;

tests/baselines/reference/thisTypeAccessibility.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ class MyClass {
33
private p: number = 123;
44
protected pp: number = 123;
55
public ppp: number = 123;
6+
private static sp: number = 123;
7+
protected static spp: number = 123;
8+
public static sppp: number = 123;
69
}
710

811
interface MyClass {
@@ -15,18 +18,27 @@ MyClass.prototype.extension1 = function (this: MyClass, p: number) {
1518
this.p = p;
1619
this.pp = p;
1720
this.ppp = p;
21+
MyClass.sp = p;
22+
MyClass.spp = p;
23+
MyClass.sppp = p;
1824
}
1925

2026
MyClass.prototype.extension2 = function<T extends MyClass> (this: T, p: number) {
2127
this.p = p;
2228
this.pp = p;
2329
this.ppp = p;
30+
MyClass.sp = p;
31+
MyClass.spp = p;
32+
MyClass.sppp = p;
2433
}
2534

2635
function extension3<T extends MyClass> (this: T, p: number) {
2736
this.p = p;
2837
this.pp = p;
2938
this.ppp = p;
39+
MyClass.sp = p;
40+
MyClass.spp = p;
41+
MyClass.sppp = p;
3042
}
3143

3244
MyClass.prototype.extension3 = extension3;
@@ -39,21 +51,33 @@ var MyClass = /** @class */ (function () {
3951
this.pp = 123;
4052
this.ppp = 123;
4153
}
54+
MyClass.sp = 123;
55+
MyClass.spp = 123;
56+
MyClass.sppp = 123;
4257
return MyClass;
4358
}());
4459
MyClass.prototype.extension1 = function (p) {
4560
this.p = p;
4661
this.pp = p;
4762
this.ppp = p;
63+
MyClass.sp = p;
64+
MyClass.spp = p;
65+
MyClass.sppp = p;
4866
};
4967
MyClass.prototype.extension2 = function (p) {
5068
this.p = p;
5169
this.pp = p;
5270
this.ppp = p;
71+
MyClass.sp = p;
72+
MyClass.spp = p;
73+
MyClass.sppp = p;
5374
};
5475
function extension3(p) {
5576
this.p = p;
5677
this.pp = p;
5778
this.ppp = p;
79+
MyClass.sp = p;
80+
MyClass.spp = p;
81+
MyClass.sppp = p;
5882
}
5983
MyClass.prototype.extension3 = extension3;
Lines changed: 113 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
=== tests/cases/conformance/types/thisType/thisTypeAccessibility.ts ===
22
class MyClass {
3-
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 4, 1))
3+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
44

55
private p: number = 123;
66
>p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
@@ -10,116 +10,179 @@ class MyClass {
1010

1111
public ppp: number = 123;
1212
>ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
13+
14+
private static sp: number = 123;
15+
>sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
16+
17+
protected static spp: number = 123;
18+
>spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
19+
20+
public static sppp: number = 123;
21+
>sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
1322
}
1423

1524
interface MyClass {
16-
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 4, 1))
25+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
1726

1827
extension1(p: number): void;
19-
>extension1 : Symbol(MyClass.extension1, Decl(thisTypeAccessibility.ts, 6, 19))
20-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 7, 15))
28+
>extension1 : Symbol(MyClass.extension1, Decl(thisTypeAccessibility.ts, 9, 19))
29+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 10, 15))
2130

2231
extension2(p: number): void;
23-
>extension2 : Symbol(MyClass.extension2, Decl(thisTypeAccessibility.ts, 7, 32))
24-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 8, 15))
32+
>extension2 : Symbol(MyClass.extension2, Decl(thisTypeAccessibility.ts, 10, 32))
33+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 11, 15))
2534

2635
extension3(p: number): void;
27-
>extension3 : Symbol(MyClass.extension3, Decl(thisTypeAccessibility.ts, 8, 32))
28-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 9, 15))
36+
>extension3 : Symbol(MyClass.extension3, Decl(thisTypeAccessibility.ts, 11, 32))
37+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 12, 15))
2938
}
3039

3140
MyClass.prototype.extension1 = function (this: MyClass, p: number) {
32-
>MyClass.prototype.extension1 : Symbol(MyClass.extension1, Decl(thisTypeAccessibility.ts, 6, 19))
41+
>MyClass.prototype.extension1 : Symbol(MyClass.extension1, Decl(thisTypeAccessibility.ts, 9, 19))
3342
>MyClass.prototype : Symbol(MyClass.prototype)
34-
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 4, 1))
43+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
3544
>prototype : Symbol(MyClass.prototype)
36-
>extension1 : Symbol(MyClass.extension1, Decl(thisTypeAccessibility.ts, 6, 19))
37-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 12, 41))
38-
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 4, 1))
39-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 12, 55))
45+
>extension1 : Symbol(MyClass.extension1, Decl(thisTypeAccessibility.ts, 9, 19))
46+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 15, 41))
47+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
48+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
4049

4150
this.p = p;
4251
>this.p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
43-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 12, 41))
52+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 15, 41))
4453
>p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
45-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 12, 55))
54+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
4655

4756
this.pp = p;
4857
>this.pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
49-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 12, 41))
58+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 15, 41))
5059
>pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
51-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 12, 55))
60+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
5261

5362
this.ppp = p;
5463
>this.ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
55-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 12, 41))
64+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 15, 41))
5665
>ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
57-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 12, 55))
66+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
67+
68+
MyClass.sp = p;
69+
>MyClass.sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
70+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
71+
>sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
72+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
73+
74+
MyClass.spp = p;
75+
>MyClass.spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
76+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
77+
>spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
78+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
79+
80+
MyClass.sppp = p;
81+
>MyClass.sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
82+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
83+
>sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
84+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
5885
}
5986

6087
MyClass.prototype.extension2 = function<T extends MyClass> (this: T, p: number) {
61-
>MyClass.prototype.extension2 : Symbol(MyClass.extension2, Decl(thisTypeAccessibility.ts, 7, 32))
88+
>MyClass.prototype.extension2 : Symbol(MyClass.extension2, Decl(thisTypeAccessibility.ts, 10, 32))
6289
>MyClass.prototype : Symbol(MyClass.prototype)
63-
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 4, 1))
90+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
6491
>prototype : Symbol(MyClass.prototype)
65-
>extension2 : Symbol(MyClass.extension2, Decl(thisTypeAccessibility.ts, 7, 32))
66-
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 18, 40))
67-
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 4, 1))
68-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 18, 60))
69-
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 18, 40))
70-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 18, 68))
92+
>extension2 : Symbol(MyClass.extension2, Decl(thisTypeAccessibility.ts, 10, 32))
93+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 24, 40))
94+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
95+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 60))
96+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 24, 40))
97+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
7198

7299
this.p = p;
73100
>this.p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
74-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 18, 60))
101+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 60))
75102
>p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
76-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 18, 68))
103+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
77104

78105
this.pp = p;
79106
>this.pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
80-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 18, 60))
107+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 60))
81108
>pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
82-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 18, 68))
109+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
83110

84111
this.ppp = p;
85112
>this.ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
86-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 18, 60))
113+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 60))
87114
>ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
88-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 18, 68))
115+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
116+
117+
MyClass.sp = p;
118+
>MyClass.sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
119+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
120+
>sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
121+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
122+
123+
MyClass.spp = p;
124+
>MyClass.spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
125+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
126+
>spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
127+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
128+
129+
MyClass.sppp = p;
130+
>MyClass.sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
131+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
132+
>sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
133+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
89134
}
90135

91136
function extension3<T extends MyClass> (this: T, p: number) {
92-
>extension3 : Symbol(extension3, Decl(thisTypeAccessibility.ts, 22, 1))
93-
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 24, 20))
94-
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 4, 1))
95-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 40))
96-
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 24, 20))
97-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 48))
137+
>extension3 : Symbol(extension3, Decl(thisTypeAccessibility.ts, 31, 1))
138+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 33, 20))
139+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
140+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 40))
141+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 33, 20))
142+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
98143

99144
this.p = p;
100145
>this.p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
101-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 40))
146+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 40))
102147
>p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
103-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 48))
148+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
104149

105150
this.pp = p;
106151
>this.pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
107-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 40))
152+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 40))
108153
>pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
109-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 48))
154+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
110155

111156
this.ppp = p;
112157
>this.ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
113-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 40))
158+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 40))
114159
>ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
115-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 48))
160+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
161+
162+
MyClass.sp = p;
163+
>MyClass.sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
164+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
165+
>sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
166+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
167+
168+
MyClass.spp = p;
169+
>MyClass.spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
170+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
171+
>spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
172+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
173+
174+
MyClass.sppp = p;
175+
>MyClass.sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
176+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
177+
>sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
178+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
116179
}
117180

118181
MyClass.prototype.extension3 = extension3;
119-
>MyClass.prototype.extension3 : Symbol(MyClass.extension3, Decl(thisTypeAccessibility.ts, 8, 32))
182+
>MyClass.prototype.extension3 : Symbol(MyClass.extension3, Decl(thisTypeAccessibility.ts, 11, 32))
120183
>MyClass.prototype : Symbol(MyClass.prototype)
121-
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 4, 1))
184+
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
122185
>prototype : Symbol(MyClass.prototype)
123-
>extension3 : Symbol(MyClass.extension3, Decl(thisTypeAccessibility.ts, 8, 32))
124-
>extension3 : Symbol(extension3, Decl(thisTypeAccessibility.ts, 22, 1))
186+
>extension3 : Symbol(MyClass.extension3, Decl(thisTypeAccessibility.ts, 11, 32))
187+
>extension3 : Symbol(extension3, Decl(thisTypeAccessibility.ts, 31, 1))
125188

0 commit comments

Comments
 (0)