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