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