1{ 2 "type": "Program", 3 "statements": [ 4 { 5 "type": "ClassDeclaration", 6 "definition": { 7 "id": { 8 "type": "Identifier", 9 "name": "A", 10 "loc": { 11 "start": { 12 "line": 16, 13 "column": 7 14 }, 15 "end": { 16 "line": 16, 17 "column": 8 18 } 19 } 20 }, 21 "typeParameters": { 22 "type": "TSTypeParameterDeclaration", 23 "params": [ 24 { 25 "type": "TSTypeParameter", 26 "name": { 27 "type": "Identifier", 28 "name": "T", 29 "loc": { 30 "start": { 31 "line": 16, 32 "column": 10 33 }, 34 "end": { 35 "line": 16, 36 "column": 11 37 } 38 } 39 }, 40 "in": false, 41 "out": false, 42 "loc": { 43 "start": { 44 "line": 16, 45 "column": 10 46 }, 47 "end": { 48 "line": 16, 49 "column": 12 50 } 51 } 52 } 53 ], 54 "loc": { 55 "start": { 56 "line": 16, 57 "column": 9 58 }, 59 "end": { 60 "line": 16, 61 "column": 12 62 } 63 } 64 }, 65 "superClass": null, 66 "implements": [], 67 "constructor": { 68 "type": "MethodDefinition", 69 "key": { 70 "type": "Identifier", 71 "name": "constructor", 72 "loc": { 73 "start": { 74 "line": 1, 75 "column": 1 76 }, 77 "end": { 78 "line": 1, 79 "column": 1 80 } 81 } 82 }, 83 "kind": "constructor", 84 "static": false, 85 "optional": false, 86 "computed": false, 87 "value": { 88 "type": "FunctionExpression", 89 "function": { 90 "type": "ScriptFunction", 91 "id": null, 92 "generator": false, 93 "async": false, 94 "expression": false, 95 "params": [], 96 "body": { 97 "type": "BlockStatement", 98 "statements": [], 99 "loc": { 100 "start": { 101 "line": 1, 102 "column": 1 103 }, 104 "end": { 105 "line": 1, 106 "column": 1 107 } 108 } 109 }, 110 "loc": { 111 "start": { 112 "line": 1, 113 "column": 1 114 }, 115 "end": { 116 "line": 1, 117 "column": 1 118 } 119 } 120 }, 121 "loc": { 122 "start": { 123 "line": 1, 124 "column": 1 125 }, 126 "end": { 127 "line": 1, 128 "column": 1 129 } 130 } 131 }, 132 "overloads": [], 133 "decorators": [], 134 "loc": { 135 "start": { 136 "line": 16, 137 "column": 1 138 }, 139 "end": { 140 "line": 17, 141 "column": 2 142 } 143 } 144 }, 145 "body": [], 146 "indexSignatures": [], 147 "loc": { 148 "start": { 149 "line": 16, 150 "column": 13 151 }, 152 "end": { 153 "line": 17, 154 "column": 2 155 } 156 } 157 }, 158 "decorators": [], 159 "loc": { 160 "start": { 161 "line": 16, 162 "column": 1 163 }, 164 "end": { 165 "line": 17, 166 "column": 2 167 } 168 } 169 }, 170 { 171 "type": "VariableDeclaration", 172 "declarations": [ 173 { 174 "type": "VariableDeclarator", 175 "id": { 176 "type": "Identifier", 177 "name": "a", 178 "typeAnnotation": { 179 "type": "TSTypeReference", 180 "typeName": { 181 "type": "Identifier", 182 "name": "A", 183 "loc": { 184 "start": { 185 "line": 19, 186 "column": 8 187 }, 188 "end": { 189 "line": 19, 190 "column": 9 191 } 192 } 193 }, 194 "typeParameters": { 195 "type": "TSTypeParameterInstantiation", 196 "params": [ 197 { 198 "type": "TSFunctionType", 199 "params": [], 200 "typeParameters": { 201 "type": "TSTypeParameterDeclaration", 202 "params": [ 203 { 204 "type": "TSTypeParameter", 205 "name": { 206 "type": "Identifier", 207 "name": "T", 208 "loc": { 209 "start": { 210 "line": 19, 211 "column": 11 212 }, 213 "end": { 214 "line": 19, 215 "column": 12 216 } 217 } 218 }, 219 "in": false, 220 "out": false, 221 "loc": { 222 "start": { 223 "line": 19, 224 "column": 11 225 }, 226 "end": { 227 "line": 19, 228 "column": 13 229 } 230 } 231 } 232 ], 233 "loc": { 234 "start": { 235 "line": 19, 236 "column": 10 237 }, 238 "end": { 239 "line": 19, 240 "column": 13 241 } 242 } 243 }, 244 "returnType": { 245 "type": "TSTypeLiteral", 246 "members": [], 247 "loc": { 248 "start": { 249 "line": 19, 250 "column": 19 251 }, 252 "end": { 253 "line": 19, 254 "column": 21 255 } 256 } 257 }, 258 "loc": { 259 "start": { 260 "line": 19, 261 "column": 10 262 }, 263 "end": { 264 "line": 19, 265 "column": 21 266 } 267 } 268 } 269 ], 270 "loc": { 271 "start": { 272 "line": 19, 273 "column": 9 274 }, 275 "end": { 276 "line": 19, 277 "column": 22 278 } 279 } 280 }, 281 "loc": { 282 "start": { 283 "line": 19, 284 "column": 8 285 }, 286 "end": { 287 "line": 19, 288 "column": 9 289 } 290 } 291 }, 292 "loc": { 293 "start": { 294 "line": 19, 295 "column": 5 296 }, 297 "end": { 298 "line": 19, 299 "column": 6 300 } 301 } 302 }, 303 "init": { 304 "type": "NewExpression", 305 "callee": { 306 "type": "Identifier", 307 "name": "A", 308 "loc": { 309 "start": { 310 "line": 19, 311 "column": 29 312 }, 313 "end": { 314 "line": 19, 315 "column": 30 316 } 317 } 318 }, 319 "typeParameters": { 320 "type": "TSTypeParameterInstantiation", 321 "params": [ 322 { 323 "type": "TSFunctionType", 324 "params": [], 325 "typeParameters": { 326 "type": "TSTypeParameterDeclaration", 327 "params": [ 328 { 329 "type": "TSTypeParameter", 330 "name": { 331 "type": "Identifier", 332 "name": "T", 333 "loc": { 334 "start": { 335 "line": 19, 336 "column": 32 337 }, 338 "end": { 339 "line": 19, 340 "column": 33 341 } 342 } 343 }, 344 "in": false, 345 "out": false, 346 "loc": { 347 "start": { 348 "line": 19, 349 "column": 32 350 }, 351 "end": { 352 "line": 19, 353 "column": 34 354 } 355 } 356 } 357 ], 358 "loc": { 359 "start": { 360 "line": 19, 361 "column": 31 362 }, 363 "end": { 364 "line": 19, 365 "column": 34 366 } 367 } 368 }, 369 "returnType": { 370 "type": "TSTypeLiteral", 371 "members": [], 372 "loc": { 373 "start": { 374 "line": 19, 375 "column": 40 376 }, 377 "end": { 378 "line": 19, 379 "column": 42 380 } 381 } 382 }, 383 "loc": { 384 "start": { 385 "line": 19, 386 "column": 31 387 }, 388 "end": { 389 "line": 19, 390 "column": 42 391 } 392 } 393 } 394 ], 395 "loc": { 396 "start": { 397 "line": 19, 398 "column": 30 399 }, 400 "end": { 401 "line": 19, 402 "column": 43 403 } 404 } 405 }, 406 "arguments": [], 407 "loc": { 408 "start": { 409 "line": 19, 410 "column": 25 411 }, 412 "end": { 413 "line": 19, 414 "column": 45 415 } 416 } 417 }, 418 "loc": { 419 "start": { 420 "line": 19, 421 "column": 5 422 }, 423 "end": { 424 "line": 19, 425 "column": 45 426 } 427 } 428 } 429 ], 430 "kind": "var", 431 "loc": { 432 "start": { 433 "line": 19, 434 "column": 1 435 }, 436 "end": { 437 "line": 19, 438 "column": 45 439 } 440 } 441 } 442 ], 443 "loc": { 444 "start": { 445 "line": 1, 446 "column": 1 447 }, 448 "end": { 449 "line": 21, 450 "column": 1 451 } 452 } 453} 454