kythe.io@v0.0.68-0.20240422202219-7225dbc01741/kythe/typescript/testdata/class.ts (about) 1 export {} 2 3 //- @IFace defines/binding IFace 4 //- IFace.node/kind interface 5 interface IFace { 6 //- @ifaceMethod defines/binding IFaceMethod 7 //- IFaceMethod.node/kind function 8 //- IFaceMethod.complete incomplete 9 //- IFaceMethod childof IFace 10 ifaceMethod(): void; 11 12 //- @member defines/binding IFaceMember 13 //- IFaceMember.node/kind variable 14 //- IFaceMember.subkind field 15 //- IFaceMember childof IFace 16 member: number; 17 } 18 19 //- @IFace ref IFace 20 //- @IExtended defines/binding IExtended 21 //- IExtended extends IFace 22 interface IExtended extends IFace { 23 //- @ifaceMethod defines/binding ExtendedIFaceMethod 24 //- ExtendedIFaceMethod overrides IFaceMethod 25 ifaceMethod(): void; 26 } 27 28 //- @Class defines/binding Class=vname("Class#type", _, _, _, _) 29 //- Class.node/kind record 30 //- @IFace ref IFace 31 //- Class extends IFace 32 class Class implements IFace { 33 //- @member defines/binding Member 34 //- Member.node/kind variable 35 //- !{ Member.tag/static _ } 36 //- Member.subkind field 37 //- Member childof Class 38 member: number; 39 40 //- @member defines/binding StaticMember 41 //- StaticMember.tag/static _ 42 //- !{ @member defines/binding Member } 43 //- StaticMember childof Class 44 static member: number; 45 46 //- @"#privateMember" defines/binding PrivateMember 47 //- PrivateMember.node/kind variable 48 //- PrivateMember.subkind field 49 //- PrivateMember childof Class 50 #privateMember: number; 51 52 // This ctor declares a new member var named 'otherMember', and also 53 // declares an ordinary parameter named 'member' (to ensure we don't get 54 // confused about params to the ctor vs true member variables). 55 //- @constructor defines/binding ClassCtor=vname("Class", _, _, _, _) 56 //- ClassCtor.node/kind function 57 //- ClassCtor.subkind constructor 58 //- ClassCtor childof Class 59 //- @otherMember defines/binding OtherMember 60 //- OtherMember.node/kind variable 61 //- @member defines/binding FakeMember 62 //- FakeMember.node/kind variable 63 constructor(public otherMember: number, member: string) { 64 //- @Class ref ClassCtor 65 //- @"new Class(0, 'a')" ref/call ClassCtor 66 new Class(0, 'a'); 67 } 68 69 //- @method defines/binding Method 70 //- Method.node/kind function 71 //- Method childof Class 72 method() { 73 //- @this ref Class 74 //- @member ref Member 75 this.member; 76 77 //- @this ref Class 78 //- @method ref Method 79 this.method(); 80 } 81 82 //- @"#privateMethod" defines/binding PrivateMethod 83 //- PrivateMethod.node/kind function 84 //- PrivateMethod childof Class 85 #privateMethod() { 86 //- @"#privateMember" ref PrivateMember 87 this.#privateMember; 88 89 //- @"#privateMethod" ref PrivateMethod 90 this.#privateMethod(); 91 } 92 93 //- @ifaceMethod defines/binding ClassIFaceMethod 94 //- ClassIFaceMethod overrides IFaceMethod 95 ifaceMethod(): void {} 96 } 97 98 99 //- @Subclass defines/binding Subclass=vname("Subclass#type", _, _, _, _) 100 //- Subclass.node/kind record 101 //- @Subclass defines/binding SubclassCtor=vname("Subclass", _, _, _, _) 102 //- SubclassCtor.node/kind function 103 //- @Class ref Class 104 class Subclass extends Class { 105 //- @method defines/binding OverridenMethod 106 //- OverridenMethod overrides Method 107 override method() { 108 //- @member ref Member 109 this.member; 110 } 111 } 112 113 class SubSubclass extends Subclass implements IExtended { 114 //- @ifaceMethod defines/binding OverridenIFaceMethod 115 //- OverridenIFaceMethod overrides ClassIFaceMethod 116 //- OverridenIFaceMethod overrides ExtendedIFaceMethod 117 //- !{ OverridenIFaceMethod overrides IFaceMethod } 118 override ifaceMethod() {} 119 } 120 121 //- @Class ref ClassCtor 122 //- @Class ref/id Class 123 let instance = new Class(3, 'a'); 124 //- @otherMember ref OtherMember 125 instance.otherMember; 126 127 // Using Class in type position should still create a link to the class. 128 //- @Class ref Class 129 let useAsType: Class = instance; 130 131 //- @Class ref Class 132 Class;