kythe.io@v0.0.68-0.20240422202219-7225dbc01741/kythe/typescript/testdata/writes.ts (about) 1 class WritesClass { 2 //- @member defines/binding Member 3 member: number; 4 5 //- @sub defines/binding MemberSub 6 sub: WritesClass; 7 8 constructor() { 9 //- !{ @member ref Member } 10 //- @member ref/writes Member 11 this.member = 1; 12 //- !{ @sub ref MemberSub } 13 //- @sub ref/writes MemberSub 14 this.sub = new WritesClass(); 15 } 16 } 17 18 // 19 // Test Assignments 20 // 21 22 //- @w defines/binding W 23 let w = 1; 24 25 //- !{ @w ref W } 26 //- @w ref/writes W 27 w = 2; 28 29 //- !{ @#0w ref W } 30 //- @#0w ref/writes W 31 //- @#1w ref W 32 //- !{ @#1w ref/writes W } 33 w = w + 2; 34 35 //- @x defines/binding X 36 let x = 2; 37 38 //- !{ @x ref X } 39 //- @x ref/writes X 40 //- @w ref W 41 //- @w ref/writes W 42 x = w = 3; 43 44 //- !{ @#0x ref X } 45 //- @#0x ref/writes X 46 //- @#1x ref X 47 //- @#1x ref/writes X 48 x = x++ + 1; 49 50 //- @y defines/binding Y 51 let y = new WritesClass(); 52 53 //- @y ref Y 54 //- !{ @y ref/writes Y } 55 //- !{ @member ref Member } 56 //- @member ref/writes Member 57 y.member = 1; 58 59 //- !{ @#0member ref Member } 60 //- @#0member ref/writes Member 61 //- @#1member ref Member 62 //- !{ @#1member ref/writes Member } 63 y.member = y.member + 1; 64 65 // 66 // Test pre/postfix operations 67 // 68 69 //- @w ref W 70 //- @w ref/writes W 71 w++; 72 //- @w ref W 73 //- @w ref/writes W 74 w--; 75 //- @w ref W 76 //- @w ref/writes W 77 ++w; 78 //- @w ref W 79 //- @w ref/writes W 80 --w; 81 82 //- @member ref Member 83 //- @member ref/writes Member 84 y.member++; 85 //- @member ref Member 86 //- @member ref/writes Member 87 y.member--; 88 //- @member ref Member 89 //- @member ref/writes Member 90 ++y.member; 91 //- @member ref Member 92 //- @member ref/writes Member 93 --y.member; 94 95 // 96 // Test compound assignment token 97 // 98 99 //- @w ref W 100 //- @w ref/writes W 101 w += 1; 102 //- @w ref W 103 //- @w ref/writes W 104 w -= 1; 105 //- @w ref W 106 //- @w ref/writes W 107 w *= 1; 108 //- @w ref W 109 //- @w ref/writes W 110 w **= 1; 111 //- @w ref W 112 //- @w ref/writes W 113 w /= 1; 114 //- @w ref W 115 //- @w ref/writes W 116 w %= 1; 117 //- @w ref W 118 //- @w ref/writes W 119 w <<= 1; 120 //- @w ref W 121 //- @w ref/writes W 122 w >>= 1; 123 //- @w ref W 124 //- @w ref/writes W 125 w >>>= 1; 126 //- @w ref W 127 //- @w ref/writes W 128 w &= 1; 129 //- @w ref W 130 //- @w ref/writes W 131 w |= 1; 132 //- @w ref W 133 //- @w ref/writes W 134 w ^= 1; 135 136 // 137 // Test chained property access 138 // 139 140 //- @sub ref MemberSub 141 //- !{ @sub ref/writes MemberSub } 142 //- !{ @member ref Member } 143 //- @member ref/writes Member 144 y.sub.member = 1; 145 146 // 147 // Some more complicated cases 148 // 149 150 //- @z defines/binding Z 151 let z = 1; 152 153 //- !{ @z ref Z } 154 //- @z ref/writes Z 155 //- @x ref X 156 //- @x ref/writes X 157 //- @#0w ref W 158 //- @#0w ref/writes W 159 //- @#1w ref W 160 //- !{ @#1w ref/writes W } 161 z = x = w++ + w + 1; 162 163 //- @#0z ref Z 164 //- @#0z ref/writes Z 165 //- @#1z ref Z 166 //- !{ @#1z ref/writes Z } 167 z += z;