Fix access of protected members on generic this-type (#36928)
Fixes: #36926
This commit is contained in:
parent
ab1b17b9cf
commit
24dd93fc2b
|
@ -23279,7 +23279,7 @@ namespace ts {
|
|||
}
|
||||
|
||||
const thisType = getTypeFromTypeNode(thisParameter.type);
|
||||
enclosingClass = ((thisType.flags & TypeFlags.TypeParameter) ? getConstraintOfTypeParameter(<TypeParameter>thisType) : thisType) as InterfaceType;
|
||||
enclosingClass = (((thisType.flags & TypeFlags.TypeParameter) ? getConstraintOfTypeParameter(<TypeParameter>thisType) : thisType) as TypeReference).target;
|
||||
}
|
||||
// No further restrictions for static properties
|
||||
if (flags & ModifierFlags.Static) {
|
||||
|
|
|
@ -1,15 +1,18 @@
|
|||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(17,10): error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
|
||||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(20,13): error TS2341: Property 'sp' is private and only accessible within class 'MyClass'.
|
||||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(21,13): error TS2445: Property 'spp' is protected and only accessible within class 'MyClass' and its subclasses.
|
||||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(26,10): error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
|
||||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(29,13): error TS2341: Property 'sp' is private and only accessible within class 'MyClass'.
|
||||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(30,13): error TS2445: Property 'spp' is protected and only accessible within class 'MyClass' and its subclasses.
|
||||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(35,10): error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
|
||||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(38,13): error TS2341: Property 'sp' is private and only accessible within class 'MyClass'.
|
||||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(39,13): error TS2445: Property 'spp' is protected and only accessible within class 'MyClass' and its subclasses.
|
||||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(44,10): error TS2341: Property 'p' is private and only accessible within class 'MyClass'.
|
||||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(47,13): error TS2341: Property 'sp' is private and only accessible within class 'MyClass'.
|
||||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(48,13): error TS2445: Property 'spp' is protected and only accessible within class 'MyClass' and its subclasses.
|
||||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(55,10): error TS2341: Property 'p' is private and only accessible within class 'MyGenericClass<T>'.
|
||||
tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(58,20): error TS2341: Property 'sp' is private and only accessible within class 'MyGenericClass<T>'.
|
||||
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.
|
||||
|
||||
|
||||
==== tests/cases/conformance/types/thisType/thisTypeAccessibility.ts (9 errors) ====
|
||||
==== tests/cases/conformance/types/thisType/thisTypeAccessibility.ts (12 errors) ====
|
||||
class MyClass {
|
||||
private p: number = 123;
|
||||
protected pp: number = 123;
|
||||
|
@ -25,6 +28,15 @@ tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(39,13): error TS
|
|||
extension3(p: number): void;
|
||||
}
|
||||
|
||||
class MyGenericClass<T> {
|
||||
private p: T;
|
||||
protected pp: T;
|
||||
public ppp: T;
|
||||
private static sp: number;
|
||||
protected static spp: number;
|
||||
public static sppp: number;
|
||||
}
|
||||
|
||||
MyClass.prototype.extension1 = function (this: MyClass, p: number) {
|
||||
this.p = p;
|
||||
~
|
||||
|
@ -71,4 +83,19 @@ tests/cases/conformance/types/thisType/thisTypeAccessibility.ts(39,13): error TS
|
|||
}
|
||||
|
||||
MyClass.prototype.extension3 = extension3;
|
||||
|
||||
function extension4<T extends number>(this: MyGenericClass<T>, p: T) {
|
||||
this.p = p;
|
||||
~
|
||||
!!! error TS2341: Property 'p' is private and only accessible within class 'MyGenericClass<T>'.
|
||||
this.pp = p;
|
||||
this.ppp = p;
|
||||
MyGenericClass.sp = p;
|
||||
~~
|
||||
!!! error TS2341: Property 'sp' is private and only accessible within class 'MyGenericClass<T>'.
|
||||
MyGenericClass.spp = p;
|
||||
~~~
|
||||
!!! error TS2445: Property 'spp' is protected and only accessible within class 'MyGenericClass<T>' and its subclasses.
|
||||
MyGenericClass.sppp = p;
|
||||
}
|
||||
|
|
@ -14,6 +14,15 @@ interface MyClass {
|
|||
extension3(p: number): void;
|
||||
}
|
||||
|
||||
class MyGenericClass<T> {
|
||||
private p: T;
|
||||
protected pp: T;
|
||||
public ppp: T;
|
||||
private static sp: number;
|
||||
protected static spp: number;
|
||||
public static sppp: number;
|
||||
}
|
||||
|
||||
MyClass.prototype.extension1 = function (this: MyClass, p: number) {
|
||||
this.p = p;
|
||||
this.pp = p;
|
||||
|
@ -42,6 +51,15 @@ function extension3<T extends MyClass> (this: T, p: number) {
|
|||
}
|
||||
|
||||
MyClass.prototype.extension3 = extension3;
|
||||
|
||||
function extension4<T extends number>(this: MyGenericClass<T>, p: T) {
|
||||
this.p = p;
|
||||
this.pp = p;
|
||||
this.ppp = p;
|
||||
MyGenericClass.sp = p;
|
||||
MyGenericClass.spp = p;
|
||||
MyGenericClass.sppp = p;
|
||||
}
|
||||
|
||||
|
||||
//// [thisTypeAccessibility.js]
|
||||
|
@ -56,6 +74,11 @@ var MyClass = /** @class */ (function () {
|
|||
MyClass.sppp = 123;
|
||||
return MyClass;
|
||||
}());
|
||||
var MyGenericClass = /** @class */ (function () {
|
||||
function MyGenericClass() {
|
||||
}
|
||||
return MyGenericClass;
|
||||
}());
|
||||
MyClass.prototype.extension1 = function (p) {
|
||||
this.p = p;
|
||||
this.pp = p;
|
||||
|
@ -81,3 +104,11 @@ function extension3(p) {
|
|||
MyClass.sppp = p;
|
||||
}
|
||||
MyClass.prototype.extension3 = extension3;
|
||||
function extension4(p) {
|
||||
this.p = p;
|
||||
this.pp = p;
|
||||
this.ppp = p;
|
||||
MyGenericClass.sp = p;
|
||||
MyGenericClass.spp = p;
|
||||
MyGenericClass.sppp = p;
|
||||
}
|
||||
|
|
|
@ -37,51 +37,77 @@ interface MyClass {
|
|||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 12, 15))
|
||||
}
|
||||
|
||||
class MyGenericClass<T> {
|
||||
>MyGenericClass : Symbol(MyGenericClass, Decl(thisTypeAccessibility.ts, 13, 1))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 15, 21))
|
||||
|
||||
private p: T;
|
||||
>p : Symbol(MyGenericClass.p, Decl(thisTypeAccessibility.ts, 15, 25))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 15, 21))
|
||||
|
||||
protected pp: T;
|
||||
>pp : Symbol(MyGenericClass.pp, Decl(thisTypeAccessibility.ts, 16, 17))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 15, 21))
|
||||
|
||||
public ppp: T;
|
||||
>ppp : Symbol(MyGenericClass.ppp, Decl(thisTypeAccessibility.ts, 17, 20))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 15, 21))
|
||||
|
||||
private static sp: number;
|
||||
>sp : Symbol(MyGenericClass.sp, Decl(thisTypeAccessibility.ts, 18, 18))
|
||||
|
||||
protected static spp: number;
|
||||
>spp : Symbol(MyGenericClass.spp, Decl(thisTypeAccessibility.ts, 19, 30))
|
||||
|
||||
public static sppp: number;
|
||||
>sppp : Symbol(MyGenericClass.sppp, Decl(thisTypeAccessibility.ts, 20, 33))
|
||||
}
|
||||
|
||||
MyClass.prototype.extension1 = function (this: MyClass, p: number) {
|
||||
>MyClass.prototype.extension1 : Symbol(MyClass.extension1, Decl(thisTypeAccessibility.ts, 9, 19))
|
||||
>MyClass.prototype : Symbol(MyClass.prototype)
|
||||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>prototype : Symbol(MyClass.prototype)
|
||||
>extension1 : Symbol(MyClass.extension1, Decl(thisTypeAccessibility.ts, 9, 19))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 15, 41))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 41))
|
||||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
|
||||
|
||||
this.p = p;
|
||||
>this.p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 15, 41))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 41))
|
||||
>p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
|
||||
|
||||
this.pp = p;
|
||||
>this.pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 15, 41))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 41))
|
||||
>pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
|
||||
|
||||
this.ppp = p;
|
||||
>this.ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 15, 41))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 41))
|
||||
>ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
|
||||
|
||||
MyClass.sp = p;
|
||||
>MyClass.sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
|
||||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
|
||||
|
||||
MyClass.spp = p;
|
||||
>MyClass.spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
|
||||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
|
||||
|
||||
MyClass.sppp = p;
|
||||
>MyClass.sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
|
||||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 15, 55))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 55))
|
||||
}
|
||||
|
||||
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)
|
|||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>prototype : Symbol(MyClass.prototype)
|
||||
>extension2 : Symbol(MyClass.extension2, Decl(thisTypeAccessibility.ts, 10, 32))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 24, 40))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 33, 40))
|
||||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 60))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 24, 40))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 60))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 33, 40))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
|
||||
|
||||
this.p = p;
|
||||
>this.p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 60))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 60))
|
||||
>p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
|
||||
|
||||
this.pp = p;
|
||||
>this.pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 60))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 60))
|
||||
>pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
|
||||
|
||||
this.ppp = p;
|
||||
>this.ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 24, 60))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 60))
|
||||
>ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
|
||||
|
||||
MyClass.sp = p;
|
||||
>MyClass.sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
|
||||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
|
||||
|
||||
MyClass.spp = p;
|
||||
>MyClass.spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
|
||||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
|
||||
|
||||
MyClass.sppp = p;
|
||||
>MyClass.sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
|
||||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 24, 68))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 68))
|
||||
}
|
||||
|
||||
function extension3<T extends MyClass> (this: T, p: number) {
|
||||
>extension3 : Symbol(extension3, Decl(thisTypeAccessibility.ts, 31, 1))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 33, 20))
|
||||
>extension3 : Symbol(extension3, Decl(thisTypeAccessibility.ts, 40, 1))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 42, 20))
|
||||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 40))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 33, 20))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 42, 40))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 42, 20))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
|
||||
|
||||
this.p = p;
|
||||
>this.p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 40))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 42, 40))
|
||||
>p : Symbol(MyClass.p, Decl(thisTypeAccessibility.ts, 0, 15))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
|
||||
|
||||
this.pp = p;
|
||||
>this.pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 40))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 42, 40))
|
||||
>pp : Symbol(MyClass.pp, Decl(thisTypeAccessibility.ts, 1, 28))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
|
||||
|
||||
this.ppp = p;
|
||||
>this.ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 33, 40))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 42, 40))
|
||||
>ppp : Symbol(MyClass.ppp, Decl(thisTypeAccessibility.ts, 2, 31))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
|
||||
|
||||
MyClass.sp = p;
|
||||
>MyClass.sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
|
||||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>sp : Symbol(MyClass.sp, Decl(thisTypeAccessibility.ts, 3, 29))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
|
||||
|
||||
MyClass.spp = p;
|
||||
>MyClass.spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
|
||||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>spp : Symbol(MyClass.spp, Decl(thisTypeAccessibility.ts, 4, 36))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
|
||||
|
||||
MyClass.sppp = p;
|
||||
>MyClass.sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
|
||||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>sppp : Symbol(MyClass.sppp, Decl(thisTypeAccessibility.ts, 5, 39))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 33, 48))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 42, 48))
|
||||
}
|
||||
|
||||
MyClass.prototype.extension3 = extension3;
|
||||
|
@ -184,5 +210,51 @@ MyClass.prototype.extension3 = extension3;
|
|||
>MyClass : Symbol(MyClass, Decl(thisTypeAccessibility.ts, 0, 0), Decl(thisTypeAccessibility.ts, 7, 1))
|
||||
>prototype : Symbol(MyClass.prototype)
|
||||
>extension3 : Symbol(MyClass.extension3, Decl(thisTypeAccessibility.ts, 11, 32))
|
||||
>extension3 : Symbol(extension3, Decl(thisTypeAccessibility.ts, 31, 1))
|
||||
>extension3 : Symbol(extension3, Decl(thisTypeAccessibility.ts, 40, 1))
|
||||
|
||||
function extension4<T extends number>(this: MyGenericClass<T>, p: T) {
|
||||
>extension4 : Symbol(extension4, Decl(thisTypeAccessibility.ts, 51, 42))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 53, 20))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 53, 38))
|
||||
>MyGenericClass : Symbol(MyGenericClass, Decl(thisTypeAccessibility.ts, 13, 1))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 53, 20))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
|
||||
>T : Symbol(T, Decl(thisTypeAccessibility.ts, 53, 20))
|
||||
|
||||
this.p = p;
|
||||
>this.p : Symbol(MyGenericClass.p, Decl(thisTypeAccessibility.ts, 15, 25))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 53, 38))
|
||||
>p : Symbol(MyGenericClass.p, Decl(thisTypeAccessibility.ts, 15, 25))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
|
||||
|
||||
this.pp = p;
|
||||
>this.pp : Symbol(MyGenericClass.pp, Decl(thisTypeAccessibility.ts, 16, 17))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 53, 38))
|
||||
>pp : Symbol(MyGenericClass.pp, Decl(thisTypeAccessibility.ts, 16, 17))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
|
||||
|
||||
this.ppp = p;
|
||||
>this.ppp : Symbol(MyGenericClass.ppp, Decl(thisTypeAccessibility.ts, 17, 20))
|
||||
>this : Symbol(this, Decl(thisTypeAccessibility.ts, 53, 38))
|
||||
>ppp : Symbol(MyGenericClass.ppp, Decl(thisTypeAccessibility.ts, 17, 20))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
|
||||
|
||||
MyGenericClass.sp = p;
|
||||
>MyGenericClass.sp : Symbol(MyGenericClass.sp, Decl(thisTypeAccessibility.ts, 18, 18))
|
||||
>MyGenericClass : Symbol(MyGenericClass, Decl(thisTypeAccessibility.ts, 13, 1))
|
||||
>sp : Symbol(MyGenericClass.sp, Decl(thisTypeAccessibility.ts, 18, 18))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
|
||||
|
||||
MyGenericClass.spp = p;
|
||||
>MyGenericClass.spp : Symbol(MyGenericClass.spp, Decl(thisTypeAccessibility.ts, 19, 30))
|
||||
>MyGenericClass : Symbol(MyGenericClass, Decl(thisTypeAccessibility.ts, 13, 1))
|
||||
>spp : Symbol(MyGenericClass.spp, Decl(thisTypeAccessibility.ts, 19, 30))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
|
||||
|
||||
MyGenericClass.sppp = p;
|
||||
>MyGenericClass.sppp : Symbol(MyGenericClass.sppp, Decl(thisTypeAccessibility.ts, 20, 33))
|
||||
>MyGenericClass : Symbol(MyGenericClass, Decl(thisTypeAccessibility.ts, 13, 1))
|
||||
>sppp : Symbol(MyGenericClass.sppp, Decl(thisTypeAccessibility.ts, 20, 33))
|
||||
>p : Symbol(p, Decl(thisTypeAccessibility.ts, 53, 62))
|
||||
}
|
||||
|
||||
|
|
|
@ -41,6 +41,28 @@ interface MyClass {
|
|||
>p : number
|
||||
}
|
||||
|
||||
class MyGenericClass<T> {
|
||||
>MyGenericClass : MyGenericClass<T>
|
||||
|
||||
private p: T;
|
||||
>p : T
|
||||
|
||||
protected pp: T;
|
||||
>pp : T
|
||||
|
||||
public ppp: T;
|
||||
>ppp : T
|
||||
|
||||
private static sp: number;
|
||||
>sp : number
|
||||
|
||||
protected static spp: number;
|
||||
>spp : number
|
||||
|
||||
public static sppp: number;
|
||||
>sppp : number
|
||||
}
|
||||
|
||||
MyClass.prototype.extension1 = function (this: MyClass, p: number) {
|
||||
>MyClass.prototype.extension1 = function (this: MyClass, p: number) { this.p = p; this.pp = p; this.ppp = p; MyClass.sp = p; MyClass.spp = p; MyClass.sppp = p;} : (this: MyClass, p: number) => void
|
||||
>MyClass.prototype.extension1 : (p: number) => void
|
||||
|
@ -206,3 +228,51 @@ MyClass.prototype.extension3 = extension3;
|
|||
>extension3 : (p: number) => void
|
||||
>extension3 : <T extends MyClass>(this: T, p: number) => void
|
||||
|
||||
function extension4<T extends number>(this: MyGenericClass<T>, p: T) {
|
||||
>extension4 : <T extends number>(this: MyGenericClass<T>, p: T) => void
|
||||
>this : MyGenericClass<T>
|
||||
>p : T
|
||||
|
||||
this.p = p;
|
||||
>this.p = p : T
|
||||
>this.p : T
|
||||
>this : MyGenericClass<T>
|
||||
>p : T
|
||||
>p : T
|
||||
|
||||
this.pp = p;
|
||||
>this.pp = p : T
|
||||
>this.pp : T
|
||||
>this : MyGenericClass<T>
|
||||
>pp : T
|
||||
>p : T
|
||||
|
||||
this.ppp = p;
|
||||
>this.ppp = p : T
|
||||
>this.ppp : T
|
||||
>this : MyGenericClass<T>
|
||||
>ppp : T
|
||||
>p : T
|
||||
|
||||
MyGenericClass.sp = p;
|
||||
>MyGenericClass.sp = p : T
|
||||
>MyGenericClass.sp : number
|
||||
>MyGenericClass : typeof MyGenericClass
|
||||
>sp : number
|
||||
>p : T
|
||||
|
||||
MyGenericClass.spp = p;
|
||||
>MyGenericClass.spp = p : T
|
||||
>MyGenericClass.spp : number
|
||||
>MyGenericClass : typeof MyGenericClass
|
||||
>spp : number
|
||||
>p : T
|
||||
|
||||
MyGenericClass.sppp = p;
|
||||
>MyGenericClass.sppp = p : T
|
||||
>MyGenericClass.sppp : number
|
||||
>MyGenericClass : typeof MyGenericClass
|
||||
>sppp : number
|
||||
>p : T
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,15 @@ interface MyClass {
|
|||
extension3(p: number): void;
|
||||
}
|
||||
|
||||
class MyGenericClass<T> {
|
||||
private p: T;
|
||||
protected pp: T;
|
||||
public ppp: T;
|
||||
private static sp: number;
|
||||
protected static spp: number;
|
||||
public static sppp: number;
|
||||
}
|
||||
|
||||
MyClass.prototype.extension1 = function (this: MyClass, p: number) {
|
||||
this.p = p;
|
||||
this.pp = p;
|
||||
|
@ -41,3 +50,12 @@ function extension3<T extends MyClass> (this: T, p: number) {
|
|||
}
|
||||
|
||||
MyClass.prototype.extension3 = extension3;
|
||||
|
||||
function extension4<T extends number>(this: MyGenericClass<T>, p: T) {
|
||||
this.p = p;
|
||||
this.pp = p;
|
||||
this.ppp = p;
|
||||
MyGenericClass.sp = p;
|
||||
MyGenericClass.spp = p;
|
||||
MyGenericClass.sppp = p;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue