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;