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