Skip to content

Commit 24dd93f

Browse files
authored
Fix access of protected members on generic this-type (#36928)
Fixes: #36926
1 parent ab1b17b commit 24dd93f

File tree

6 files changed

+262
-44
lines changed

6 files changed

+262
-44
lines changed

src/compiler/checker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23279,7 +23279,7 @@ namespace ts {
2327923279
}
2328023280

2328123281
const thisType = getTypeFromTypeNode(thisParameter.type);
23282-
enclosingClass = ((thisType.flags & TypeFlags.TypeParameter) ? getConstraintOfTypeParameter(<TypeParameter>thisType) : thisType) as InterfaceType;
23282+
enclosingClass = (((thisType.flags & TypeFlags.TypeParameter) ? getConstraintOfTypeParameter(<TypeParameter>thisType) : thisType) as TypeReference).target;
2328323283
}
2328423284
// No further restrictions for static properties
2328523285
if (flags & ModifierFlags.Static) {

tests/baselines/reference/thisTypeAccessibility.errors.txt

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
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.
41
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(26,10): error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
52
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(29,13): error TS2341: Property 'sp' is private and only accessible within class 'MyClass'.
63
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(30,13): error TS2445: Property 'spp' is protected and only accessible within class 'MyClass' and its subclasses.
74
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(35,10): error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
85
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(38,13): error TS2341: Property 'sp' is private and only accessible within class 'MyClass'.
96
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(39,13): error TS2445: Property 'spp' is protected and only accessible within class 'MyClass' and its subclasses.
7+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(44,10): error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
8+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(47,13): error TS2341: Property 'sp' is private and only accessible within class 'MyClass'.
9+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(48,13): error TS2445: Property 'spp' is protected and only accessible within class 'MyClass' and its subclasses.
10+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(55,10): error TS2341: Property 'p' is private and only accessible within class 'MyGenericClass<T>'.
11+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(58,20): error TS2341: Property 'sp' is private and only accessible within class 'MyGenericClass<T>'.
12+
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(59,20): error TS2445: Property 'spp' is protected and only accessible within class 'MyGenericClass<T>' and its subclasses.
1013

1114

12-
==== tests/cases/conformance/types/thisType/thisTypeAccessibility.ts (9 errors) ====
15+
==== tests/cases/conformance/types/thisType/thisTypeAccessibility.ts (12 errors) ====
1316
class MyClass {
1417
private p: number = 123;
1518
protected pp: number = 123;
@@ -25,6 +28,15 @@ tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(39,13): error TS
2528
extension3(p: number): void;
2629
}
2730

31+
class MyGenericClass<T> {
32+
private p: T;
33+
protected pp: T;
34+
public ppp: T;
35+
private static sp: number;
36+
protected static spp: number;
37+
public static sppp: number;
38+
}
39+
2840
MyClass.prototype.extension1 = function (this: MyClass, p: number) {
2941
this.p = p;
3042
~
@@ -71,4 +83,19 @@ tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(39,13): error TS
7183
}
7284

7385
MyClass.prototype.extension3 = extension3;
86+
87+
function extension4<T extends number>(this: MyGenericClass<T>, p: T) {
88+
this.p = p;
89+
~
90+
!!! error TS2341: Property 'p' is private and only accessible within class 'MyGenericClass<T>'.
91+
this.pp = p;
92+
this.ppp = p;
93+
MyGenericClass.sp = p;
94+
~~
95+
!!! error TS2341: Property 'sp' is private and only accessible within class 'MyGenericClass<T>'.
96+
MyGenericClass.spp = p;
97+
~~~
98+
!!! error TS2445: Property 'spp' is protected and only accessible within class 'MyGenericClass<T>' and its subclasses.
99+
MyGenericClass.sppp = p;
100+
}
74101

tests/baselines/reference/thisTypeAccessibility.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@ interface MyClass {
1414
extension3(p: number): void;
1515
}
1616

17+
class MyGenericClass<T> {
18+
private p: T;
19+
protected pp: T;
20+
public ppp: T;
21+
private static sp: number;
22+
protected static spp: number;
23+
public static sppp: number;
24+
}
25+
1726
MyClass.prototype.extension1 = function (this: MyClass, p: number) {
1827
this.p = p;
1928
this.pp = p;
@@ -42,6 +51,15 @@ function extension3<T extends MyClass> (this: T, p: number) {
4251
}
4352

4453
MyClass.prototype.extension3 = extension3;
54+
55+
function extension4<T extends number>(this: MyGenericClass<T>, p: T) {
56+
this.p = p;
57+
this.pp = p;
58+
this.ppp = p;
59+
MyGenericClass.sp = p;
60+
MyGenericClass.spp = p;
61+
MyGenericClass.sppp = p;
62+
}
4563

4664

4765
//// [thisTypeAccessibility.js]
@@ -56,6 +74,11 @@ var MyClass = /** @class */ (function () {
5674
MyClass.sppp = 123;
5775
return MyClass;
5876
}());
77+
var MyGenericClass = /** @class */ (function () {
78+
function MyGenericClass() {
79+
}
80+
return MyGenericClass;
81+
}());
5982
MyClass.prototype.extension1 = function (p) {
6083
this.p = p;
6184
this.pp = p;
@@ -81,3 +104,11 @@ function extension3(p) {
81104
MyClass.sppp = p;
82105
}
83106
MyClass.prototype.extension3 = extension3;
107+
function extension4(p) {
108+
this.p = p;
109+
this.pp = p;
110+
this.ppp = p;
111+
MyGenericClass.sp = p;
112+
MyGenericClass.spp = p;
113+
MyGenericClass.sppp = p;
114+
}

tests/baselines/reference/thisTypeAccessibility.symbols

Lines changed: 111 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -37,51 +37,77 @@ interface MyClass {
3737
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 12, 15))
3838
}
3939

40+
class MyGenericClass<T> {
41+
>MyGenericClass : Symbol(MyGenericClass, Decl(thisTypeAccessibility.ts, 13, 1))
42+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 15, 21))
43+
44+
private p: T;
45+
>p : Symbol(MyGenericClass.p, Decl(thisTypeAccessibility.ts, 15, 25))
46+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 15, 21))
47+
48+
protected pp: T;
49+
>pp : Symbol(MyGenericClass.pp, Decl(thisTypeAccessibility.ts, 16, 17))
50+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 15, 21))
51+
52+
public ppp: T;
53+
>ppp : Symbol(MyGenericClass.ppp, Decl(thisTypeAccessibility.ts, 17, 20))
54+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 15, 21))
55+
56+
private static sp: number;
57+
>sp : Symbol(MyGenericClass.sp, Decl(thisTypeAccessibility.ts, 18, 18))
58+
59+
protected static spp: number;
60+
>spp : Symbol(MyGenericClass.spp, Decl(thisTypeAccessibility.ts, 19, 30))
61+
62+
public static sppp: number;
63+
>sppp : Symbol(MyGenericClass.sppp, Decl(thisTypeAccessibility.ts, 20, 33))
64+
}
65+
4066
MyClass.prototype.extension1 = function (this: MyClass, p: number) {
4167
>MyClass.prototype.extension1 : Symbol(MyClass.extension1, Decl(thisTypeAccessibility.ts, 9, 19))
4268
>MyClass.prototype : Symbol(MyClass.prototype)
4369
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
4470
>prototype : Symbol(MyClass.prototype)
4571
>extension1 : Symbol(MyClass.extension1, Decl(thisTypeAccessibility.ts, 9, 19))
46-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 15, 41))
72+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 41))
4773
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
48-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
74+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
4975

5076
this.p = p;
5177
>this.p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
52-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 15, 41))
78+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 41))
5379
>p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
54-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
80+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
5581

5682
this.pp = p;
5783
>this.pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
58-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 15, 41))
84+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 41))
5985
>pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
60-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
86+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
6187

6288
this.ppp = p;
6389
>this.ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
64-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 15, 41))
90+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 41))
6591
>ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
66-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
92+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
6793

6894
MyClass.sp = p;
6995
>MyClass.sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
7096
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
7197
>sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
72-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
98+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
7399

74100
MyClass.spp = p;
75101
>MyClass.spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
76102
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
77103
>spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
78-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
104+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
79105

80106
MyClass.sppp = p;
81107
>MyClass.sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
82108
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
83109
>sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
84-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
110+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
85111
}
86112

87113
MyClass.prototype.extension2 = function<T extends MyClass> (this: T, p: number) {
@@ -90,92 +116,92 @@ MyClass.prototype.extension2 = function<T extends MyClass> (this: T, p: number)
90116
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
91117
>prototype : Symbol(MyClass.prototype)
92118
>extension2 : Symbol(MyClass.extension2, Decl(thisTypeAccessibility.ts, 10, 32))
93-
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 24, 40))
119+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 33, 40))
94120
>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))
121+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 60))
122+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 33, 40))
123+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
98124

99125
this.p = p;
100126
>this.p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
101-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 60))
127+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 60))
102128
>p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
103-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
129+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
104130

105131
this.pp = p;
106132
>this.pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
107-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 60))
133+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 60))
108134
>pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
109-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
135+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
110136

111137
this.ppp = p;
112138
>this.ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
113-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 60))
139+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 60))
114140
>ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
115-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
141+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
116142

117143
MyClass.sp = p;
118144
>MyClass.sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
119145
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
120146
>sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
121-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
147+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
122148

123149
MyClass.spp = p;
124150
>MyClass.spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
125151
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
126152
>spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
127-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
153+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
128154

129155
MyClass.sppp = p;
130156
>MyClass.sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
131157
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
132158
>sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
133-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
159+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
134160
}
135161

136162
function extension3<T extends MyClass> (this: T, p: number) {
137-
>extension3 : Symbol(extension3, Decl(thisTypeAccessibility.ts, 31, 1))
138-
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 33, 20))
163+
>extension3 : Symbol(extension3, Decl(thisTypeAccessibility.ts, 40, 1))
164+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 42, 20))
139165
>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))
166+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 42, 40))
167+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 42, 20))
168+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
143169

144170
this.p = p;
145171
>this.p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
146-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 40))
172+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 42, 40))
147173
>p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
148-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
174+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
149175

150176
this.pp = p;
151177
>this.pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
152-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 40))
178+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 42, 40))
153179
>pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
154-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
180+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
155181

156182
this.ppp = p;
157183
>this.ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
158-
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 40))
184+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 42, 40))
159185
>ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
160-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
186+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
161187

162188
MyClass.sp = p;
163189
>MyClass.sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
164190
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
165191
>sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
166-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
192+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
167193

168194
MyClass.spp = p;
169195
>MyClass.spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
170196
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
171197
>spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
172-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
198+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
173199

174200
MyClass.sppp = p;
175201
>MyClass.sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
176202
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
177203
>sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
178-
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
204+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
179205
}
180206

181207
MyClass.prototype.extension3 = extension3;
@@ -184,5 +210,51 @@ MyClass.prototype.extension3 = extension3;
184210
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
185211
>prototype : Symbol(MyClass.prototype)
186212
>extension3 : Symbol(MyClass.extension3, Decl(thisTypeAccessibility.ts, 11, 32))
187-
>extension3 : Symbol(extension3, Decl(thisTypeAccessibility.ts, 31, 1))
213+
>extension3 : Symbol(extension3, Decl(thisTypeAccessibility.ts, 40, 1))
214+
215+
function extension4<T extends number>(this: MyGenericClass<T>, p: T) {
216+
>extension4 : Symbol(extension4, Decl(thisTypeAccessibility.ts, 51, 42))
217+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 53, 20))
218+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 53, 38))
219+
>MyGenericClass : Symbol(MyGenericClass, Decl(thisTypeAccessibility.ts, 13, 1))
220+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 53, 20))
221+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
222+
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 53, 20))
223+
224+
this.p = p;
225+
>this.p : Symbol(MyGenericClass.p, Decl(thisTypeAccessibility.ts, 15, 25))
226+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 53, 38))
227+
>p : Symbol(MyGenericClass.p, Decl(thisTypeAccessibility.ts, 15, 25))
228+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
229+
230+
this.pp = p;
231+
>this.pp : Symbol(MyGenericClass.pp, Decl(thisTypeAccessibility.ts, 16, 17))
232+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 53, 38))
233+
>pp : Symbol(MyGenericClass.pp, Decl(thisTypeAccessibility.ts, 16, 17))
234+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
235+
236+
this.ppp = p;
237+
>this.ppp : Symbol(MyGenericClass.ppp, Decl(thisTypeAccessibility.ts, 17, 20))
238+
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 53, 38))
239+
>ppp : Symbol(MyGenericClass.ppp, Decl(thisTypeAccessibility.ts, 17, 20))
240+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
241+
242+
MyGenericClass.sp = p;
243+
>MyGenericClass.sp : Symbol(MyGenericClass.sp, Decl(thisTypeAccessibility.ts, 18, 18))
244+
>MyGenericClass : Symbol(MyGenericClass, Decl(thisTypeAccessibility.ts, 13, 1))
245+
>sp : Symbol(MyGenericClass.sp, Decl(thisTypeAccessibility.ts, 18, 18))
246+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
247+
248+
MyGenericClass.spp = p;
249+
>MyGenericClass.spp : Symbol(MyGenericClass.spp, Decl(thisTypeAccessibility.ts, 19, 30))
250+
>MyGenericClass : Symbol(MyGenericClass, Decl(thisTypeAccessibility.ts, 13, 1))
251+
>spp : Symbol(MyGenericClass.spp, Decl(thisTypeAccessibility.ts, 19, 30))
252+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
253+
254+
MyGenericClass.sppp = p;
255+
>MyGenericClass.sppp : Symbol(MyGenericClass.sppp, Decl(thisTypeAccessibility.ts, 20, 33))
256+
>MyGenericClass : Symbol(MyGenericClass, Decl(thisTypeAccessibility.ts, 13, 1))
257+
>sppp : Symbol(MyGenericClass.sppp, Decl(thisTypeAccessibility.ts, 20, 33))
258+
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
259+
}
188260

0 commit comments

Comments
 (0)