1{ 2 "type": "Program", 3 "statements": [ 4 { 5 "type": "ClassDeclaration", 6 "definition": { 7 "id": { 8 "type": "Identifier", 9 "name": "Baz", 10 "decorators": [], 11 "loc": { 12 "start": { 13 "line": 17, 14 "column": 7, 15 "program": "test-class-constructor.ts" 16 }, 17 "end": { 18 "line": 17, 19 "column": 10, 20 "program": "test-class-constructor.ts" 21 } 22 } 23 }, 24 "superClass": null, 25 "implements": [], 26 "constructor": { 27 "type": "MethodDefinition", 28 "key": { 29 "type": "Identifier", 30 "name": "constructor", 31 "decorators": [], 32 "loc": { 33 "start": { 34 "line": 20, 35 "column": 5, 36 "program": "test-class-constructor.ts" 37 }, 38 "end": { 39 "line": 20, 40 "column": 16, 41 "program": "test-class-constructor.ts" 42 } 43 } 44 }, 45 "kind": "constructor", 46 "static": false, 47 "optional": false, 48 "computed": false, 49 "value": { 50 "type": "FunctionExpression", 51 "function": { 52 "type": "ScriptFunction", 53 "id": null, 54 "generator": false, 55 "async": false, 56 "expression": false, 57 "params": [ 58 { 59 "type": "Identifier", 60 "name": "s", 61 "typeAnnotation": { 62 "type": "TSStringKeyword", 63 "loc": { 64 "start": { 65 "line": 20, 66 "column": 21, 67 "program": "test-class-constructor.ts" 68 }, 69 "end": { 70 "line": 20, 71 "column": 27, 72 "program": "test-class-constructor.ts" 73 } 74 } 75 }, 76 "optional": true, 77 "decorators": [], 78 "loc": { 79 "start": { 80 "line": 20, 81 "column": 17, 82 "program": "test-class-constructor.ts" 83 }, 84 "end": { 85 "line": 20, 86 "column": 18, 87 "program": "test-class-constructor.ts" 88 } 89 } 90 }, 91 { 92 "type": "Identifier", 93 "name": "n", 94 "typeAnnotation": { 95 "type": "TSNumberKeyword", 96 "loc": { 97 "start": { 98 "line": 20, 99 "column": 33, 100 "program": "test-class-constructor.ts" 101 }, 102 "end": { 103 "line": 20, 104 "column": 39, 105 "program": "test-class-constructor.ts" 106 } 107 } 108 }, 109 "optional": true, 110 "decorators": [], 111 "loc": { 112 "start": { 113 "line": 20, 114 "column": 29, 115 "program": "test-class-constructor.ts" 116 }, 117 "end": { 118 "line": 20, 119 "column": 30, 120 "program": "test-class-constructor.ts" 121 } 122 } 123 } 124 ], 125 "body": { 126 "type": "BlockStatement", 127 "statements": [ 128 { 129 "type": "ExpressionStatement", 130 "expression": { 131 "type": "AssignmentExpression", 132 "operator": "=", 133 "left": { 134 "type": "MemberExpression", 135 "object": { 136 "type": "ThisExpression", 137 "loc": { 138 "start": { 139 "line": 21, 140 "column": 9, 141 "program": "test-class-constructor.ts" 142 }, 143 "end": { 144 "line": 21, 145 "column": 13, 146 "program": "test-class-constructor.ts" 147 } 148 } 149 }, 150 "property": { 151 "type": "Identifier", 152 "name": "s", 153 "decorators": [], 154 "loc": { 155 "start": { 156 "line": 21, 157 "column": 14, 158 "program": "test-class-constructor.ts" 159 }, 160 "end": { 161 "line": 21, 162 "column": 15, 163 "program": "test-class-constructor.ts" 164 } 165 } 166 }, 167 "computed": false, 168 "optional": false, 169 "loc": { 170 "start": { 171 "line": 21, 172 "column": 9, 173 "program": "test-class-constructor.ts" 174 }, 175 "end": { 176 "line": 21, 177 "column": 15, 178 "program": "test-class-constructor.ts" 179 } 180 } 181 }, 182 "right": { 183 "type": "LogicalExpression", 184 "operator": "||", 185 "left": { 186 "type": "Identifier", 187 "name": "s", 188 "decorators": [], 189 "loc": { 190 "start": { 191 "line": 21, 192 "column": 18, 193 "program": "test-class-constructor.ts" 194 }, 195 "end": { 196 "line": 21, 197 "column": 19, 198 "program": "test-class-constructor.ts" 199 } 200 } 201 }, 202 "right": { 203 "type": "StringLiteral", 204 "value": "", 205 "loc": { 206 "start": { 207 "line": 21, 208 "column": 23, 209 "program": "test-class-constructor.ts" 210 }, 211 "end": { 212 "line": 21, 213 "column": 25, 214 "program": "test-class-constructor.ts" 215 } 216 } 217 }, 218 "loc": { 219 "start": { 220 "line": 21, 221 "column": 18, 222 "program": "test-class-constructor.ts" 223 }, 224 "end": { 225 "line": 21, 226 "column": 25, 227 "program": "test-class-constructor.ts" 228 } 229 } 230 }, 231 "loc": { 232 "start": { 233 "line": 21, 234 "column": 9, 235 "program": "test-class-constructor.ts" 236 }, 237 "end": { 238 "line": 21, 239 "column": 25, 240 "program": "test-class-constructor.ts" 241 } 242 } 243 }, 244 "loc": { 245 "start": { 246 "line": 21, 247 "column": 9, 248 "program": "test-class-constructor.ts" 249 }, 250 "end": { 251 "line": 21, 252 "column": 26, 253 "program": "test-class-constructor.ts" 254 } 255 } 256 }, 257 { 258 "type": "ExpressionStatement", 259 "expression": { 260 "type": "AssignmentExpression", 261 "operator": "=", 262 "left": { 263 "type": "MemberExpression", 264 "object": { 265 "type": "ThisExpression", 266 "loc": { 267 "start": { 268 "line": 22, 269 "column": 9, 270 "program": "test-class-constructor.ts" 271 }, 272 "end": { 273 "line": 22, 274 "column": 13, 275 "program": "test-class-constructor.ts" 276 } 277 } 278 }, 279 "property": { 280 "type": "Identifier", 281 "name": "n", 282 "decorators": [], 283 "loc": { 284 "start": { 285 "line": 22, 286 "column": 14, 287 "program": "test-class-constructor.ts" 288 }, 289 "end": { 290 "line": 22, 291 "column": 15, 292 "program": "test-class-constructor.ts" 293 } 294 } 295 }, 296 "computed": false, 297 "optional": false, 298 "loc": { 299 "start": { 300 "line": 22, 301 "column": 9, 302 "program": "test-class-constructor.ts" 303 }, 304 "end": { 305 "line": 22, 306 "column": 15, 307 "program": "test-class-constructor.ts" 308 } 309 } 310 }, 311 "right": { 312 "type": "LogicalExpression", 313 "operator": "||", 314 "left": { 315 "type": "Identifier", 316 "name": "n", 317 "decorators": [], 318 "loc": { 319 "start": { 320 "line": 22, 321 "column": 18, 322 "program": "test-class-constructor.ts" 323 }, 324 "end": { 325 "line": 22, 326 "column": 19, 327 "program": "test-class-constructor.ts" 328 } 329 } 330 }, 331 "right": { 332 "type": "NumberLiteral", 333 "value": 0, 334 "loc": { 335 "start": { 336 "line": 22, 337 "column": 23, 338 "program": "test-class-constructor.ts" 339 }, 340 "end": { 341 "line": 22, 342 "column": 24, 343 "program": "test-class-constructor.ts" 344 } 345 } 346 }, 347 "loc": { 348 "start": { 349 "line": 22, 350 "column": 18, 351 "program": "test-class-constructor.ts" 352 }, 353 "end": { 354 "line": 22, 355 "column": 24, 356 "program": "test-class-constructor.ts" 357 } 358 } 359 }, 360 "loc": { 361 "start": { 362 "line": 22, 363 "column": 9, 364 "program": "test-class-constructor.ts" 365 }, 366 "end": { 367 "line": 22, 368 "column": 24, 369 "program": "test-class-constructor.ts" 370 } 371 } 372 }, 373 "loc": { 374 "start": { 375 "line": 22, 376 "column": 9, 377 "program": "test-class-constructor.ts" 378 }, 379 "end": { 380 "line": 22, 381 "column": 25, 382 "program": "test-class-constructor.ts" 383 } 384 } 385 }, 386 { 387 "type": "ExpressionStatement", 388 "expression": { 389 "type": "CallExpression", 390 "callee": { 391 "type": "MemberExpression", 392 "object": { 393 "type": "ThisExpression", 394 "loc": { 395 "start": { 396 "line": 23, 397 "column": 9, 398 "program": "test-class-constructor.ts" 399 }, 400 "end": { 401 "line": 23, 402 "column": 13, 403 "program": "test-class-constructor.ts" 404 } 405 } 406 }, 407 "property": { 408 "type": "Identifier", 409 "name": "f", 410 "decorators": [], 411 "loc": { 412 "start": { 413 "line": 23, 414 "column": 14, 415 "program": "test-class-constructor.ts" 416 }, 417 "end": { 418 "line": 23, 419 "column": 15, 420 "program": "test-class-constructor.ts" 421 } 422 } 423 }, 424 "computed": false, 425 "optional": false, 426 "loc": { 427 "start": { 428 "line": 23, 429 "column": 9, 430 "program": "test-class-constructor.ts" 431 }, 432 "end": { 433 "line": 23, 434 "column": 15, 435 "program": "test-class-constructor.ts" 436 } 437 } 438 }, 439 "arguments": [], 440 "optional": false, 441 "loc": { 442 "start": { 443 "line": 23, 444 "column": 9, 445 "program": "test-class-constructor.ts" 446 }, 447 "end": { 448 "line": 23, 449 "column": 17, 450 "program": "test-class-constructor.ts" 451 } 452 } 453 }, 454 "loc": { 455 "start": { 456 "line": 23, 457 "column": 9, 458 "program": "test-class-constructor.ts" 459 }, 460 "end": { 461 "line": 23, 462 "column": 18, 463 "program": "test-class-constructor.ts" 464 } 465 } 466 } 467 ], 468 "loc": { 469 "start": { 470 "line": 20, 471 "column": 41, 472 "program": "test-class-constructor.ts" 473 }, 474 "end": { 475 "line": 24, 476 "column": 6, 477 "program": "test-class-constructor.ts" 478 } 479 } 480 }, 481 "loc": { 482 "start": { 483 "line": 20, 484 "column": 16, 485 "program": "test-class-constructor.ts" 486 }, 487 "end": { 488 "line": 24, 489 "column": 6, 490 "program": "test-class-constructor.ts" 491 } 492 } 493 }, 494 "loc": { 495 "start": { 496 "line": 20, 497 "column": 16, 498 "program": "test-class-constructor.ts" 499 }, 500 "end": { 501 "line": 24, 502 "column": 6, 503 "program": "test-class-constructor.ts" 504 } 505 } 506 }, 507 "overloads": [], 508 "decorators": [], 509 "loc": { 510 "start": { 511 "line": 20, 512 "column": 5, 513 "program": "test-class-constructor.ts" 514 }, 515 "end": { 516 "line": 24, 517 "column": 6, 518 "program": "test-class-constructor.ts" 519 } 520 } 521 }, 522 "body": [ 523 { 524 "type": "ClassProperty", 525 "key": { 526 "type": "Identifier", 527 "name": "s", 528 "decorators": [], 529 "loc": { 530 "start": { 531 "line": 18, 532 "column": 5, 533 "program": "test-class-constructor.ts" 534 }, 535 "end": { 536 "line": 18, 537 "column": 6, 538 "program": "test-class-constructor.ts" 539 } 540 } 541 }, 542 "static": false, 543 "readonly": false, 544 "declare": false, 545 "optional": false, 546 "computed": false, 547 "typeAnnotation": { 548 "type": "TSStringKeyword", 549 "loc": { 550 "start": { 551 "line": 18, 552 "column": 8, 553 "program": "test-class-constructor.ts" 554 }, 555 "end": { 556 "line": 18, 557 "column": 14, 558 "program": "test-class-constructor.ts" 559 } 560 } 561 }, 562 "definite": false, 563 "decorators": [], 564 "loc": { 565 "start": { 566 "line": 18, 567 "column": 5, 568 "program": "test-class-constructor.ts" 569 }, 570 "end": { 571 "line": 18, 572 "column": 6, 573 "program": "test-class-constructor.ts" 574 } 575 } 576 }, 577 { 578 "type": "ClassProperty", 579 "key": { 580 "type": "Identifier", 581 "name": "n", 582 "decorators": [], 583 "loc": { 584 "start": { 585 "line": 19, 586 "column": 5, 587 "program": "test-class-constructor.ts" 588 }, 589 "end": { 590 "line": 19, 591 "column": 6, 592 "program": "test-class-constructor.ts" 593 } 594 } 595 }, 596 "static": false, 597 "readonly": false, 598 "declare": false, 599 "optional": false, 600 "computed": false, 601 "typeAnnotation": { 602 "type": "TSNumberKeyword", 603 "loc": { 604 "start": { 605 "line": 19, 606 "column": 8, 607 "program": "test-class-constructor.ts" 608 }, 609 "end": { 610 "line": 19, 611 "column": 14, 612 "program": "test-class-constructor.ts" 613 } 614 } 615 }, 616 "definite": false, 617 "decorators": [], 618 "loc": { 619 "start": { 620 "line": 19, 621 "column": 5, 622 "program": "test-class-constructor.ts" 623 }, 624 "end": { 625 "line": 19, 626 "column": 6, 627 "program": "test-class-constructor.ts" 628 } 629 } 630 }, 631 { 632 "type": "MethodDefinition", 633 "key": { 634 "type": "Identifier", 635 "name": "f", 636 "decorators": [], 637 "loc": { 638 "start": { 639 "line": 25, 640 "column": 5, 641 "program": "test-class-constructor.ts" 642 }, 643 "end": { 644 "line": 25, 645 "column": 6, 646 "program": "test-class-constructor.ts" 647 } 648 } 649 }, 650 "kind": "method", 651 "static": false, 652 "optional": false, 653 "computed": false, 654 "value": { 655 "type": "FunctionExpression", 656 "function": { 657 "type": "ScriptFunction", 658 "id": null, 659 "generator": false, 660 "async": false, 661 "expression": false, 662 "params": [], 663 "returnType": { 664 "type": "TSVoidKeyword", 665 "loc": { 666 "start": { 667 "line": 25, 668 "column": 10, 669 "program": "test-class-constructor.ts" 670 }, 671 "end": { 672 "line": 25, 673 "column": 14, 674 "program": "test-class-constructor.ts" 675 } 676 } 677 }, 678 "body": { 679 "type": "BlockStatement", 680 "statements": [ 681 { 682 "type": "ExpressionStatement", 683 "expression": { 684 "type": "UpdateExpression", 685 "operator": "++", 686 "prefix": false, 687 "argument": { 688 "type": "MemberExpression", 689 "object": { 690 "type": "ThisExpression", 691 "loc": { 692 "start": { 693 "line": 26, 694 "column": 9, 695 "program": "test-class-constructor.ts" 696 }, 697 "end": { 698 "line": 26, 699 "column": 13, 700 "program": "test-class-constructor.ts" 701 } 702 } 703 }, 704 "property": { 705 "type": "Identifier", 706 "name": "n", 707 "decorators": [], 708 "loc": { 709 "start": { 710 "line": 26, 711 "column": 14, 712 "program": "test-class-constructor.ts" 713 }, 714 "end": { 715 "line": 26, 716 "column": 15, 717 "program": "test-class-constructor.ts" 718 } 719 } 720 }, 721 "computed": false, 722 "optional": false, 723 "loc": { 724 "start": { 725 "line": 26, 726 "column": 9, 727 "program": "test-class-constructor.ts" 728 }, 729 "end": { 730 "line": 26, 731 "column": 15, 732 "program": "test-class-constructor.ts" 733 } 734 } 735 }, 736 "loc": { 737 "start": { 738 "line": 26, 739 "column": 9, 740 "program": "test-class-constructor.ts" 741 }, 742 "end": { 743 "line": 26, 744 "column": 17, 745 "program": "test-class-constructor.ts" 746 } 747 } 748 }, 749 "loc": { 750 "start": { 751 "line": 26, 752 "column": 9, 753 "program": "test-class-constructor.ts" 754 }, 755 "end": { 756 "line": 26, 757 "column": 18, 758 "program": "test-class-constructor.ts" 759 } 760 } 761 } 762 ], 763 "loc": { 764 "start": { 765 "line": 25, 766 "column": 15, 767 "program": "test-class-constructor.ts" 768 }, 769 "end": { 770 "line": 27, 771 "column": 6, 772 "program": "test-class-constructor.ts" 773 } 774 } 775 }, 776 "loc": { 777 "start": { 778 "line": 25, 779 "column": 6, 780 "program": "test-class-constructor.ts" 781 }, 782 "end": { 783 "line": 27, 784 "column": 6, 785 "program": "test-class-constructor.ts" 786 } 787 } 788 }, 789 "loc": { 790 "start": { 791 "line": 25, 792 "column": 6, 793 "program": "test-class-constructor.ts" 794 }, 795 "end": { 796 "line": 27, 797 "column": 6, 798 "program": "test-class-constructor.ts" 799 } 800 } 801 }, 802 "overloads": [], 803 "decorators": [], 804 "loc": { 805 "start": { 806 "line": 25, 807 "column": 5, 808 "program": "test-class-constructor.ts" 809 }, 810 "end": { 811 "line": 27, 812 "column": 6, 813 "program": "test-class-constructor.ts" 814 } 815 } 816 } 817 ], 818 "loc": { 819 "start": { 820 "line": 17, 821 "column": 11, 822 "program": "test-class-constructor.ts" 823 }, 824 "end": { 825 "line": 29, 826 "column": 1, 827 "program": "test-class-constructor.ts" 828 } 829 } 830 }, 831 "loc": { 832 "start": { 833 "line": 17, 834 "column": 1, 835 "program": "test-class-constructor.ts" 836 }, 837 "end": { 838 "line": 29, 839 "column": 1, 840 "program": "test-class-constructor.ts" 841 } 842 } 843 } 844 ], 845 "loc": { 846 "start": { 847 "line": 1, 848 "column": 1, 849 "program": "test-class-constructor.ts" 850 }, 851 "end": { 852 "line": 29, 853 "column": 1, 854 "program": "test-class-constructor.ts" 855 } 856 } 857} 858