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