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