From 54cdd1d3b6edb97cfd48cd358e48346f5629883c Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Sat, 2 May 2026 14:44:30 +0200 Subject: [PATCH 1/2] Update try_catch test with (broken) try{/*no throw*/}catch(){} examples --- ...exer__tests__all_samples@try_catch.as.snap | 1154 +++++--- ...r__tests__all_samples@try_catch.pcode.snap | 2338 +++++++++++------ ...r__tests__all_samples@try_catch.pcode.snap | 136 +- ...arser__tests__printed@try_catch.pcode.snap | 98 +- ...gram__tests__all_samples@try_catch.as.snap | 347 ++- ...scal__tests__all_samples@try_catch.as.snap | 117 +- samples/as2/try_catch.as | 23 + samples/as2_pcode/try_catch.pcode | 98 +- 8 files changed, 3080 insertions(+), 1231 deletions(-) diff --git a/crates/rascal/src/internal/as2/lexer/snapshots/rascal__internal__as2__lexer__tests__all_samples@try_catch.as.snap b/crates/rascal/src/internal/as2/lexer/snapshots/rascal__internal__as2__lexer__tests__all_samples@try_catch.as.snap index 91ddb0e..dd55d5c 100644 --- a/crates/rascal/src/internal/as2/lexer/snapshots/rascal__internal__as2__lexer__tests__all_samples@try_catch.as.snap +++ b/crates/rascal/src/internal/as2/lexer/snapshots/rascal__internal__as2__lexer__tests__all_samples@try_catch.as.snap @@ -511,775 +511,1335 @@ input_file: samples/as2/try_catch.as String: Double span: start: 314 - end: 352 - raw: " -- try catch(MovieClip) finally -- " + end: 333 + raw: " -- empty try -- " - kind: CloseParen span: - start: 352 - end: 353 + start: 333 + end: 334 raw: ) - kind: Semicolon + span: + start: 334 + end: 335 + raw: ; +- kind: Newline + span: + start: 335 + end: 336 + raw: "\n" +- kind: + Keyword: Try + span: + start: 336 + end: 339 + raw: try +- kind: OpenBrace + span: + start: 340 + end: 341 + raw: "{" +- kind: Newline + span: + start: 341 + end: 342 + raw: "\n" +- kind: CloseBrace + span: + start: 342 + end: 343 + raw: "}" +- kind: + Keyword: Catch + span: + start: 344 + end: 349 + raw: catch +- kind: OpenParen + span: + start: 349 + end: 350 + raw: ( +- kind: Identifier + span: + start: 350 + end: 351 + raw: e +- kind: CloseParen + span: + start: 351 + end: 352 + raw: ) +- kind: OpenBrace span: start: 353 end: 354 - raw: ; + raw: "{" - kind: Newline span: start: 354 end: 355 raw: "\n" +- kind: Identifier + span: + start: 356 + end: 361 + raw: trace +- kind: OpenParen + span: + start: 361 + end: 362 + raw: ( +- kind: + String: Double + span: + start: 362 + end: 382 + raw: "caught something! " +- kind: + Operator: Add + span: + start: 383 + end: 384 + raw: + +- kind: Identifier + span: + start: 385 + end: 386 + raw: e +- kind: CloseParen + span: + start: 386 + end: 387 + raw: ) +- kind: Semicolon + span: + start: 387 + end: 388 + raw: ; +- kind: Newline + span: + start: 388 + end: 389 + raw: "\n" +- kind: CloseBrace + span: + start: 389 + end: 390 + raw: "}" +- kind: Newline + span: + start: 390 + end: 391 + raw: "\n" +- kind: Newline + span: + start: 391 + end: 392 + raw: "\n" +- kind: Identifier + span: + start: 392 + end: 397 + raw: trace +- kind: OpenParen + span: + start: 397 + end: 398 + raw: ( +- kind: + String: Double + span: + start: 398 + end: 425 + raw: " -- try with no throw -- " +- kind: CloseParen + span: + start: 425 + end: 426 + raw: ) +- kind: Semicolon + span: + start: 426 + end: 427 + raw: ; +- kind: Newline + span: + start: 427 + end: 428 + raw: "\n" - kind: Keyword: Try span: - start: 355 - end: 358 + start: 428 + end: 431 raw: try - kind: OpenBrace span: - start: 359 - end: 360 + start: 432 + end: 433 raw: "{" - kind: Newline span: - start: 360 - end: 361 + start: 433 + end: 434 raw: "\n" +- kind: + Keyword: Var + span: + start: 438 + end: 441 + raw: var - kind: Identifier span: - start: 362 - end: 367 + start: 442 + end: 449 + raw: message +- kind: + Operator: Assign + span: + start: 450 + end: 451 + raw: "=" +- kind: + String: Double + span: + start: 452 + end: 461 + raw: message +- kind: Semicolon + span: + start: 461 + end: 462 + raw: ; +- kind: Newline + span: + start: 462 + end: 463 + raw: "\n" +- kind: CloseBrace + span: + start: 463 + end: 464 + raw: "}" +- kind: + Keyword: Catch + span: + start: 465 + end: 470 + raw: catch +- kind: OpenParen + span: + start: 470 + end: 471 + raw: ( +- kind: Identifier + span: + start: 471 + end: 472 + raw: e +- kind: CloseParen + span: + start: 472 + end: 473 + raw: ) +- kind: OpenBrace + span: + start: 474 + end: 475 + raw: "{" +- kind: Newline + span: + start: 475 + end: 476 + raw: "\n" +- kind: Identifier + span: + start: 477 + end: 482 raw: trace - kind: OpenParen span: - start: 367 - end: 368 + start: 482 + end: 483 raw: ( - kind: String: Double span: - start: 368 - end: 374 + start: 483 + end: 503 + raw: "caught something! " +- kind: + Operator: Add + span: + start: 504 + end: 505 + raw: + +- kind: Identifier + span: + start: 506 + end: 507 + raw: e +- kind: CloseParen + span: + start: 507 + end: 508 + raw: ) +- kind: Semicolon + span: + start: 508 + end: 509 + raw: ; +- kind: Newline + span: + start: 509 + end: 510 + raw: "\n" +- kind: CloseBrace + span: + start: 510 + end: 511 + raw: "}" +- kind: Newline + span: + start: 511 + end: 512 + raw: "\n" +- kind: Newline + span: + start: 512 + end: 513 + raw: "\n" +- kind: Identifier + span: + start: 513 + end: 518 + raw: trace +- kind: OpenParen + span: + start: 518 + end: 519 + raw: ( +- kind: + String: Double + span: + start: 519 + end: 555 + raw: " -- try with conditional throw -- " +- kind: CloseParen + span: + start: 555 + end: 556 + raw: ) +- kind: Semicolon + span: + start: 556 + end: 557 + raw: ; +- kind: Newline + span: + start: 557 + end: 558 + raw: "\n" +- kind: + Keyword: Try + span: + start: 558 + end: 561 + raw: try +- kind: OpenBrace + span: + start: 562 + end: 563 + raw: "{" +- kind: Newline + span: + start: 563 + end: 564 + raw: "\n" +- kind: + Keyword: Var + span: + start: 568 + end: 571 + raw: var +- kind: Identifier + span: + start: 572 + end: 579 + raw: message +- kind: + Operator: Assign + span: + start: 580 + end: 581 + raw: "=" +- kind: + String: Double + span: + start: 582 + end: 591 + raw: message +- kind: Semicolon + span: + start: 591 + end: 592 + raw: ; +- kind: Newline + span: + start: 592 + end: 593 + raw: "\n" +- kind: + Keyword: If + span: + start: 597 + end: 599 + raw: if +- kind: OpenParen + span: + start: 600 + end: 601 + raw: ( +- kind: Identifier + span: + start: 601 + end: 608 + raw: message +- kind: + Operator: NotEqual + span: + start: 609 + end: 611 + raw: "!=" +- kind: + String: Double + span: + start: 612 + end: 621 + raw: message +- kind: CloseParen + span: + start: 621 + end: 622 + raw: ) +- kind: OpenBrace + span: + start: 623 + end: 624 + raw: "{" +- kind: Newline + span: + start: 624 + end: 625 + raw: "\n" +- kind: + Keyword: Throw + span: + start: 633 + end: 638 + raw: throw +- kind: Identifier + span: + start: 639 + end: 646 + raw: message +- kind: Semicolon + span: + start: 646 + end: 647 + raw: ; +- kind: Newline + span: + start: 647 + end: 648 + raw: "\n" +- kind: CloseBrace + span: + start: 652 + end: 653 + raw: "}" +- kind: Newline + span: + start: 653 + end: 654 + raw: "\n" +- kind: CloseBrace + span: + start: 654 + end: 655 + raw: "}" +- kind: + Keyword: Catch + span: + start: 656 + end: 661 + raw: catch +- kind: OpenParen + span: + start: 661 + end: 662 + raw: ( +- kind: Identifier + span: + start: 662 + end: 663 + raw: e +- kind: CloseParen + span: + start: 663 + end: 664 + raw: ) +- kind: OpenBrace + span: + start: 665 + end: 666 + raw: "{" +- kind: Newline + span: + start: 666 + end: 667 + raw: "\n" +- kind: Identifier + span: + start: 668 + end: 673 + raw: trace +- kind: OpenParen + span: + start: 673 + end: 674 + raw: ( +- kind: + String: Double + span: + start: 674 + end: 694 + raw: "caught something! " +- kind: + Operator: Add + span: + start: 695 + end: 696 + raw: + +- kind: Identifier + span: + start: 697 + end: 698 + raw: e +- kind: CloseParen + span: + start: 698 + end: 699 + raw: ) +- kind: Semicolon + span: + start: 699 + end: 700 + raw: ; +- kind: Newline + span: + start: 700 + end: 701 + raw: "\n" +- kind: CloseBrace + span: + start: 701 + end: 702 + raw: "}" +- kind: Newline + span: + start: 702 + end: 703 + raw: "\n" +- kind: Newline + span: + start: 703 + end: 704 + raw: "\n" +- kind: Identifier + span: + start: 704 + end: 709 + raw: trace +- kind: OpenParen + span: + start: 709 + end: 710 + raw: ( +- kind: + String: Double + span: + start: 710 + end: 748 + raw: " -- try catch(MovieClip) finally -- " +- kind: CloseParen + span: + start: 748 + end: 749 + raw: ) +- kind: Semicolon + span: + start: 749 + end: 750 + raw: ; +- kind: Newline + span: + start: 750 + end: 751 + raw: "\n" +- kind: + Keyword: Try + span: + start: 751 + end: 754 + raw: try +- kind: OpenBrace + span: + start: 755 + end: 756 + raw: "{" +- kind: Newline + span: + start: 756 + end: 757 + raw: "\n" +- kind: Identifier + span: + start: 758 + end: 763 + raw: trace +- kind: OpenParen + span: + start: 763 + end: 764 + raw: ( +- kind: + String: Double + span: + start: 764 + end: 770 raw: try! - kind: CloseParen span: - start: 374 - end: 375 + start: 770 + end: 771 raw: ) - kind: Semicolon span: - start: 375 - end: 376 + start: 771 + end: 772 raw: ; - kind: Newline span: - start: 376 - end: 377 + start: 772 + end: 773 raw: "\n" - kind: Keyword: Throw span: - start: 378 - end: 383 + start: 774 + end: 779 raw: throw - kind: Identifier span: - start: 384 - end: 388 + start: 780 + end: 784 raw: this - kind: Semicolon span: - start: 388 - end: 389 + start: 784 + end: 785 raw: ; - kind: Newline span: - start: 389 - end: 390 + start: 785 + end: 786 raw: "\n" - kind: CloseBrace span: - start: 390 - end: 391 + start: 786 + end: 787 raw: "}" - kind: Keyword: Catch span: - start: 392 - end: 397 + start: 788 + end: 793 raw: catch - kind: OpenParen span: - start: 397 - end: 398 + start: 793 + end: 794 raw: ( - kind: Identifier span: - start: 398 - end: 399 + start: 794 + end: 795 raw: e - kind: Colon span: - start: 399 - end: 400 + start: 795 + end: 796 raw: ":" - kind: Identifier span: - start: 401 - end: 410 + start: 797 + end: 806 raw: MovieClip - kind: CloseParen span: - start: 410 - end: 411 + start: 806 + end: 807 raw: ) - kind: OpenBrace span: - start: 412 - end: 413 + start: 808 + end: 809 raw: "{" - kind: Newline span: - start: 413 - end: 414 + start: 809 + end: 810 raw: "\n" - kind: Identifier span: - start: 415 - end: 420 + start: 811 + end: 816 raw: trace - kind: OpenParen span: - start: 420 - end: 421 + start: 816 + end: 817 raw: ( - kind: String: Double span: - start: 421 - end: 441 + start: 817 + end: 837 raw: "caught something! " - kind: Operator: Add span: - start: 442 - end: 443 + start: 838 + end: 839 raw: + - kind: Identifier span: - start: 444 - end: 445 + start: 840 + end: 841 raw: e - kind: CloseParen span: - start: 445 - end: 446 + start: 841 + end: 842 raw: ) - kind: Semicolon span: - start: 446 - end: 447 + start: 842 + end: 843 raw: ; - kind: Newline span: - start: 447 - end: 448 + start: 843 + end: 844 raw: "\n" - kind: CloseBrace span: - start: 448 - end: 449 + start: 844 + end: 845 raw: "}" - kind: Keyword: Finally span: - start: 450 - end: 457 + start: 846 + end: 853 raw: finally - kind: OpenBrace span: - start: 458 - end: 459 + start: 854 + end: 855 raw: "{" - kind: Newline span: - start: 459 - end: 460 + start: 855 + end: 856 raw: "\n" - kind: Identifier span: - start: 464 - end: 469 + start: 860 + end: 865 raw: trace - kind: OpenParen span: - start: 469 - end: 470 + start: 865 + end: 866 raw: ( - kind: String: Double span: - start: 470 - end: 480 + start: 866 + end: 876 raw: finally! - kind: CloseParen span: - start: 480 - end: 481 + start: 876 + end: 877 raw: ) - kind: Semicolon span: - start: 481 - end: 482 + start: 877 + end: 878 raw: ; - kind: Newline span: - start: 482 - end: 483 + start: 878 + end: 879 raw: "\n" - kind: CloseBrace span: - start: 483 - end: 484 + start: 879 + end: 880 raw: "}" - kind: Newline span: - start: 484 - end: 485 + start: 880 + end: 881 raw: "\n" - kind: Newline span: - start: 485 - end: 486 + start: 881 + end: 882 raw: "\n" - kind: Identifier span: - start: 486 - end: 491 + start: 882 + end: 887 raw: trace - kind: OpenParen span: - start: 491 - end: 492 + start: 887 + end: 888 raw: ( - kind: String: Double span: - start: 492 - end: 535 + start: 888 + end: 931 raw: " -- try catch(MovieClip) catch(Number) --" - kind: CloseParen span: - start: 535 - end: 536 + start: 931 + end: 932 raw: ) - kind: Semicolon span: - start: 536 - end: 537 + start: 932 + end: 933 raw: ; - kind: Newline span: - start: 537 - end: 538 + start: 933 + end: 934 raw: "\n" - kind: Keyword: Try span: - start: 538 - end: 541 + start: 934 + end: 937 raw: try - kind: OpenBrace span: - start: 542 - end: 543 + start: 938 + end: 939 raw: "{" - kind: Newline span: - start: 543 - end: 544 + start: 939 + end: 940 raw: "\n" - kind: Identifier span: - start: 545 - end: 550 + start: 941 + end: 946 raw: trace - kind: OpenParen span: - start: 550 - end: 551 + start: 946 + end: 947 raw: ( - kind: String: Double span: - start: 551 - end: 557 + start: 947 + end: 953 raw: try! - kind: CloseParen span: - start: 557 - end: 558 + start: 953 + end: 954 raw: ) - kind: Semicolon span: - start: 558 - end: 559 + start: 954 + end: 955 raw: ; - kind: Newline span: - start: 559 - end: 560 + start: 955 + end: 956 raw: "\n" - kind: Keyword: Throw span: - start: 561 - end: 566 + start: 957 + end: 962 raw: throw - kind: Identifier span: - start: 567 - end: 571 + start: 963 + end: 967 raw: this - kind: Semicolon span: - start: 571 - end: 572 + start: 967 + end: 968 raw: ; - kind: Newline span: - start: 572 - end: 573 + start: 968 + end: 969 raw: "\n" - kind: CloseBrace span: - start: 573 - end: 574 + start: 969 + end: 970 raw: "}" - kind: Keyword: Catch span: - start: 575 - end: 580 + start: 971 + end: 976 raw: catch - kind: OpenParen span: - start: 580 - end: 581 + start: 976 + end: 977 raw: ( - kind: Identifier span: - start: 581 - end: 582 + start: 977 + end: 978 raw: e - kind: Colon span: - start: 582 - end: 583 + start: 978 + end: 979 raw: ":" - kind: Identifier span: - start: 584 - end: 593 + start: 980 + end: 989 raw: MovieClip - kind: CloseParen span: - start: 593 - end: 594 + start: 989 + end: 990 raw: ) - kind: OpenBrace span: - start: 595 - end: 596 + start: 991 + end: 992 raw: "{" - kind: Newline span: - start: 596 - end: 597 + start: 992 + end: 993 raw: "\n" - kind: Identifier span: - start: 598 - end: 603 + start: 994 + end: 999 raw: trace - kind: OpenParen span: - start: 603 - end: 604 + start: 999 + end: 1000 raw: ( - kind: String: Double span: - start: 604 - end: 635 + start: 1000 + end: 1031 raw: catch something of MovieClip! - kind: CloseParen span: - start: 635 - end: 636 + start: 1031 + end: 1032 raw: ) - kind: Semicolon span: - start: 636 - end: 637 + start: 1032 + end: 1033 raw: ; - kind: Newline span: - start: 637 - end: 638 + start: 1033 + end: 1034 raw: "\n" - kind: CloseBrace span: - start: 638 - end: 639 + start: 1034 + end: 1035 raw: "}" - kind: Keyword: Catch span: - start: 640 - end: 645 + start: 1036 + end: 1041 raw: catch - kind: OpenParen span: - start: 645 - end: 646 + start: 1041 + end: 1042 raw: ( - kind: Identifier span: - start: 646 - end: 647 + start: 1042 + end: 1043 raw: e - kind: Colon span: - start: 647 - end: 648 + start: 1043 + end: 1044 raw: ":" - kind: Identifier span: - start: 649 - end: 655 + start: 1045 + end: 1051 raw: Number - kind: CloseParen span: - start: 655 - end: 656 + start: 1051 + end: 1052 raw: ) - kind: OpenBrace span: - start: 657 - end: 658 + start: 1053 + end: 1054 raw: "{" - kind: Newline span: - start: 658 - end: 659 + start: 1054 + end: 1055 raw: "\n" - kind: Identifier span: - start: 660 - end: 665 + start: 1056 + end: 1061 raw: trace - kind: OpenParen span: - start: 665 - end: 666 + start: 1061 + end: 1062 raw: ( - kind: String: Double span: - start: 666 - end: 694 + start: 1062 + end: 1090 raw: catch something of Number! - kind: CloseParen span: - start: 694 - end: 695 + start: 1090 + end: 1091 raw: ) - kind: Semicolon span: - start: 695 - end: 696 + start: 1091 + end: 1092 raw: ; - kind: Newline span: - start: 696 - end: 697 + start: 1092 + end: 1093 raw: "\n" - kind: CloseBrace span: - start: 697 - end: 698 + start: 1093 + end: 1094 raw: "}" - kind: Keyword: Catch span: - start: 699 - end: 704 + start: 1095 + end: 1100 raw: catch - kind: OpenParen span: - start: 704 - end: 705 + start: 1100 + end: 1101 raw: ( - kind: Identifier span: - start: 705 - end: 706 + start: 1101 + end: 1102 raw: e - kind: CloseParen span: - start: 706 - end: 707 + start: 1102 + end: 1103 raw: ) - kind: OpenBrace span: - start: 708 - end: 709 + start: 1104 + end: 1105 raw: "{" - kind: Newline span: - start: 709 - end: 710 + start: 1105 + end: 1106 raw: "\n" - kind: Identifier span: - start: 711 - end: 716 + start: 1107 + end: 1112 raw: trace - kind: OpenParen span: - start: 716 - end: 717 + start: 1112 + end: 1113 raw: ( - kind: String: Double span: - start: 717 - end: 739 + start: 1113 + end: 1135 raw: catch anything else! - kind: CloseParen span: - start: 739 - end: 740 + start: 1135 + end: 1136 raw: ) - kind: Semicolon span: - start: 740 - end: 741 + start: 1136 + end: 1137 raw: ; - kind: Newline span: - start: 741 - end: 742 + start: 1137 + end: 1138 raw: "\n" - kind: CloseBrace span: - start: 742 - end: 743 + start: 1138 + end: 1139 raw: "}" - kind: Newline span: - start: 743 - end: 744 + start: 1139 + end: 1140 raw: "\n" - kind: Newline span: - start: 744 - end: 745 + start: 1140 + end: 1141 raw: "\n" - kind: Identifier span: - start: 774 - end: 779 + start: 1170 + end: 1175 raw: trace - kind: OpenParen span: - start: 779 - end: 780 + start: 1175 + end: 1176 raw: ( - kind: String: Double span: - start: 780 - end: 801 + start: 1176 + end: 1197 raw: " -- try finally -- " - kind: CloseParen span: - start: 801 - end: 802 + start: 1197 + end: 1198 raw: ) - kind: Semicolon span: - start: 802 - end: 803 + start: 1198 + end: 1199 raw: ; - kind: Newline span: - start: 803 - end: 804 + start: 1199 + end: 1200 raw: "\n" - kind: Newline span: - start: 804 - end: 805 + start: 1200 + end: 1201 raw: "\n" - kind: Keyword: Try span: - start: 805 - end: 808 + start: 1201 + end: 1204 raw: try - kind: OpenBrace span: - start: 809 - end: 810 + start: 1205 + end: 1206 raw: "{" - kind: Newline span: - start: 810 - end: 811 + start: 1206 + end: 1207 raw: "\n" - kind: Identifier span: - start: 812 - end: 817 + start: 1208 + end: 1213 raw: trace - kind: OpenParen span: - start: 817 - end: 818 + start: 1213 + end: 1214 raw: ( - kind: String: Double span: - start: 818 - end: 824 + start: 1214 + end: 1220 raw: try! - kind: CloseParen span: - start: 824 - end: 825 + start: 1220 + end: 1221 raw: ) - kind: Semicolon span: - start: 825 - end: 826 + start: 1221 + end: 1222 raw: ; - kind: Newline span: - start: 826 - end: 827 + start: 1222 + end: 1223 raw: "\n" - kind: Keyword: Throw span: - start: 831 - end: 836 + start: 1227 + end: 1232 raw: throw - kind: Identifier span: - start: 837 - end: 841 + start: 1233 + end: 1237 raw: "null" - kind: Semicolon span: - start: 841 - end: 842 + start: 1237 + end: 1238 raw: ; - kind: Newline span: - start: 842 - end: 843 + start: 1238 + end: 1239 raw: "\n" - kind: CloseBrace span: - start: 843 - end: 844 + start: 1239 + end: 1240 raw: "}" - kind: Keyword: Finally span: - start: 845 - end: 852 + start: 1241 + end: 1248 raw: finally - kind: OpenBrace span: - start: 853 - end: 854 + start: 1249 + end: 1250 raw: "{" - kind: Newline span: - start: 854 - end: 855 + start: 1250 + end: 1251 raw: "\n" - kind: Identifier span: - start: 856 - end: 861 + start: 1252 + end: 1257 raw: trace - kind: OpenParen span: - start: 861 - end: 862 + start: 1257 + end: 1258 raw: ( - kind: String: Double span: - start: 862 - end: 872 + start: 1258 + end: 1268 raw: finally! - kind: CloseParen span: - start: 872 - end: 873 + start: 1268 + end: 1269 raw: ) - kind: Semicolon span: - start: 873 - end: 874 + start: 1269 + end: 1270 raw: ; - kind: Newline span: - start: 874 - end: 875 + start: 1270 + end: 1271 raw: "\n" - kind: CloseBrace span: - start: 875 - end: 876 + start: 1271 + end: 1272 raw: "}" - kind: Newline span: - start: 876 - end: 877 + start: 1272 + end: 1273 raw: "\n" - kind: Newline span: - start: 877 - end: 878 + start: 1273 + end: 1274 raw: "\n" - kind: Identifier span: - start: 878 - end: 883 + start: 1274 + end: 1279 raw: trace - kind: OpenParen span: - start: 883 - end: 884 + start: 1279 + end: 1280 raw: ( - kind: String: Double span: - start: 884 - end: 922 + start: 1280 + end: 1318 raw: "If you see this, it didn't throw! :(" - kind: CloseParen span: - start: 922 - end: 923 + start: 1318 + end: 1319 raw: ) - kind: Newline span: - start: 923 - end: 924 + start: 1319 + end: 1320 raw: "\n" diff --git a/crates/rascal/src/internal/as2_pcode/lexer/snapshots/rascal__internal__as2_pcode__lexer__tests__all_samples@try_catch.pcode.snap b/crates/rascal/src/internal/as2_pcode/lexer/snapshots/rascal__internal__as2_pcode__lexer__tests__all_samples@try_catch.pcode.snap index fa40ca1..8ca952f 100644 --- a/crates/rascal/src/internal/as2_pcode/lexer/snapshots/rascal__internal__as2_pcode__lexer__tests__all_samples@try_catch.pcode.snap +++ b/crates/rascal/src/internal/as2_pcode/lexer/snapshots/rascal__internal__as2_pcode__lexer__tests__all_samples@try_catch.pcode.snap @@ -112,1999 +112,2793 @@ input_file: samples/as2_pcode/try_catch.pcode - kind: String span: start: 155 - end: 193 + end: 174 + raw: " -- empty try -- " +- kind: Comma + span: + start: 174 + end: 175 + raw: "," +- kind: String + span: + start: 176 + end: 203 + raw: " -- try with no throw -- " +- kind: Comma + span: + start: 203 + end: 204 + raw: "," +- kind: String + span: + start: 205 + end: 241 + raw: " -- try with conditional throw -- " +- kind: Comma + span: + start: 241 + end: 242 + raw: "," +- kind: String + span: + start: 243 + end: 281 raw: " -- try catch(MovieClip) finally -- " - kind: Comma span: - start: 193 - end: 194 + start: 281 + end: 282 raw: "," - kind: String span: - start: 195 - end: 201 + start: 283 + end: 289 raw: this - kind: Comma span: - start: 201 - end: 202 + start: 289 + end: 290 raw: "," - kind: String span: - start: 203 - end: 214 + start: 291 + end: 302 raw: MovieClip - kind: Comma span: - start: 214 - end: 215 + start: 302 + end: 303 raw: "," - kind: String span: - start: 216 - end: 259 + start: 304 + end: 347 raw: " -- try catch(MovieClip) catch(Number) --" - kind: Comma span: - start: 259 - end: 260 + start: 347 + end: 348 raw: "," - kind: String span: - start: 261 - end: 292 + start: 349 + end: 380 raw: catch something of MovieClip! - kind: Comma span: - start: 292 - end: 293 + start: 380 + end: 381 raw: "," - kind: String span: - start: 294 - end: 302 + start: 382 + end: 390 raw: Number - kind: Comma span: - start: 302 - end: 303 + start: 390 + end: 391 raw: "," - kind: String span: - start: 304 - end: 332 + start: 392 + end: 420 raw: catch something of Number! - kind: Comma span: - start: 332 - end: 333 + start: 420 + end: 421 raw: "," - kind: String span: - start: 334 - end: 356 + start: 422 + end: 444 raw: catch anything else! - kind: Comma span: - start: 356 - end: 357 + start: 444 + end: 445 raw: "," - kind: String span: - start: 358 - end: 379 + start: 446 + end: 467 raw: " -- try finally -- " - kind: Comma span: - start: 379 - end: 380 + start: 467 + end: 468 raw: "," - kind: String span: - start: 381 - end: 420 + start: 469 + end: 508 raw: "If you see this, it didn\\'t throw! :(" - kind: Newline span: - start: 420 - end: 421 + start: 508 + end: 509 raw: "\n" - kind: ActionName: Push span: - start: 421 - end: 425 + start: 509 + end: 513 raw: Push - kind: Constant: 0 span: - start: 426 - end: 435 + start: 514 + end: 523 raw: constant0 - kind: Newline span: - start: 435 - end: 436 + start: 523 + end: 524 raw: "\n" - kind: ActionName: Trace span: - start: 436 - end: 441 + start: 524 + end: 529 raw: Trace - kind: Newline span: - start: 441 - end: 442 + start: 529 + end: 530 raw: "\n" - kind: ActionName: Try span: - start: 442 - end: 445 + start: 530 + end: 533 raw: Try - kind: String span: - start: 446 - end: 449 + start: 534 + end: 537 raw: e - kind: OpenBrace span: - start: 450 - end: 451 + start: 538 + end: 539 raw: "{" - kind: Newline span: - start: 451 - end: 452 + start: 539 + end: 540 raw: "\n" - kind: ActionName: Push span: - start: 452 - end: 456 + start: 540 + end: 544 raw: Push - kind: Constant: 1 span: - start: 457 - end: 466 + start: 545 + end: 554 raw: constant1 - kind: Newline span: - start: 466 - end: 467 + start: 554 + end: 555 raw: "\n" - kind: ActionName: Trace span: - start: 467 - end: 472 + start: 555 + end: 560 raw: Trace - kind: Newline span: - start: 472 - end: 473 + start: 560 + end: 561 raw: "\n" - kind: ActionName: Push span: - start: 473 - end: 477 + start: 561 + end: 565 raw: Push - kind: Constant: 2 span: - start: 478 - end: 487 + start: 566 + end: 575 raw: constant2 - kind: Newline span: - start: 487 - end: 488 + start: 575 + end: 576 raw: "\n" - kind: ActionName: Push span: - start: 488 - end: 492 + start: 576 + end: 580 raw: Push - kind: Constant: 3 span: - start: 493 - end: 502 + start: 581 + end: 590 raw: constant3 - kind: Newline span: - start: 502 - end: 503 + start: 590 + end: 591 raw: "\n" - kind: ActionName: DefineLocal span: - start: 503 - end: 514 + start: 591 + end: 602 raw: DefineLocal - kind: Newline span: - start: 514 - end: 515 + start: 602 + end: 603 raw: "\n" - kind: ActionName: Push span: - start: 515 - end: 519 + start: 603 + end: 607 raw: Push - kind: Constant: 2 span: - start: 520 - end: 529 + start: 608 + end: 617 raw: constant2 - kind: Newline span: - start: 529 - end: 530 + start: 617 + end: 618 raw: "\n" - kind: ActionName: GetVariable span: - start: 530 - end: 541 + start: 618 + end: 629 raw: GetVariable - kind: Newline span: - start: 541 - end: 542 + start: 629 + end: 630 raw: "\n" - kind: ActionName: Throw span: - start: 542 - end: 547 + start: 630 + end: 635 raw: Throw - kind: Newline span: - start: 547 - end: 548 + start: 635 + end: 636 raw: "\n" - kind: CloseBrace span: - start: 548 - end: 549 + start: 636 + end: 637 raw: "}" - kind: Newline span: - start: 549 - end: 550 + start: 637 + end: 638 raw: "\n" - kind: Catch span: - start: 550 - end: 555 + start: 638 + end: 643 raw: Catch - kind: OpenBrace span: - start: 556 - end: 557 + start: 644 + end: 645 raw: "{" - kind: Newline span: - start: 557 - end: 558 + start: 645 + end: 646 raw: "\n" - kind: ActionName: Push span: - start: 558 - end: 562 + start: 646 + end: 650 raw: Push - kind: Constant: 4 span: - start: 563 - end: 572 + start: 651 + end: 660 raw: constant4 - kind: Newline span: - start: 572 - end: 573 + start: 660 + end: 661 raw: "\n" - kind: ActionName: Trace span: - start: 573 - end: 578 + start: 661 + end: 666 raw: Trace - kind: Newline span: - start: 578 - end: 579 + start: 666 + end: 667 raw: "\n" - kind: ActionName: Push span: - start: 579 - end: 583 + start: 667 + end: 671 raw: Push - kind: Constant: 5 span: - start: 584 - end: 593 + start: 672 + end: 681 raw: constant5 - kind: Newline span: - start: 593 - end: 594 + start: 681 + end: 682 raw: "\n" - kind: ActionName: GetVariable span: - start: 594 - end: 605 + start: 682 + end: 693 raw: GetVariable - kind: Newline span: - start: 605 - end: 606 + start: 693 + end: 694 raw: "\n" - kind: ActionName: Trace span: - start: 606 - end: 611 + start: 694 + end: 699 raw: Trace - kind: Newline span: - start: 611 - end: 612 + start: 699 + end: 700 raw: "\n" - kind: CloseBrace span: - start: 612 - end: 613 + start: 700 + end: 701 raw: "}" - kind: Newline span: - start: 613 - end: 614 + start: 701 + end: 702 raw: "\n" - kind: Finally span: - start: 614 - end: 621 + start: 702 + end: 709 raw: Finally - kind: OpenBrace span: - start: 622 - end: 623 + start: 710 + end: 711 raw: "{" - kind: Newline span: - start: 623 - end: 624 + start: 711 + end: 712 raw: "\n" - kind: ActionName: Push span: - start: 624 - end: 628 + start: 712 + end: 716 raw: Push - kind: Constant: 6 span: - start: 629 - end: 638 + start: 717 + end: 726 raw: constant6 - kind: Newline span: - start: 638 - end: 639 + start: 726 + end: 727 raw: "\n" - kind: ActionName: Trace span: - start: 639 - end: 644 + start: 727 + end: 732 raw: Trace - kind: Newline span: - start: 644 - end: 645 + start: 732 + end: 733 raw: "\n" - kind: CloseBrace span: - start: 645 - end: 646 + start: 733 + end: 734 raw: "}" - kind: Newline span: - start: 646 - end: 647 + start: 734 + end: 735 raw: "\n" - kind: ActionName: Push span: - start: 647 - end: 651 + start: 735 + end: 739 raw: Push - kind: Constant: 7 span: - start: 652 - end: 661 + start: 740 + end: 749 raw: constant7 - kind: Newline span: - start: 661 - end: 662 + start: 749 + end: 750 raw: "\n" - kind: ActionName: Trace span: - start: 662 - end: 667 + start: 750 + end: 755 raw: Trace - kind: Newline span: - start: 667 - end: 668 + start: 755 + end: 756 raw: "\n" - kind: ActionName: Try span: - start: 668 - end: 671 + start: 756 + end: 759 raw: Try - kind: String span: - start: 672 - end: 675 + start: 760 + end: 763 raw: e - kind: OpenBrace span: - start: 676 - end: 677 + start: 764 + end: 765 raw: "{" - kind: Newline span: - start: 677 - end: 678 + start: 765 + end: 766 raw: "\n" - kind: ActionName: Push span: - start: 678 - end: 682 + start: 766 + end: 770 raw: Push - kind: Constant: 1 span: - start: 683 - end: 692 + start: 771 + end: 780 raw: constant1 - kind: Newline span: - start: 692 - end: 693 + start: 780 + end: 781 raw: "\n" - kind: ActionName: Trace span: - start: 693 - end: 698 + start: 781 + end: 786 raw: Trace - kind: Newline span: - start: 698 - end: 699 + start: 786 + end: 787 raw: "\n" - kind: ActionName: Push span: - start: 699 - end: 703 + start: 787 + end: 791 raw: Push - kind: Constant: 8 span: - start: 704 - end: 713 + start: 792 + end: 801 raw: constant8 - kind: Newline span: - start: 713 - end: 714 + start: 801 + end: 802 raw: "\n" - kind: ActionName: Throw span: - start: 714 - end: 719 + start: 802 + end: 807 raw: Throw - kind: Newline span: - start: 719 - end: 720 + start: 807 + end: 808 raw: "\n" - kind: CloseBrace span: - start: 720 - end: 721 + start: 808 + end: 809 raw: "}" - kind: Newline span: - start: 721 - end: 722 + start: 809 + end: 810 raw: "\n" - kind: Catch span: - start: 722 - end: 727 + start: 810 + end: 815 raw: Catch - kind: OpenBrace span: - start: 728 - end: 729 + start: 816 + end: 817 raw: "{" - kind: Newline span: - start: 729 - end: 730 + start: 817 + end: 818 raw: "\n" - kind: ActionName: Push span: - start: 730 - end: 734 + start: 818 + end: 822 raw: Push - kind: Constant: 9 span: - start: 735 - end: 744 + start: 823 + end: 832 raw: constant9 - kind: Newline span: - start: 744 - end: 745 + start: 832 + end: 833 raw: "\n" - kind: ActionName: Push span: - start: 745 - end: 749 + start: 833 + end: 837 raw: Push - kind: Constant: 5 span: - start: 750 - end: 759 + start: 838 + end: 847 raw: constant5 - kind: Newline span: - start: 759 - end: 760 + start: 847 + end: 848 raw: "\n" - kind: ActionName: GetVariable span: - start: 760 - end: 771 + start: 848 + end: 859 raw: GetVariable - kind: Newline span: - start: 771 - end: 772 + start: 859 + end: 860 + raw: "\n" +- kind: + ActionName: Add2 + span: + start: 860 + end: 864 + raw: Add2 +- kind: Newline + span: + start: 864 + end: 865 + raw: "\n" +- kind: + ActionName: Trace + span: + start: 865 + end: 870 + raw: Trace +- kind: Newline + span: + start: 870 + end: 871 + raw: "\n" +- kind: CloseBrace + span: + start: 871 + end: 872 + raw: "}" +- kind: Newline + span: + start: 872 + end: 873 + raw: "\n" +- kind: + ActionName: Push + span: + start: 873 + end: 877 + raw: Push +- kind: + Constant: 10 + span: + start: 878 + end: 888 + raw: constant10 +- kind: Newline + span: + start: 888 + end: 889 + raw: "\n" +- kind: + ActionName: Trace + span: + start: 889 + end: 894 + raw: Trace +- kind: Newline + span: + start: 894 + end: 895 + raw: "\n" +- kind: + ActionName: Try + span: + start: 895 + end: 898 + raw: Try +- kind: String + span: + start: 899 + end: 902 + raw: e +- kind: OpenBrace + span: + start: 903 + end: 904 + raw: "{" +- kind: Newline + span: + start: 904 + end: 905 + raw: "\n" +- kind: + ActionName: Jump + span: + start: 905 + end: 909 + raw: Jump +- kind: Identifier + span: + start: 910 + end: 917 + raw: loc023c +- kind: Newline + span: + start: 917 + end: 918 + raw: "\n" +- kind: CloseBrace + span: + start: 918 + end: 919 + raw: "}" +- kind: Newline + span: + start: 919 + end: 920 + raw: "\n" +- kind: Catch + span: + start: 920 + end: 925 + raw: Catch +- kind: OpenBrace + span: + start: 926 + end: 927 + raw: "{" +- kind: Newline + span: + start: 927 + end: 928 + raw: "\n" +- kind: + ActionName: Push + span: + start: 928 + end: 932 + raw: Push +- kind: + Constant: 9 + span: + start: 933 + end: 942 + raw: constant9 +- kind: Newline + span: + start: 942 + end: 943 + raw: "\n" +- kind: + ActionName: Push + span: + start: 943 + end: 947 + raw: Push +- kind: + Constant: 5 + span: + start: 948 + end: 957 + raw: constant5 +- kind: Newline + span: + start: 957 + end: 958 + raw: "\n" +- kind: + ActionName: GetVariable + span: + start: 958 + end: 969 + raw: GetVariable +- kind: Newline + span: + start: 969 + end: 970 raw: "\n" - kind: ActionName: Add2 span: - start: 772 - end: 776 + start: 970 + end: 974 raw: Add2 - kind: Newline span: - start: 776 - end: 777 + start: 974 + end: 975 raw: "\n" - kind: ActionName: Trace span: - start: 777 - end: 782 + start: 975 + end: 980 raw: Trace - kind: Newline span: - start: 782 - end: 783 + start: 980 + end: 981 raw: "\n" - kind: CloseBrace span: - start: 783 - end: 784 + start: 981 + end: 982 raw: "}" - kind: Newline span: - start: 784 - end: 785 - raw: "\n" + start: 982 + end: 983 + raw: "\n" +- kind: Identifier + span: + start: 983 + end: 990 + raw: loc023c +- kind: Colon + span: + start: 990 + end: 991 + raw: ":" +- kind: + ActionName: Push + span: + start: 991 + end: 995 + raw: Push +- kind: + Constant: 11 + span: + start: 996 + end: 1006 + raw: constant11 +- kind: Newline + span: + start: 1006 + end: 1007 + raw: "\n" +- kind: + ActionName: Trace + span: + start: 1007 + end: 1012 + raw: Trace +- kind: Newline + span: + start: 1012 + end: 1013 + raw: "\n" +- kind: + ActionName: Try + span: + start: 1013 + end: 1016 + raw: Try +- kind: String + span: + start: 1017 + end: 1020 + raw: e +- kind: OpenBrace + span: + start: 1021 + end: 1022 + raw: "{" +- kind: Newline + span: + start: 1022 + end: 1023 + raw: "\n" +- kind: + ActionName: Push + span: + start: 1023 + end: 1027 + raw: Push +- kind: + Constant: 2 + span: + start: 1028 + end: 1037 + raw: constant2 +- kind: Newline + span: + start: 1037 + end: 1038 + raw: "\n" +- kind: + ActionName: Push + span: + start: 1038 + end: 1042 + raw: Push +- kind: + Constant: 2 + span: + start: 1043 + end: 1052 + raw: constant2 +- kind: Newline + span: + start: 1052 + end: 1053 + raw: "\n" +- kind: + ActionName: DefineLocal + span: + start: 1053 + end: 1064 + raw: DefineLocal +- kind: Newline + span: + start: 1064 + end: 1065 + raw: "\n" +- kind: + ActionName: Jump + span: + start: 1065 + end: 1069 + raw: Jump +- kind: Identifier + span: + start: 1070 + end: 1077 + raw: loc026b +- kind: Newline + span: + start: 1077 + end: 1078 + raw: "\n" +- kind: CloseBrace + span: + start: 1078 + end: 1079 + raw: "}" +- kind: Newline + span: + start: 1079 + end: 1080 + raw: "\n" +- kind: Catch + span: + start: 1080 + end: 1085 + raw: Catch +- kind: OpenBrace + span: + start: 1086 + end: 1087 + raw: "{" +- kind: Newline + span: + start: 1087 + end: 1088 + raw: "\n" +- kind: + ActionName: Push + span: + start: 1088 + end: 1092 + raw: Push +- kind: + Constant: 9 + span: + start: 1093 + end: 1102 + raw: constant9 +- kind: Newline + span: + start: 1102 + end: 1103 + raw: "\n" +- kind: + ActionName: Push + span: + start: 1103 + end: 1107 + raw: Push +- kind: + Constant: 5 + span: + start: 1108 + end: 1117 + raw: constant5 +- kind: Newline + span: + start: 1117 + end: 1118 + raw: "\n" +- kind: + ActionName: GetVariable + span: + start: 1118 + end: 1129 + raw: GetVariable +- kind: Newline + span: + start: 1129 + end: 1130 + raw: "\n" +- kind: + ActionName: Add2 + span: + start: 1130 + end: 1134 + raw: Add2 +- kind: Newline + span: + start: 1134 + end: 1135 + raw: "\n" +- kind: + ActionName: Trace + span: + start: 1135 + end: 1140 + raw: Trace +- kind: Newline + span: + start: 1140 + end: 1141 + raw: "\n" +- kind: CloseBrace + span: + start: 1141 + end: 1142 + raw: "}" +- kind: Newline + span: + start: 1142 + end: 1143 + raw: "\n" +- kind: Identifier + span: + start: 1143 + end: 1150 + raw: loc026b +- kind: Colon + span: + start: 1150 + end: 1151 + raw: ":" +- kind: + ActionName: Push + span: + start: 1151 + end: 1155 + raw: Push +- kind: + Constant: 12 + span: + start: 1156 + end: 1166 + raw: constant12 +- kind: Newline + span: + start: 1166 + end: 1167 + raw: "\n" +- kind: + ActionName: Trace + span: + start: 1167 + end: 1172 + raw: Trace +- kind: Newline + span: + start: 1172 + end: 1173 + raw: "\n" +- kind: + ActionName: Try + span: + start: 1173 + end: 1176 + raw: Try +- kind: String + span: + start: 1177 + end: 1180 + raw: e +- kind: OpenBrace + span: + start: 1181 + end: 1182 + raw: "{" +- kind: Newline + span: + start: 1182 + end: 1183 + raw: "\n" +- kind: + ActionName: Push + span: + start: 1183 + end: 1187 + raw: Push +- kind: + Constant: 2 + span: + start: 1188 + end: 1197 + raw: constant2 +- kind: Newline + span: + start: 1197 + end: 1198 + raw: "\n" +- kind: + ActionName: Push + span: + start: 1198 + end: 1202 + raw: Push +- kind: + Constant: 2 + span: + start: 1203 + end: 1212 + raw: constant2 +- kind: Newline + span: + start: 1212 + end: 1213 + raw: "\n" +- kind: + ActionName: DefineLocal + span: + start: 1213 + end: 1224 + raw: DefineLocal +- kind: Newline + span: + start: 1224 + end: 1225 + raw: "\n" +- kind: + ActionName: Push + span: + start: 1225 + end: 1229 + raw: Push +- kind: + Constant: 2 + span: + start: 1230 + end: 1239 + raw: constant2 +- kind: Newline + span: + start: 1239 + end: 1240 + raw: "\n" +- kind: + ActionName: GetVariable + span: + start: 1240 + end: 1251 + raw: GetVariable +- kind: Newline + span: + start: 1251 + end: 1252 + raw: "\n" +- kind: + ActionName: Push + span: + start: 1252 + end: 1256 + raw: Push +- kind: + Constant: 2 + span: + start: 1257 + end: 1266 + raw: constant2 +- kind: Newline + span: + start: 1266 + end: 1267 + raw: "\n" +- kind: + ActionName: Equals2 + span: + start: 1267 + end: 1274 + raw: Equals2 +- kind: Newline + span: + start: 1274 + end: 1275 + raw: "\n" +- kind: + ActionName: Not + span: + start: 1275 + end: 1278 + raw: Not +- kind: Newline + span: + start: 1278 + end: 1279 + raw: "\n" +- kind: + ActionName: Not + span: + start: 1279 + end: 1282 + raw: Not +- kind: Newline + span: + start: 1282 + end: 1283 + raw: "\n" +- kind: + ActionName: If + span: + start: 1283 + end: 1285 + raw: If +- kind: Identifier + span: + start: 1286 + end: 1293 + raw: loc02a2 +- kind: Newline + span: + start: 1293 + end: 1294 + raw: "\n" +- kind: + ActionName: Push + span: + start: 1294 + end: 1298 + raw: Push +- kind: + Constant: 2 + span: + start: 1299 + end: 1308 + raw: constant2 +- kind: Newline + span: + start: 1308 + end: 1309 + raw: "\n" +- kind: + ActionName: GetVariable + span: + start: 1309 + end: 1320 + raw: GetVariable +- kind: Newline + span: + start: 1320 + end: 1321 + raw: "\n" +- kind: + ActionName: Throw + span: + start: 1321 + end: 1326 + raw: Throw +- kind: Newline + span: + start: 1326 + end: 1327 + raw: "\n" +- kind: Identifier + span: + start: 1327 + end: 1334 + raw: loc02a2 +- kind: Colon + span: + start: 1334 + end: 1335 + raw: ":" +- kind: + ActionName: Jump + span: + start: 1335 + end: 1339 + raw: Jump +- kind: Identifier + span: + start: 1340 + end: 1347 + raw: loc02b4 +- kind: Newline + span: + start: 1347 + end: 1348 + raw: "\n" +- kind: CloseBrace + span: + start: 1348 + end: 1349 + raw: "}" +- kind: Newline + span: + start: 1349 + end: 1350 + raw: "\n" +- kind: Catch + span: + start: 1350 + end: 1355 + raw: Catch +- kind: OpenBrace + span: + start: 1356 + end: 1357 + raw: "{" +- kind: Newline + span: + start: 1357 + end: 1358 + raw: "\n" +- kind: + ActionName: Push + span: + start: 1358 + end: 1362 + raw: Push +- kind: + Constant: 9 + span: + start: 1363 + end: 1372 + raw: constant9 +- kind: Newline + span: + start: 1372 + end: 1373 + raw: "\n" +- kind: + ActionName: Push + span: + start: 1373 + end: 1377 + raw: Push +- kind: + Constant: 5 + span: + start: 1378 + end: 1387 + raw: constant5 +- kind: Newline + span: + start: 1387 + end: 1388 + raw: "\n" +- kind: + ActionName: GetVariable + span: + start: 1388 + end: 1399 + raw: GetVariable +- kind: Newline + span: + start: 1399 + end: 1400 + raw: "\n" +- kind: + ActionName: Add2 + span: + start: 1400 + end: 1404 + raw: Add2 +- kind: Newline + span: + start: 1404 + end: 1405 + raw: "\n" +- kind: + ActionName: Trace + span: + start: 1405 + end: 1410 + raw: Trace +- kind: Newline + span: + start: 1410 + end: 1411 + raw: "\n" +- kind: CloseBrace + span: + start: 1411 + end: 1412 + raw: "}" +- kind: Newline + span: + start: 1412 + end: 1413 + raw: "\n" +- kind: Identifier + span: + start: 1413 + end: 1420 + raw: loc02b4 +- kind: Colon + span: + start: 1420 + end: 1421 + raw: ":" - kind: ActionName: Push span: - start: 785 - end: 789 + start: 1421 + end: 1425 raw: Push - kind: - Constant: 10 + Constant: 13 span: - start: 790 - end: 800 - raw: constant10 + start: 1426 + end: 1436 + raw: constant13 - kind: Newline span: - start: 800 - end: 801 + start: 1436 + end: 1437 raw: "\n" - kind: ActionName: Trace span: - start: 801 - end: 806 + start: 1437 + end: 1442 raw: Trace - kind: Newline span: - start: 806 - end: 807 + start: 1442 + end: 1443 raw: "\n" - kind: ActionName: Try span: - start: 807 - end: 810 + start: 1443 + end: 1446 raw: Try - kind: Register: 0 span: - start: 811 - end: 820 + start: 1447 + end: 1456 raw: register0 - kind: OpenBrace span: - start: 821 - end: 822 + start: 1457 + end: 1458 raw: "{" - kind: Newline span: - start: 822 - end: 823 + start: 1458 + end: 1459 raw: "\n" - kind: ActionName: Push span: - start: 823 - end: 827 + start: 1459 + end: 1463 raw: Push - kind: Constant: 1 span: - start: 828 - end: 837 + start: 1464 + end: 1473 raw: constant1 - kind: Newline span: - start: 837 - end: 838 + start: 1473 + end: 1474 raw: "\n" - kind: ActionName: Trace span: - start: 838 - end: 843 + start: 1474 + end: 1479 raw: Trace - kind: Newline span: - start: 843 - end: 844 + start: 1479 + end: 1480 raw: "\n" - kind: ActionName: Push span: - start: 844 - end: 848 + start: 1480 + end: 1484 raw: Push - kind: - Constant: 11 + Constant: 14 span: - start: 849 - end: 859 - raw: constant11 + start: 1485 + end: 1495 + raw: constant14 - kind: Newline span: - start: 859 - end: 860 + start: 1495 + end: 1496 raw: "\n" - kind: ActionName: GetVariable span: - start: 860 - end: 871 + start: 1496 + end: 1507 raw: GetVariable - kind: Newline span: - start: 871 - end: 872 + start: 1507 + end: 1508 raw: "\n" - kind: ActionName: Throw span: - start: 872 - end: 877 + start: 1508 + end: 1513 raw: Throw - kind: Newline span: - start: 877 - end: 878 + start: 1513 + end: 1514 raw: "\n" - kind: CloseBrace span: - start: 878 - end: 879 + start: 1514 + end: 1515 raw: "}" - kind: Newline span: - start: 879 - end: 880 + start: 1515 + end: 1516 raw: "\n" - kind: Catch span: - start: 880 - end: 885 + start: 1516 + end: 1521 raw: Catch - kind: OpenBrace span: - start: 886 - end: 887 + start: 1522 + end: 1523 raw: "{" - kind: Newline span: - start: 887 - end: 888 + start: 1523 + end: 1524 raw: "\n" - kind: ActionName: Push span: - start: 888 - end: 892 + start: 1524 + end: 1528 raw: Push - kind: - Constant: 12 + Constant: 15 span: - start: 893 - end: 903 - raw: constant12 + start: 1529 + end: 1539 + raw: constant15 - kind: Newline span: - start: 903 - end: 904 + start: 1539 + end: 1540 raw: "\n" - kind: ActionName: GetVariable span: - start: 904 - end: 915 + start: 1540 + end: 1551 raw: GetVariable - kind: Newline span: - start: 915 - end: 916 + start: 1551 + end: 1552 raw: "\n" - kind: ActionName: Push span: - start: 916 - end: 920 + start: 1552 + end: 1556 raw: Push - kind: Register: 0 span: - start: 921 - end: 930 + start: 1557 + end: 1566 raw: register0 - kind: Newline span: - start: 930 - end: 931 + start: 1566 + end: 1567 raw: "\n" - kind: ActionName: CastOp span: - start: 931 - end: 937 + start: 1567 + end: 1573 raw: CastOp - kind: Newline span: - start: 937 - end: 938 + start: 1573 + end: 1574 raw: "\n" - kind: ActionName: PushDuplicate span: - start: 938 - end: 951 + start: 1574 + end: 1587 raw: PushDuplicate - kind: Newline span: - start: 951 - end: 952 + start: 1587 + end: 1588 raw: "\n" - kind: ActionName: Push span: - start: 952 - end: 956 + start: 1588 + end: 1592 raw: Push - kind: "Null" span: - start: 957 - end: 961 + start: 1593 + end: 1597 raw: "null" - kind: Newline span: - start: 961 - end: 962 + start: 1597 + end: 1598 raw: "\n" - kind: ActionName: Equals2 span: - start: 962 - end: 969 + start: 1598 + end: 1605 raw: Equals2 - kind: Newline span: - start: 969 - end: 970 + start: 1605 + end: 1606 raw: "\n" - kind: ActionName: If span: - start: 970 - end: 972 + start: 1606 + end: 1608 raw: If - kind: Identifier span: - start: 973 - end: 980 - raw: loc0217 + start: 1609 + end: 1616 + raw: loc0302 - kind: Newline span: - start: 980 - end: 981 + start: 1616 + end: 1617 raw: "\n" - kind: ActionName: Push span: - start: 981 - end: 985 + start: 1617 + end: 1621 raw: Push - kind: Constant: 5 span: - start: 986 - end: 995 + start: 1622 + end: 1631 raw: constant5 - kind: Newline span: - start: 995 - end: 996 + start: 1631 + end: 1632 raw: "\n" - kind: ActionName: StackSwap span: - start: 996 - end: 1005 + start: 1632 + end: 1641 raw: StackSwap - kind: Newline span: - start: 1005 - end: 1006 + start: 1641 + end: 1642 raw: "\n" - kind: ActionName: DefineLocal span: - start: 1006 - end: 1017 + start: 1642 + end: 1653 raw: DefineLocal - kind: Newline span: - start: 1017 - end: 1018 + start: 1653 + end: 1654 raw: "\n" - kind: ActionName: Push span: - start: 1018 - end: 1022 + start: 1654 + end: 1658 raw: Push - kind: Constant: 9 span: - start: 1023 - end: 1032 + start: 1659 + end: 1668 raw: constant9 - kind: Newline span: - start: 1032 - end: 1033 + start: 1668 + end: 1669 raw: "\n" - kind: ActionName: Push span: - start: 1033 - end: 1037 + start: 1669 + end: 1673 raw: Push - kind: Constant: 5 span: - start: 1038 - end: 1047 + start: 1674 + end: 1683 raw: constant5 - kind: Newline span: - start: 1047 - end: 1048 + start: 1683 + end: 1684 raw: "\n" - kind: ActionName: GetVariable span: - start: 1048 - end: 1059 + start: 1684 + end: 1695 raw: GetVariable - kind: Newline span: - start: 1059 - end: 1060 + start: 1695 + end: 1696 raw: "\n" - kind: ActionName: Add2 span: - start: 1060 - end: 1064 + start: 1696 + end: 1700 raw: Add2 - kind: Newline span: - start: 1064 - end: 1065 + start: 1700 + end: 1701 raw: "\n" - kind: ActionName: Trace span: - start: 1065 - end: 1070 + start: 1701 + end: 1706 raw: Trace - kind: Newline span: - start: 1070 - end: 1071 + start: 1706 + end: 1707 raw: "\n" - kind: ActionName: Jump span: - start: 1071 - end: 1075 + start: 1707 + end: 1711 raw: Jump - kind: Identifier span: - start: 1076 - end: 1083 - raw: loc021e + start: 1712 + end: 1719 + raw: loc0309 - kind: Newline span: - start: 1083 - end: 1084 + start: 1719 + end: 1720 raw: "\n" - kind: Identifier span: - start: 1084 - end: 1091 - raw: loc0217 + start: 1720 + end: 1727 + raw: loc0302 - kind: Colon span: - start: 1091 - end: 1092 + start: 1727 + end: 1728 raw: ":" - kind: ActionName: Pop span: - start: 1092 - end: 1095 + start: 1728 + end: 1731 raw: Pop - kind: Newline span: - start: 1095 - end: 1096 + start: 1731 + end: 1732 raw: "\n" - kind: ActionName: Push span: - start: 1096 - end: 1100 + start: 1732 + end: 1736 raw: Push - kind: Register: 0 span: - start: 1101 - end: 1110 + start: 1737 + end: 1746 raw: register0 - kind: Newline span: - start: 1110 - end: 1111 + start: 1746 + end: 1747 raw: "\n" - kind: ActionName: Throw span: - start: 1111 - end: 1116 + start: 1747 + end: 1752 raw: Throw - kind: Newline span: - start: 1116 - end: 1117 + start: 1752 + end: 1753 raw: "\n" - kind: CloseBrace span: - start: 1117 - end: 1118 + start: 1753 + end: 1754 raw: "}" - kind: Newline span: - start: 1118 - end: 1119 + start: 1754 + end: 1755 raw: "\n" - kind: Finally span: - start: 1119 - end: 1126 + start: 1755 + end: 1762 raw: Finally - kind: OpenBrace span: - start: 1127 - end: 1128 + start: 1763 + end: 1764 raw: "{" - kind: Newline span: - start: 1128 - end: 1129 + start: 1764 + end: 1765 raw: "\n" - kind: Identifier span: - start: 1129 - end: 1136 - raw: loc021e + start: 1765 + end: 1772 + raw: loc0309 - kind: Colon span: - start: 1136 - end: 1137 + start: 1772 + end: 1773 raw: ":" - kind: ActionName: Push span: - start: 1137 - end: 1141 + start: 1773 + end: 1777 raw: Push - kind: Constant: 6 span: - start: 1142 - end: 1151 + start: 1778 + end: 1787 raw: constant6 - kind: Newline span: - start: 1151 - end: 1152 + start: 1787 + end: 1788 raw: "\n" - kind: ActionName: Trace span: - start: 1152 - end: 1157 + start: 1788 + end: 1793 raw: Trace - kind: Newline span: - start: 1157 - end: 1158 + start: 1793 + end: 1794 raw: "\n" - kind: CloseBrace span: - start: 1158 - end: 1159 + start: 1794 + end: 1795 raw: "}" - kind: Newline span: - start: 1159 - end: 1160 + start: 1795 + end: 1796 raw: "\n" - kind: ActionName: Push span: - start: 1160 - end: 1164 + start: 1796 + end: 1800 raw: Push - kind: - Constant: 13 + Constant: 16 span: - start: 1165 - end: 1175 - raw: constant13 + start: 1801 + end: 1811 + raw: constant16 - kind: Newline span: - start: 1175 - end: 1176 + start: 1811 + end: 1812 raw: "\n" - kind: ActionName: Trace span: - start: 1176 - end: 1181 + start: 1812 + end: 1817 raw: Trace - kind: Newline span: - start: 1181 - end: 1182 + start: 1817 + end: 1818 raw: "\n" - kind: ActionName: Try span: - start: 1182 - end: 1185 + start: 1818 + end: 1821 raw: Try - kind: Register: 0 span: - start: 1186 - end: 1195 + start: 1822 + end: 1831 raw: register0 - kind: OpenBrace span: - start: 1196 - end: 1197 + start: 1832 + end: 1833 raw: "{" - kind: Newline span: - start: 1197 - end: 1198 + start: 1833 + end: 1834 raw: "\n" - kind: ActionName: Push span: - start: 1198 - end: 1202 + start: 1834 + end: 1838 raw: Push - kind: Constant: 1 span: - start: 1203 - end: 1212 + start: 1839 + end: 1848 raw: constant1 - kind: Newline span: - start: 1212 - end: 1213 + start: 1848 + end: 1849 raw: "\n" - kind: ActionName: Trace span: - start: 1213 - end: 1218 + start: 1849 + end: 1854 raw: Trace - kind: Newline span: - start: 1218 - end: 1219 + start: 1854 + end: 1855 raw: "\n" - kind: ActionName: Push span: - start: 1219 - end: 1223 + start: 1855 + end: 1859 raw: Push - kind: - Constant: 11 + Constant: 14 span: - start: 1224 - end: 1234 - raw: constant11 + start: 1860 + end: 1870 + raw: constant14 - kind: Newline span: - start: 1234 - end: 1235 + start: 1870 + end: 1871 raw: "\n" - kind: ActionName: GetVariable span: - start: 1235 - end: 1246 + start: 1871 + end: 1882 raw: GetVariable - kind: Newline span: - start: 1246 - end: 1247 + start: 1882 + end: 1883 raw: "\n" - kind: ActionName: Throw span: - start: 1247 - end: 1252 + start: 1883 + end: 1888 raw: Throw - kind: Newline span: - start: 1252 - end: 1253 + start: 1888 + end: 1889 raw: "\n" - kind: CloseBrace span: - start: 1253 - end: 1254 + start: 1889 + end: 1890 raw: "}" - kind: Newline span: - start: 1254 - end: 1255 + start: 1890 + end: 1891 raw: "\n" - kind: Catch span: - start: 1255 - end: 1260 + start: 1891 + end: 1896 raw: Catch - kind: OpenBrace span: - start: 1261 - end: 1262 + start: 1897 + end: 1898 raw: "{" - kind: Newline span: - start: 1262 - end: 1263 + start: 1898 + end: 1899 raw: "\n" - kind: ActionName: Push span: - start: 1263 - end: 1267 + start: 1899 + end: 1903 raw: Push - kind: - Constant: 12 + Constant: 15 span: - start: 1268 - end: 1278 - raw: constant12 + start: 1904 + end: 1914 + raw: constant15 - kind: Newline span: - start: 1278 - end: 1279 + start: 1914 + end: 1915 raw: "\n" - kind: ActionName: GetVariable span: - start: 1279 - end: 1290 + start: 1915 + end: 1926 raw: GetVariable - kind: Newline span: - start: 1290 - end: 1291 + start: 1926 + end: 1927 raw: "\n" - kind: ActionName: Push span: - start: 1291 - end: 1295 + start: 1927 + end: 1931 raw: Push - kind: Register: 0 span: - start: 1296 - end: 1305 + start: 1932 + end: 1941 raw: register0 - kind: Newline span: - start: 1305 - end: 1306 + start: 1941 + end: 1942 raw: "\n" - kind: ActionName: CastOp span: - start: 1306 - end: 1312 + start: 1942 + end: 1948 raw: CastOp - kind: Newline span: - start: 1312 - end: 1313 + start: 1948 + end: 1949 raw: "\n" - kind: ActionName: PushDuplicate span: - start: 1313 - end: 1326 + start: 1949 + end: 1962 raw: PushDuplicate - kind: Newline span: - start: 1326 - end: 1327 + start: 1962 + end: 1963 raw: "\n" - kind: ActionName: Push span: - start: 1327 - end: 1331 + start: 1963 + end: 1967 raw: Push - kind: "Null" span: - start: 1332 - end: 1336 + start: 1968 + end: 1972 raw: "null" - kind: Newline span: - start: 1336 - end: 1337 + start: 1972 + end: 1973 raw: "\n" - kind: ActionName: Equals2 span: - start: 1337 - end: 1344 + start: 1973 + end: 1980 raw: Equals2 - kind: Newline span: - start: 1344 - end: 1345 + start: 1980 + end: 1981 raw: "\n" - kind: ActionName: If span: - start: 1345 - end: 1347 + start: 1981 + end: 1983 raw: If - kind: Identifier span: - start: 1348 - end: 1355 - raw: loc026b + start: 1984 + end: 1991 + raw: loc0356 - kind: Newline span: - start: 1355 - end: 1356 + start: 1991 + end: 1992 raw: "\n" - kind: ActionName: Push span: - start: 1356 - end: 1360 + start: 1992 + end: 1996 raw: Push - kind: Constant: 5 span: - start: 1361 - end: 1370 + start: 1997 + end: 2006 raw: constant5 - kind: Newline span: - start: 1370 - end: 1371 + start: 2006 + end: 2007 raw: "\n" - kind: ActionName: StackSwap span: - start: 1371 - end: 1380 + start: 2007 + end: 2016 raw: StackSwap - kind: Newline span: - start: 1380 - end: 1381 + start: 2016 + end: 2017 raw: "\n" - kind: ActionName: DefineLocal span: - start: 1381 - end: 1392 + start: 2017 + end: 2028 raw: DefineLocal - kind: Newline span: - start: 1392 - end: 1393 + start: 2028 + end: 2029 raw: "\n" - kind: ActionName: Push span: - start: 1393 - end: 1397 + start: 2029 + end: 2033 raw: Push - kind: - Constant: 14 + Constant: 17 span: - start: 1398 - end: 1408 - raw: constant14 + start: 2034 + end: 2044 + raw: constant17 - kind: Newline span: - start: 1408 - end: 1409 + start: 2044 + end: 2045 raw: "\n" - kind: ActionName: Trace span: - start: 1409 - end: 1414 + start: 2045 + end: 2050 raw: Trace - kind: Newline span: - start: 1414 - end: 1415 + start: 2050 + end: 2051 raw: "\n" - kind: ActionName: Jump span: - start: 1415 - end: 1419 + start: 2051 + end: 2055 raw: Jump - kind: Identifier span: - start: 1420 - end: 1427 - raw: loc02ad + start: 2056 + end: 2063 + raw: loc0398 - kind: Newline span: - start: 1427 - end: 1428 + start: 2063 + end: 2064 raw: "\n" - kind: Identifier span: - start: 1428 - end: 1435 - raw: loc026b + start: 2064 + end: 2071 + raw: loc0356 - kind: Colon span: - start: 1435 - end: 1436 + start: 2071 + end: 2072 raw: ":" - kind: ActionName: Pop span: - start: 1436 - end: 1439 + start: 2072 + end: 2075 raw: Pop - kind: Newline span: - start: 1439 - end: 1440 + start: 2075 + end: 2076 raw: "\n" - kind: ActionName: Push span: - start: 1440 - end: 1444 + start: 2076 + end: 2080 raw: Push - kind: - Constant: 15 + Constant: 18 span: - start: 1445 - end: 1455 - raw: constant15 + start: 2081 + end: 2091 + raw: constant18 - kind: Newline span: - start: 1455 - end: 1456 + start: 2091 + end: 2092 raw: "\n" - kind: ActionName: GetVariable span: - start: 1456 - end: 1467 + start: 2092 + end: 2103 raw: GetVariable - kind: Newline span: - start: 1467 - end: 1468 + start: 2103 + end: 2104 raw: "\n" - kind: ActionName: Push span: - start: 1468 - end: 1472 + start: 2104 + end: 2108 raw: Push - kind: Register: 0 span: - start: 1473 - end: 1482 + start: 2109 + end: 2118 raw: register0 - kind: Newline span: - start: 1482 - end: 1483 + start: 2118 + end: 2119 raw: "\n" - kind: ActionName: CastOp span: - start: 1483 - end: 1489 + start: 2119 + end: 2125 raw: CastOp - kind: Newline span: - start: 1489 - end: 1490 + start: 2125 + end: 2126 raw: "\n" - kind: ActionName: PushDuplicate span: - start: 1490 - end: 1503 + start: 2126 + end: 2139 raw: PushDuplicate - kind: Newline span: - start: 1503 - end: 1504 + start: 2139 + end: 2140 raw: "\n" - kind: ActionName: Push span: - start: 1504 - end: 1508 + start: 2140 + end: 2144 raw: Push - kind: "Null" span: - start: 1509 - end: 1513 + start: 2145 + end: 2149 raw: "null" - kind: Newline span: - start: 1513 - end: 1514 + start: 2149 + end: 2150 raw: "\n" - kind: ActionName: Equals2 span: - start: 1514 - end: 1521 + start: 2150 + end: 2157 raw: Equals2 - kind: Newline span: - start: 1521 - end: 1522 + start: 2157 + end: 2158 raw: "\n" - kind: ActionName: If span: - start: 1522 - end: 1524 + start: 2158 + end: 2160 raw: If - kind: Identifier span: - start: 1525 - end: 1532 - raw: loc0295 + start: 2161 + end: 2168 + raw: loc0380 - kind: Newline span: - start: 1532 - end: 1533 + start: 2168 + end: 2169 raw: "\n" - kind: ActionName: Push span: - start: 1533 - end: 1537 + start: 2169 + end: 2173 raw: Push - kind: Constant: 5 span: - start: 1538 - end: 1547 + start: 2174 + end: 2183 raw: constant5 - kind: Newline span: - start: 1547 - end: 1548 + start: 2183 + end: 2184 raw: "\n" - kind: ActionName: StackSwap span: - start: 1548 - end: 1557 + start: 2184 + end: 2193 raw: StackSwap - kind: Newline span: - start: 1557 - end: 1558 + start: 2193 + end: 2194 raw: "\n" - kind: ActionName: DefineLocal span: - start: 1558 - end: 1569 + start: 2194 + end: 2205 raw: DefineLocal - kind: Newline span: - start: 1569 - end: 1570 + start: 2205 + end: 2206 raw: "\n" - kind: ActionName: Push span: - start: 1570 - end: 1574 + start: 2206 + end: 2210 raw: Push - kind: - Constant: 16 + Constant: 19 span: - start: 1575 - end: 1585 - raw: constant16 + start: 2211 + end: 2221 + raw: constant19 - kind: Newline span: - start: 1585 - end: 1586 + start: 2221 + end: 2222 raw: "\n" - kind: ActionName: Trace span: - start: 1586 - end: 1591 + start: 2222 + end: 2227 raw: Trace - kind: Newline span: - start: 1591 - end: 1592 + start: 2227 + end: 2228 raw: "\n" - kind: ActionName: Jump span: - start: 1592 - end: 1596 + start: 2228 + end: 2232 raw: Jump - kind: Identifier span: - start: 1597 - end: 1604 - raw: loc02ad + start: 2233 + end: 2240 + raw: loc0398 - kind: Newline span: - start: 1604 - end: 1605 + start: 2240 + end: 2241 raw: "\n" - kind: Identifier span: - start: 1605 - end: 1612 - raw: loc0295 + start: 2241 + end: 2248 + raw: loc0380 - kind: Colon span: - start: 1612 - end: 1613 + start: 2248 + end: 2249 raw: ":" - kind: ActionName: Pop span: - start: 1613 - end: 1616 + start: 2249 + end: 2252 raw: Pop - kind: Newline span: - start: 1616 - end: 1617 + start: 2252 + end: 2253 raw: "\n" - kind: ActionName: Push span: - start: 1617 - end: 1621 + start: 2253 + end: 2257 raw: Push - kind: Register: 0 span: - start: 1622 - end: 1631 + start: 2258 + end: 2267 raw: register0 - kind: Newline span: - start: 1631 - end: 1632 + start: 2267 + end: 2268 raw: "\n" - kind: ActionName: Push span: - start: 1632 - end: 1636 + start: 2268 + end: 2272 raw: Push - kind: Constant: 5 span: - start: 1637 - end: 1646 + start: 2273 + end: 2282 raw: constant5 - kind: Newline span: - start: 1646 - end: 1647 + start: 2282 + end: 2283 raw: "\n" - kind: ActionName: StackSwap span: - start: 1647 - end: 1656 + start: 2283 + end: 2292 raw: StackSwap - kind: Newline span: - start: 1656 - end: 1657 + start: 2292 + end: 2293 raw: "\n" - kind: ActionName: DefineLocal span: - start: 1657 - end: 1668 + start: 2293 + end: 2304 raw: DefineLocal - kind: Newline span: - start: 1668 - end: 1669 + start: 2304 + end: 2305 raw: "\n" - kind: ActionName: Push span: - start: 1669 - end: 1673 + start: 2305 + end: 2309 raw: Push - kind: - Constant: 17 + Constant: 20 span: - start: 1674 - end: 1684 - raw: constant17 + start: 2310 + end: 2320 + raw: constant20 - kind: Newline span: - start: 1684 - end: 1685 + start: 2320 + end: 2321 raw: "\n" - kind: ActionName: Trace span: - start: 1685 - end: 1690 + start: 2321 + end: 2326 raw: Trace - kind: Newline span: - start: 1690 - end: 1691 + start: 2326 + end: 2327 raw: "\n" - kind: ActionName: Jump span: - start: 1691 - end: 1695 + start: 2327 + end: 2331 raw: Jump - kind: Identifier span: - start: 1696 - end: 1703 - raw: loc02ad + start: 2332 + end: 2339 + raw: loc0398 - kind: Newline span: - start: 1703 - end: 1704 + start: 2339 + end: 2340 raw: "\n" - kind: CloseBrace span: - start: 1704 - end: 1705 + start: 2340 + end: 2341 raw: "}" - kind: Newline span: - start: 1705 - end: 1706 + start: 2341 + end: 2342 raw: "\n" - kind: Identifier span: - start: 1706 - end: 1713 - raw: loc02ad + start: 2342 + end: 2349 + raw: loc0398 - kind: Colon span: - start: 1713 - end: 1714 + start: 2349 + end: 2350 raw: ":" - kind: ActionName: Push span: - start: 1714 - end: 1718 + start: 2350 + end: 2354 raw: Push - kind: - Constant: 18 + Constant: 21 span: - start: 1719 - end: 1729 - raw: constant18 + start: 2355 + end: 2365 + raw: constant21 - kind: Newline span: - start: 1729 - end: 1730 + start: 2365 + end: 2366 raw: "\n" - kind: ActionName: Trace span: - start: 1730 - end: 1735 + start: 2366 + end: 2371 raw: Trace - kind: Newline span: - start: 1735 - end: 1736 + start: 2371 + end: 2372 raw: "\n" - kind: ActionName: Try span: - start: 1736 - end: 1739 + start: 2372 + end: 2375 raw: Try - kind: OpenBrace span: - start: 1740 - end: 1741 + start: 2376 + end: 2377 raw: "{" - kind: Newline span: - start: 1741 - end: 1742 + start: 2377 + end: 2378 raw: "\n" - kind: ActionName: Push span: - start: 1742 - end: 1746 + start: 2378 + end: 2382 raw: Push - kind: Constant: 1 span: - start: 1747 - end: 1756 + start: 2383 + end: 2392 raw: constant1 - kind: Newline span: - start: 1756 - end: 1757 + start: 2392 + end: 2393 raw: "\n" - kind: ActionName: Trace span: - start: 1757 - end: 1762 + start: 2393 + end: 2398 raw: Trace - kind: Newline span: - start: 1762 - end: 1763 + start: 2398 + end: 2399 raw: "\n" - kind: ActionName: Push span: - start: 1763 - end: 1767 + start: 2399 + end: 2403 raw: Push - kind: "Null" span: - start: 1768 - end: 1772 + start: 2404 + end: 2408 raw: "null" - kind: Newline span: - start: 1772 - end: 1773 + start: 2408 + end: 2409 raw: "\n" - kind: ActionName: Throw span: - start: 1773 - end: 1778 + start: 2409 + end: 2414 raw: Throw - kind: Newline span: - start: 1778 - end: 1779 + start: 2414 + end: 2415 raw: "\n" - kind: CloseBrace span: - start: 1779 - end: 1780 + start: 2415 + end: 2416 raw: "}" - kind: Newline span: - start: 1780 - end: 1781 + start: 2416 + end: 2417 raw: "\n" - kind: Finally span: - start: 1781 - end: 1788 + start: 2417 + end: 2424 raw: Finally - kind: OpenBrace span: - start: 1789 - end: 1790 + start: 2425 + end: 2426 raw: "{" - kind: Newline span: - start: 1790 - end: 1791 + start: 2426 + end: 2427 raw: "\n" - kind: ActionName: Push span: - start: 1791 - end: 1795 + start: 2427 + end: 2431 raw: Push - kind: Constant: 6 span: - start: 1796 - end: 1805 + start: 2432 + end: 2441 raw: constant6 - kind: Newline span: - start: 1805 - end: 1806 + start: 2441 + end: 2442 raw: "\n" - kind: ActionName: Trace span: - start: 1806 - end: 1811 + start: 2442 + end: 2447 raw: Trace - kind: Newline span: - start: 1811 - end: 1812 + start: 2447 + end: 2448 raw: "\n" - kind: CloseBrace span: - start: 1812 - end: 1813 + start: 2448 + end: 2449 raw: "}" - kind: Newline span: - start: 1813 - end: 1814 + start: 2449 + end: 2450 raw: "\n" - kind: ActionName: Push span: - start: 1814 - end: 1818 + start: 2450 + end: 2454 raw: Push - kind: - Constant: 19 + Constant: 22 span: - start: 1819 - end: 1829 - raw: constant19 + start: 2455 + end: 2465 + raw: constant22 - kind: Newline span: - start: 1829 - end: 1830 + start: 2465 + end: 2466 raw: "\n" - kind: ActionName: Trace span: - start: 1830 - end: 1835 + start: 2466 + end: 2471 raw: Trace - kind: Newline span: - start: 1835 - end: 1836 + start: 2471 + end: 2472 raw: "\n" diff --git a/crates/rascal/src/internal/as2_pcode/parser/snapshots/rascal__internal__as2_pcode__parser__tests__all_samples@try_catch.pcode.snap b/crates/rascal/src/internal/as2_pcode/parser/snapshots/rascal__internal__as2_pcode__parser__tests__all_samples@try_catch.pcode.snap index 557bbbd..3d2fc07 100644 --- a/crates/rascal/src/internal/as2_pcode/parser/snapshots/rascal__internal__as2_pcode__parser__tests__all_samples@try_catch.pcode.snap +++ b/crates/rascal/src/internal/as2_pcode/parser/snapshots/rascal__internal__as2_pcode__parser__tests__all_samples@try_catch.pcode.snap @@ -16,6 +16,9 @@ Ok: - " -- try catch -- " - test - "caught something! " + - " -- empty try -- " + - " -- try with no throw -- " + - " -- try with conditional throw -- " - " -- try catch(MovieClip) finally -- " - this - MovieClip @@ -90,6 +93,90 @@ Ok: - Push: - Constant: 10 - Trace + - Try: + try_body: + actions: + - Jump: loc023c + label_positions: {} + catch_body: + - Variable: e + - actions: + - Push: + - Constant: 9 + - Push: + - Constant: 5 + - GetVariable + - Add2 + - Trace + label_positions: {} + finally_body: ~ + - Push: + - Constant: 11 + - Trace + - Try: + try_body: + actions: + - Push: + - Constant: 2 + - Push: + - Constant: 2 + - DefineLocal + - Jump: loc026b + label_positions: {} + catch_body: + - Variable: e + - actions: + - Push: + - Constant: 9 + - Push: + - Constant: 5 + - GetVariable + - Add2 + - Trace + label_positions: {} + finally_body: ~ + - Push: + - Constant: 12 + - Trace + - Try: + try_body: + actions: + - Push: + - Constant: 2 + - Push: + - Constant: 2 + - DefineLocal + - Push: + - Constant: 2 + - GetVariable + - Push: + - Constant: 2 + - Equals2 + - Not + - Not + - If: loc02a2 + - Push: + - Constant: 2 + - GetVariable + - Throw + - Jump: loc02b4 + label_positions: + loc02a2: 13 + catch_body: + - Variable: e + - actions: + - Push: + - Constant: 9 + - Push: + - Constant: 5 + - GetVariable + - Add2 + - Trace + label_positions: {} + finally_body: ~ + - Push: + - Constant: 13 + - Trace - Try: try_body: actions: @@ -97,7 +184,7 @@ Ok: - Constant: 1 - Trace - Push: - - Constant: 11 + - Constant: 14 - GetVariable - Throw label_positions: {} @@ -105,7 +192,7 @@ Ok: - Register: 0 - actions: - Push: - - Constant: 12 + - Constant: 15 - GetVariable - Push: - Register: 0 @@ -114,7 +201,7 @@ Ok: - Push: - "Null" - Equals2 - - If: loc0217 + - If: loc0302 - Push: - Constant: 5 - StackSwap @@ -126,22 +213,22 @@ Ok: - GetVariable - Add2 - Trace - - Jump: loc021e + - Jump: loc0309 - Pop - Push: - Register: 0 - Throw label_positions: - loc0217: 17 + loc0302: 17 finally_body: actions: - Push: - Constant: 6 - Trace label_positions: - loc021e: 0 + loc0309: 0 - Push: - - Constant: 13 + - Constant: 16 - Trace - Try: try_body: @@ -150,7 +237,7 @@ Ok: - Constant: 1 - Trace - Push: - - Constant: 11 + - Constant: 14 - GetVariable - Throw label_positions: {} @@ -158,7 +245,7 @@ Ok: - Register: 0 - actions: - Push: - - Constant: 12 + - Constant: 15 - GetVariable - Push: - Register: 0 @@ -167,18 +254,18 @@ Ok: - Push: - "Null" - Equals2 - - If: loc026b + - If: loc0356 - Push: - Constant: 5 - StackSwap - DefineLocal - Push: - - Constant: 14 + - Constant: 17 - Trace - - Jump: loc02ad + - Jump: loc0398 - Pop - Push: - - Constant: 15 + - Constant: 18 - GetVariable - Push: - Register: 0 @@ -187,15 +274,15 @@ Ok: - Push: - "Null" - Equals2 - - If: loc0295 + - If: loc0380 - Push: - Constant: 5 - StackSwap - DefineLocal - Push: - - Constant: 16 + - Constant: 19 - Trace - - Jump: loc02ad + - Jump: loc0398 - Pop - Push: - Register: 0 @@ -204,15 +291,15 @@ Ok: - StackSwap - DefineLocal - Push: - - Constant: 17 + - Constant: 20 - Trace - - Jump: loc02ad + - Jump: loc0398 label_positions: - loc026b: 14 - loc0295: 29 + loc0356: 14 + loc0380: 29 finally_body: ~ - Push: - - Constant: 18 + - Constant: 21 - Trace - Try: try_body: @@ -232,7 +319,10 @@ Ok: - Trace label_positions: {} - Push: - - Constant: 19 + - Constant: 22 - Trace label_positions: - loc02ad: 13 + loc023c: 10 + loc026b: 13 + loc02b4: 16 + loc0398: 22 diff --git a/crates/rascal/src/internal/as2_pcode/parser/snapshots/rascal__internal__as2_pcode__parser__tests__printed@try_catch.pcode.snap b/crates/rascal/src/internal/as2_pcode/parser/snapshots/rascal__internal__as2_pcode__parser__tests__printed@try_catch.pcode.snap index e13ff8f..81afc0c 100644 --- a/crates/rascal/src/internal/as2_pcode/parser/snapshots/rascal__internal__as2_pcode__parser__tests__printed@try_catch.pcode.snap +++ b/crates/rascal/src/internal/as2_pcode/parser/snapshots/rascal__internal__as2_pcode__parser__tests__printed@try_catch.pcode.snap @@ -3,7 +3,7 @@ source: crates/rascal/src/internal/as2_pcode/parser/tests.rs expression: "parsed.unwrap_or_else(|_| Actions::empty())" input_file: samples/as2_pcode/try_catch.pcode --- -ConstantPool " -- try catch finally -- ", "try!", "message", "Hello World!", "catch!", "e", "finally!", " -- try catch -- ", "test", "caught something! ", " -- try catch(MovieClip) finally -- ", "this", "MovieClip", " -- try catch(MovieClip) catch(Number) --", "catch something of MovieClip!", "Number", "catch something of Number!", "catch anything else!", " -- try finally -- ", "If you see this, it didn\'t throw! :(" +ConstantPool " -- try catch finally -- ", "try!", "message", "Hello World!", "catch!", "e", "finally!", " -- try catch -- ", "test", "caught something! ", " -- empty try -- ", " -- try with no throw -- ", " -- try with conditional throw -- ", " -- try catch(MovieClip) finally -- ", "this", "MovieClip", " -- try catch(MovieClip) catch(Number) --", "catch something of MovieClip!", "Number", "catch something of Number!", "catch anything else!", " -- try finally -- ", "If you see this, it didn\'t throw! :(" Push constant0 Trace Try "e" { @@ -44,22 +44,74 @@ Trace } Push constant10 Trace +Try "e" { +Jump loc023c +} +Catch { +Push constant9 +Push constant5 +GetVariable +Add2 +Trace +} +loc023c:Push constant11 +Trace +Try "e" { +Push constant2 +Push constant2 +DefineLocal +Jump loc026b +} +Catch { +Push constant9 +Push constant5 +GetVariable +Add2 +Trace +} +loc026b:Push constant12 +Trace +Try "e" { +Push constant2 +Push constant2 +DefineLocal +Push constant2 +GetVariable +Push constant2 +Equals2 +Not +Not +If loc02a2 +Push constant2 +GetVariable +Throw +loc02a2:Jump loc02b4 +} +Catch { +Push constant9 +Push constant5 +GetVariable +Add2 +Trace +} +loc02b4:Push constant13 +Trace Try register"0" { Push constant1 Trace -Push constant11 +Push constant14 GetVariable Throw } Catch { -Push constant12 +Push constant15 GetVariable Push register0 CastOp PushDuplicate Push null Equals2 -If loc0217 +If loc0302 Push constant5 StackSwap DefineLocal @@ -68,64 +120,64 @@ Push constant5 GetVariable Add2 Trace -Jump loc021e -loc0217:Pop +Jump loc0309 +loc0302:Pop Push register0 Throw } Finally { -loc021e:Push constant6 +loc0309:Push constant6 Trace } -Push constant13 +Push constant16 Trace Try register"0" { Push constant1 Trace -Push constant11 +Push constant14 GetVariable Throw } Catch { -Push constant12 +Push constant15 GetVariable Push register0 CastOp PushDuplicate Push null Equals2 -If loc026b +If loc0356 Push constant5 StackSwap DefineLocal -Push constant14 +Push constant17 Trace -Jump loc02ad -loc026b:Pop -Push constant15 +Jump loc0398 +loc0356:Pop +Push constant18 GetVariable Push register0 CastOp PushDuplicate Push null Equals2 -If loc0295 +If loc0380 Push constant5 StackSwap DefineLocal -Push constant16 +Push constant19 Trace -Jump loc02ad -loc0295:Pop +Jump loc0398 +loc0380:Pop Push register0 Push constant5 StackSwap DefineLocal -Push constant17 +Push constant20 Trace -Jump loc02ad +Jump loc0398 } -loc02ad:Push constant18 +loc0398:Push constant21 Trace Try { Push constant1 @@ -137,5 +189,5 @@ Finally { Push constant6 Trace } -Push constant19 +Push constant22 Trace diff --git a/crates/rascal/src/snapshots/rascal__program__tests__all_samples@try_catch.as.snap b/crates/rascal/src/snapshots/rascal__program__tests__all_samples@try_catch.as.snap index 3d6d1f5..d095cbe 100644 --- a/crates/rascal/src/snapshots/rascal__program__tests__all_samples@try_catch.as.snap +++ b/crates/rascal/src/snapshots/rascal__program__tests__all_samples@try_catch.as.snap @@ -166,12 +166,211 @@ Ok: - Expr: span: start: 308 - end: 353 + end: 334 value: Trace: span: start: 314 - end: 352 + end: 333 + value: + Constant: + String: " -- empty try -- " + - Try: + try_body: [] + typed_catches: [] + catch_all: + name: + span: + start: 350 + end: 351 + value: e + body: + - Expr: + span: + start: 356 + end: 387 + value: + Trace: + span: + start: 362 + end: 386 + value: + BinaryOperator: + - Add + - span: + start: 362 + end: 382 + value: + Constant: + String: "caught something! " + - span: + start: 385 + end: 386 + value: + Constant: + Identifier: e + finally: [] + - Expr: + span: + start: 392 + end: 426 + value: + Trace: + span: + start: 398 + end: 425 + value: + Constant: + String: " -- try with no throw -- " + - Try: + try_body: + - Declare: + - name: + span: + start: 442 + end: 449 + value: message + value: + span: + start: 452 + end: 461 + value: + Constant: + String: message + type_name: ~ + typed_catches: [] + catch_all: + name: + span: + start: 471 + end: 472 + value: e + body: + - Expr: + span: + start: 477 + end: 508 + value: + Trace: + span: + start: 483 + end: 507 + value: + BinaryOperator: + - Add + - span: + start: 483 + end: 503 + value: + Constant: + String: "caught something! " + - span: + start: 506 + end: 507 + value: + Constant: + Identifier: e + finally: [] + - Expr: + span: + start: 513 + end: 556 + value: + Trace: + span: + start: 519 + end: 555 + value: + Constant: + String: " -- try with conditional throw -- " + - Try: + try_body: + - Declare: + - name: + span: + start: 572 + end: 579 + value: message + value: + span: + start: 582 + end: 591 + value: + Constant: + String: message + type_name: ~ + - If: + condition: + span: + start: 601 + end: 621 + value: + BinaryOperator: + - NotEqual + - span: + start: 601 + end: 608 + value: + Constant: + Identifier: message + - span: + start: 612 + end: 621 + value: + Constant: + String: message + "yes": + Block: + - Throw: + - span: + start: 639 + end: 646 + value: + Constant: + Identifier: message + "no": ~ + typed_catches: [] + catch_all: + name: + span: + start: 662 + end: 663 + value: e + body: + - Expr: + span: + start: 668 + end: 699 + value: + Trace: + span: + start: 674 + end: 698 + value: + BinaryOperator: + - Add + - span: + start: 674 + end: 694 + value: + Constant: + String: "caught something! " + - span: + start: 697 + end: 698 + value: + Constant: + Identifier: e + finally: [] + - Expr: + span: + start: 704 + end: 749 + value: + Trace: + span: + start: 710 + end: 748 value: Constant: String: " -- try catch(MovieClip) finally -- " @@ -179,55 +378,55 @@ Ok: try_body: - Expr: span: - start: 362 - end: 375 + start: 758 + end: 771 value: Trace: span: - start: 368 - end: 374 + start: 764 + end: 770 value: Constant: String: try! - Throw: - span: - start: 384 - end: 388 + start: 780 + end: 784 value: Constant: Identifier: this typed_catches: - - span: - start: 401 - end: 410 + start: 797 + end: 806 value: MovieClip - name: span: - start: 398 - end: 399 + start: 794 + end: 795 value: e body: - Expr: span: - start: 415 - end: 446 + start: 811 + end: 842 value: Trace: span: - start: 421 - end: 445 + start: 817 + end: 841 value: BinaryOperator: - Add - span: - start: 421 - end: 441 + start: 817 + end: 837 value: Constant: String: "caught something! " - span: - start: 444 - end: 445 + start: 840 + end: 841 value: Constant: Identifier: e @@ -235,25 +434,25 @@ Ok: finally: - Expr: span: - start: 464 - end: 481 + start: 860 + end: 877 value: Trace: span: - start: 470 - end: 480 + start: 866 + end: 876 value: Constant: String: finally! - Expr: span: - start: 486 - end: 536 + start: 882 + end: 932 value: Trace: span: - start: 492 - end: 535 + start: 888 + end: 931 value: Constant: String: " -- try catch(MovieClip) catch(Number) --" @@ -261,97 +460,97 @@ Ok: try_body: - Expr: span: - start: 545 - end: 558 + start: 941 + end: 954 value: Trace: span: - start: 551 - end: 557 + start: 947 + end: 953 value: Constant: String: try! - Throw: - span: - start: 567 - end: 571 + start: 963 + end: 967 value: Constant: Identifier: this typed_catches: - - span: - start: 584 - end: 593 + start: 980 + end: 989 value: MovieClip - name: span: - start: 581 - end: 582 + start: 977 + end: 978 value: e body: - Expr: span: - start: 598 - end: 636 + start: 994 + end: 1032 value: Trace: span: - start: 604 - end: 635 + start: 1000 + end: 1031 value: Constant: String: catch something of MovieClip! - - span: - start: 649 - end: 655 + start: 1045 + end: 1051 value: Number - name: span: - start: 646 - end: 647 + start: 1042 + end: 1043 value: e body: - Expr: span: - start: 660 - end: 695 + start: 1056 + end: 1091 value: Trace: span: - start: 666 - end: 694 + start: 1062 + end: 1090 value: Constant: String: catch something of Number! catch_all: name: span: - start: 705 - end: 706 + start: 1101 + end: 1102 value: e body: - Expr: span: - start: 711 - end: 740 + start: 1107 + end: 1136 value: Trace: span: - start: 717 - end: 739 + start: 1113 + end: 1135 value: Constant: String: catch anything else! finally: [] - Expr: span: - start: 774 - end: 802 + start: 1170 + end: 1198 value: Trace: span: - start: 780 - end: 801 + start: 1176 + end: 1197 value: Constant: String: " -- try finally -- " @@ -359,20 +558,20 @@ Ok: try_body: - Expr: span: - start: 812 - end: 825 + start: 1208 + end: 1221 value: Trace: span: - start: 818 - end: 824 + start: 1214 + end: 1220 value: Constant: String: try! - Throw: - span: - start: 837 - end: 841 + start: 1233 + end: 1237 value: Constant: Identifier: "null" @@ -381,25 +580,25 @@ Ok: finally: - Expr: span: - start: 856 - end: 873 + start: 1252 + end: 1269 value: Trace: span: - start: 862 - end: 872 + start: 1258 + end: 1268 value: Constant: String: finally! - Expr: span: - start: 878 - end: 923 + start: 1274 + end: 1319 value: Trace: span: - start: 884 - end: 922 + start: 1280 + end: 1318 value: Constant: String: "If you see this, it didn't throw! :(" diff --git a/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch.as.snap b/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch.as.snap index 78e3321..ee1e34b 100644 --- a/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch.as.snap +++ b/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch.as.snap @@ -16,6 +16,9 @@ initializer: - " -- try catch -- " - test - "caught something! " + - " -- empty try -- " + - " -- try with no throw -- " + - " -- try with conditional throw -- " - " -- try catch(MovieClip) finally -- " - this - " -- try catch(MovieClip) catch(Number) --" @@ -86,6 +89,82 @@ initializer: - Push: - Constant: 10 - Trace + - Try: + try_body: + actions: [] + label_positions: {} + catch_body: + - Variable: e + - actions: + - Push: + - Constant: 9 + - Constant: 5 + - GetVariable + - Add2 + - Trace + label_positions: {} + finally_body: ~ + - Push: + - Constant: 11 + - Trace + - Try: + try_body: + actions: + - Push: + - Constant: 2 + - Constant: 2 + - DefineLocal + label_positions: {} + catch_body: + - Variable: e + - actions: + - Push: + - Constant: 9 + - Constant: 5 + - GetVariable + - Add2 + - Trace + label_positions: {} + finally_body: ~ + - Push: + - Constant: 12 + - Trace + - Try: + try_body: + actions: + - Push: + - Constant: 2 + - Constant: 2 + - DefineLocal + - Push: + - Constant: 2 + - GetVariable + - Push: + - Constant: 2 + - Equals2 + - Not + - Not + - If: loc0000 + - Push: + - Constant: 2 + - GetVariable + - Throw + label_positions: + loc0000: 12 + catch_body: + - Variable: e + - actions: + - Push: + - Constant: 9 + - Constant: 5 + - GetVariable + - Add2 + - Trace + label_positions: {} + finally_body: ~ + - Push: + - Constant: 13 + - Trace - Try: try_body: actions: @@ -93,7 +172,7 @@ initializer: - Constant: 1 - Trace - Push: - - Constant: 11 + - Constant: 14 - GetVariable - Throw label_positions: {} @@ -110,7 +189,7 @@ initializer: - Push: - "Null" - Equals2 - - If: loc0001 + - If: loc0002 - Push: - String: e - StackSwap @@ -121,22 +200,22 @@ initializer: - GetVariable - Add2 - Trace - - Jump: loc0000 + - Jump: loc0001 - Pop - Push: - Register: 0 - Throw label_positions: - loc0001: 16 + loc0002: 16 finally_body: actions: - Push: - Constant: 6 - Trace label_positions: - loc0000: 0 + loc0001: 0 - Push: - - Constant: 12 + - Constant: 15 - Trace - Try: try_body: @@ -145,7 +224,7 @@ initializer: - Constant: 1 - Trace - Push: - - Constant: 11 + - Constant: 14 - GetVariable - Throw label_positions: {} @@ -162,15 +241,15 @@ initializer: - Push: - "Null" - Equals2 - - If: loc0003 + - If: loc0004 - Push: - String: e - StackSwap - DefineLocal - Push: - - Constant: 13 + - Constant: 16 - Trace - - Jump: loc0002 + - Jump: loc0003 - Pop - Push: - String: Number @@ -182,15 +261,15 @@ initializer: - Push: - "Null" - Equals2 - - If: loc0004 + - If: loc0005 - Push: - String: e - StackSwap - DefineLocal - Push: - - Constant: 14 + - Constant: 17 - Trace - - Jump: loc0002 + - Jump: loc0003 - Pop - Push: - Register: 0 @@ -198,14 +277,14 @@ initializer: - StackSwap - DefineLocal - Push: - - Constant: 15 + - Constant: 18 - Trace label_positions: - loc0003: 14 - loc0004: 29 + loc0004: 14 + loc0005: 29 finally_body: ~ - Push: - - Constant: 16 + - Constant: 19 - Trace - Try: try_body: @@ -225,10 +304,10 @@ initializer: - Trace label_positions: {} - Push: - - Constant: 17 + - Constant: 20 - Trace label_positions: - loc0002: 13 + loc0003: 22 extra_modules: [] compile_options: swf_version: 15 diff --git a/samples/as2/try_catch.as b/samples/as2/try_catch.as index cf68545..81a469a 100644 --- a/samples/as2/try_catch.as +++ b/samples/as2/try_catch.as @@ -19,6 +19,29 @@ try { trace("caught something! " + e); } +trace(" -- empty try -- "); +try { +} catch(e) { + trace("caught something! " + e); +} + +trace(" -- try with no throw -- "); +try { + var message = "message"; +} catch(e) { + trace("caught something! " + e); +} + +trace(" -- try with conditional throw -- "); +try { + var message = "message"; + if (message != "message") { + throw message; + } +} catch(e) { + trace("caught something! " + e); +} + trace(" -- try catch(MovieClip) finally -- "); try { trace("try!"); diff --git a/samples/as2_pcode/try_catch.pcode b/samples/as2_pcode/try_catch.pcode index b55a2ee..fc80952 100644 --- a/samples/as2_pcode/try_catch.pcode +++ b/samples/as2_pcode/try_catch.pcode @@ -1,4 +1,4 @@ -ConstantPool " -- try catch finally -- ", "try!", "message", "Hello World!", "catch!", "e", "finally!", " -- try catch -- ", "test", "caught something! ", " -- try catch(MovieClip) finally -- ", "this", "MovieClip", " -- try catch(MovieClip) catch(Number) --", "catch something of MovieClip!", "Number", "catch something of Number!", "catch anything else!", " -- try finally -- ", "If you see this, it didn\'t throw! :(" +ConstantPool " -- try catch finally -- ", "try!", "message", "Hello World!", "catch!", "e", "finally!", " -- try catch -- ", "test", "caught something! ", " -- empty try -- ", " -- try with no throw -- ", " -- try with conditional throw -- ", " -- try catch(MovieClip) finally -- ", "this", "MovieClip", " -- try catch(MovieClip) catch(Number) --", "catch something of MovieClip!", "Number", "catch something of Number!", "catch anything else!", " -- try finally -- ", "If you see this, it didn\'t throw! :(" Push constant0 Trace Try "e" { @@ -39,22 +39,74 @@ Trace } Push constant10 Trace +Try "e" { +Jump loc023c +} +Catch { +Push constant9 +Push constant5 +GetVariable +Add2 +Trace +} +loc023c:Push constant11 +Trace +Try "e" { +Push constant2 +Push constant2 +DefineLocal +Jump loc026b +} +Catch { +Push constant9 +Push constant5 +GetVariable +Add2 +Trace +} +loc026b:Push constant12 +Trace +Try "e" { +Push constant2 +Push constant2 +DefineLocal +Push constant2 +GetVariable +Push constant2 +Equals2 +Not +Not +If loc02a2 +Push constant2 +GetVariable +Throw +loc02a2:Jump loc02b4 +} +Catch { +Push constant9 +Push constant5 +GetVariable +Add2 +Trace +} +loc02b4:Push constant13 +Trace Try register0 { Push constant1 Trace -Push constant11 +Push constant14 GetVariable Throw } Catch { -Push constant12 +Push constant15 GetVariable Push register0 CastOp PushDuplicate Push null Equals2 -If loc0217 +If loc0302 Push constant5 StackSwap DefineLocal @@ -63,64 +115,64 @@ Push constant5 GetVariable Add2 Trace -Jump loc021e -loc0217:Pop +Jump loc0309 +loc0302:Pop Push register0 Throw } Finally { -loc021e:Push constant6 +loc0309:Push constant6 Trace } -Push constant13 +Push constant16 Trace Try register0 { Push constant1 Trace -Push constant11 +Push constant14 GetVariable Throw } Catch { -Push constant12 +Push constant15 GetVariable Push register0 CastOp PushDuplicate Push null Equals2 -If loc026b +If loc0356 Push constant5 StackSwap DefineLocal -Push constant14 +Push constant17 Trace -Jump loc02ad -loc026b:Pop -Push constant15 +Jump loc0398 +loc0356:Pop +Push constant18 GetVariable Push register0 CastOp PushDuplicate Push null Equals2 -If loc0295 +If loc0380 Push constant5 StackSwap DefineLocal -Push constant16 +Push constant19 Trace -Jump loc02ad -loc0295:Pop +Jump loc0398 +loc0380:Pop Push register0 Push constant5 StackSwap DefineLocal -Push constant17 +Push constant20 Trace -Jump loc02ad +Jump loc0398 } -loc02ad:Push constant18 +loc0398:Push constant21 Trace Try { Push constant1 @@ -132,5 +184,5 @@ Finally { Push constant6 Trace } -Push constant19 +Push constant22 Trace From d9cc3e10a35e5560e281b4edbb91f75d1bf0c809 Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Sat, 2 May 2026 15:34:13 +0200 Subject: [PATCH 2/2] Fix codegen for try-catch (jump to end after try statements) --- .../src/internal/as2_codegen/statement.rs | 4 +- ...scal__tests__all_samples@try_catch.as.snap | 46 ++++++++++++------- ...s@try_catch_finally_break_continue.as.snap | 30 ++++++------ ...tests__all_samples@try_catch_stack.as.snap | 4 +- 4 files changed, 51 insertions(+), 33 deletions(-) diff --git a/crates/rascal/src/internal/as2_codegen/statement.rs b/crates/rascal/src/internal/as2_codegen/statement.rs index 917815c..d5612de 100644 --- a/crates/rascal/src/internal/as2_codegen/statement.rs +++ b/crates/rascal/src/internal/as2_codegen/statement.rs @@ -697,9 +697,10 @@ fn gen_get_url( } fn gen_try_catch(context: &mut ScriptContext, builder: &mut CodeBuilder, try_catch: &TryCatch) { - let mut end_label: Option = None; + let mut end_label: Option = Some(context.create_label()); let mut try_builder = CodeBuilder::new(); gen_statements(context, &mut try_builder, &try_catch.try_body); + try_builder.action(Action::Jump(end_label.clone().unwrap())); let try_body = try_builder.into_actions(); let catch_body = if try_catch.typed_catches.is_empty() && try_catch.catch_all.is_none() { @@ -720,7 +721,6 @@ fn gen_try_catch(context: &mut ScriptContext, builder: &mut CodeBuilder, try_cat // Any number of typed catch blocks, with an optional catch-all block at the end let mut catch_builder = CodeBuilder::new(); let catch_target = CatchTarget::Register(0); - end_label = Some(context.create_label()); let mut first = true; for (type_name, catch) in &try_catch.typed_catches { diff --git a/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch.as.snap b/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch.as.snap index ee1e34b..099ddc9 100644 --- a/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch.as.snap +++ b/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch.as.snap @@ -44,6 +44,7 @@ initializer: - Constant: 2 - GetVariable - Throw + - Jump: loc0000 label_positions: {} catch_body: - Variable: e @@ -61,7 +62,8 @@ initializer: - Push: - Constant: 6 - Trace - label_positions: {} + label_positions: + loc0000: 0 - Push: - Constant: 7 - Trace @@ -74,6 +76,7 @@ initializer: - Push: - Constant: 8 - Throw + - Jump: loc0001 label_positions: {} catch_body: - Variable: e @@ -91,7 +94,8 @@ initializer: - Trace - Try: try_body: - actions: [] + actions: + - Jump: loc0002 label_positions: {} catch_body: - Variable: e @@ -114,6 +118,7 @@ initializer: - Constant: 2 - Constant: 2 - DefineLocal + - Jump: loc0003 label_positions: {} catch_body: - Variable: e @@ -144,13 +149,14 @@ initializer: - Equals2 - Not - Not - - If: loc0000 + - If: loc0005 - Push: - Constant: 2 - GetVariable - Throw + - Jump: loc0004 label_positions: - loc0000: 12 + loc0005: 12 catch_body: - Variable: e - actions: @@ -175,6 +181,7 @@ initializer: - Constant: 14 - GetVariable - Throw + - Jump: loc0006 label_positions: {} catch_body: - Register: 0 @@ -189,7 +196,7 @@ initializer: - Push: - "Null" - Equals2 - - If: loc0002 + - If: loc0007 - Push: - String: e - StackSwap @@ -200,20 +207,20 @@ initializer: - GetVariable - Add2 - Trace - - Jump: loc0001 + - Jump: loc0006 - Pop - Push: - Register: 0 - Throw label_positions: - loc0002: 16 + loc0007: 16 finally_body: actions: - Push: - Constant: 6 - Trace label_positions: - loc0001: 0 + loc0006: 0 - Push: - Constant: 15 - Trace @@ -227,6 +234,7 @@ initializer: - Constant: 14 - GetVariable - Throw + - Jump: loc0008 label_positions: {} catch_body: - Register: 0 @@ -241,7 +249,7 @@ initializer: - Push: - "Null" - Equals2 - - If: loc0004 + - If: loc0009 - Push: - String: e - StackSwap @@ -249,7 +257,7 @@ initializer: - Push: - Constant: 16 - Trace - - Jump: loc0003 + - Jump: loc0008 - Pop - Push: - String: Number @@ -261,7 +269,7 @@ initializer: - Push: - "Null" - Equals2 - - If: loc0005 + - If: loc000a - Push: - String: e - StackSwap @@ -269,7 +277,7 @@ initializer: - Push: - Constant: 17 - Trace - - Jump: loc0003 + - Jump: loc0008 - Pop - Push: - Register: 0 @@ -280,8 +288,8 @@ initializer: - Constant: 18 - Trace label_positions: - loc0004: 14 - loc0005: 29 + loc0009: 14 + loc000a: 29 finally_body: ~ - Push: - Constant: 19 @@ -295,6 +303,7 @@ initializer: - Push: - "Null" - Throw + - Jump: loc000b label_positions: {} catch_body: ~ finally_body: @@ -302,12 +311,17 @@ initializer: - Push: - Constant: 6 - Trace - label_positions: {} + label_positions: + loc000b: 0 - Push: - Constant: 20 - Trace label_positions: - loc0003: 22 + loc0001: 7 + loc0002: 10 + loc0003: 13 + loc0004: 16 + loc0008: 22 extra_modules: [] compile_options: swf_version: 15 diff --git a/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch_finally_break_continue.as.snap b/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch_finally_break_continue.as.snap index 39f3292..e338ed0 100644 --- a/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch_finally_break_continue.as.snap +++ b/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch_finally_break_continue.as.snap @@ -50,7 +50,7 @@ initializer: - Integer: 1 - Equals2 - Not - - If: loc0003 + - If: loc0004 - Jump: loc0001 - Push: - Constant: 0 @@ -59,7 +59,7 @@ initializer: - Integer: 2 - Equals2 - Not - - If: loc0004 + - If: loc0005 - Push: - Constant: 3 - Throw @@ -70,14 +70,15 @@ initializer: - Integer: 4 - Equals2 - Not - - If: loc0005 + - If: loc0006 - Push: - Constant: 4 - Throw + - Jump: loc0003 label_positions: - loc0003: 11 - loc0004: 19 - loc0005: 27 + loc0004: 11 + loc0005: 19 + loc0006: 27 catch_body: - Variable: e - actions: @@ -94,7 +95,7 @@ initializer: - Constant: 3 - Equals2 - Not - - If: loc0006 + - If: loc0007 - Jump: loc0000 - Push: - Constant: 6 @@ -103,11 +104,11 @@ initializer: - Constant: 4 - Equals2 - Not - - If: loc0007 + - If: loc0008 - Jump: loc0001 label_positions: - loc0006: 11 - loc0007: 18 + loc0007: 11 + loc0008: 18 finally_body: actions: - Push: @@ -123,7 +124,7 @@ initializer: - Integer: 3 - Equals2 - Not - - If: loc0008 + - If: loc0009 - Jump: loc0001 - Push: - Constant: 0 @@ -132,11 +133,12 @@ initializer: - Integer: 5 - Equals2 - Not - - If: loc0009 + - If: loc000a - Jump: loc0000 label_positions: - loc0008: 11 - loc0009: 18 + loc0003: 0 + loc0009: 11 + loc000a: 18 - Push: - Constant: 8 - Constant: 0 diff --git a/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch_stack.as.snap b/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch_stack.as.snap index e4e448d..1bded53 100644 --- a/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch_stack.as.snap +++ b/crates/rascal/src/snapshots/rascal__tests__all_samples@try_catch_stack.as.snap @@ -42,6 +42,7 @@ initializer: - Add2 - Add2 - Return + - Jump: loc0000 label_positions: {} catch_body: - Variable: e @@ -57,7 +58,8 @@ initializer: - Return label_positions: {} finally_body: ~ - label_positions: {} + label_positions: + loc0000: 1 - DefineLocal - Push: - Integer: 0