prism 0.17.1 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +60 -1
- data/Makefile +5 -5
- data/README.md +4 -3
- data/config.yml +214 -68
- data/docs/build_system.md +6 -6
- data/docs/building.md +10 -3
- data/docs/configuration.md +11 -9
- data/docs/encoding.md +92 -88
- data/docs/heredocs.md +1 -1
- data/docs/javascript.md +29 -1
- data/docs/local_variable_depth.md +229 -0
- data/docs/ruby_api.md +16 -0
- data/docs/serialization.md +18 -13
- data/ext/prism/api_node.c +411 -240
- data/ext/prism/extconf.rb +97 -127
- data/ext/prism/extension.c +97 -33
- data/ext/prism/extension.h +1 -1
- data/include/prism/ast.h +377 -159
- data/include/prism/defines.h +17 -0
- data/include/prism/diagnostic.h +38 -6
- data/include/prism/{enc/pm_encoding.h → encoding.h} +126 -64
- data/include/prism/options.h +2 -2
- data/include/prism/parser.h +62 -36
- data/include/prism/regexp.h +2 -2
- data/include/prism/util/pm_buffer.h +9 -1
- data/include/prism/util/pm_memchr.h +2 -2
- data/include/prism/util/pm_strpbrk.h +3 -3
- data/include/prism/version.h +3 -3
- data/include/prism.h +13 -15
- data/lib/prism/compiler.rb +15 -3
- data/lib/prism/debug.rb +13 -4
- data/lib/prism/desugar_compiler.rb +4 -3
- data/lib/prism/dispatcher.rb +70 -14
- data/lib/prism/dot_visitor.rb +4612 -0
- data/lib/prism/dsl.rb +77 -57
- data/lib/prism/ffi.rb +19 -6
- data/lib/prism/lex_compat.rb +19 -9
- data/lib/prism/mutation_compiler.rb +26 -6
- data/lib/prism/node.rb +1314 -522
- data/lib/prism/node_ext.rb +102 -19
- data/lib/prism/parse_result.rb +58 -27
- data/lib/prism/ripper_compat.rb +49 -34
- data/lib/prism/serialize.rb +251 -227
- data/lib/prism/visitor.rb +15 -3
- data/lib/prism.rb +21 -4
- data/prism.gemspec +7 -9
- data/rbi/prism.rbi +688 -284
- data/rbi/prism_static.rbi +3 -0
- data/sig/prism.rbs +426 -156
- data/sig/prism_static.rbs +1 -0
- data/src/diagnostic.c +280 -216
- data/src/encoding.c +5137 -0
- data/src/node.c +99 -21
- data/src/options.c +21 -2
- data/src/prettyprint.c +1743 -1241
- data/src/prism.c +1774 -831
- data/src/regexp.c +15 -15
- data/src/serialize.c +261 -164
- data/src/util/pm_buffer.c +10 -1
- data/src/util/pm_memchr.c +1 -1
- data/src/util/pm_strpbrk.c +4 -4
- metadata +8 -10
- data/src/enc/pm_big5.c +0 -53
- data/src/enc/pm_euc_jp.c +0 -59
- data/src/enc/pm_gbk.c +0 -62
- data/src/enc/pm_shift_jis.c +0 -57
- data/src/enc/pm_tables.c +0 -743
- data/src/enc/pm_unicode.c +0 -2369
- data/src/enc/pm_windows_31j.c +0 -57
data/include/prism/ast.h
CHANGED
@@ -631,374 +631,386 @@ enum pm_node_type {
|
|
631
631
|
/** CallOrWriteNode */
|
632
632
|
PM_CALL_OR_WRITE_NODE = 21,
|
633
633
|
|
634
|
+
/** CallTargetNode */
|
635
|
+
PM_CALL_TARGET_NODE = 22,
|
636
|
+
|
634
637
|
/** CapturePatternNode */
|
635
|
-
PM_CAPTURE_PATTERN_NODE =
|
638
|
+
PM_CAPTURE_PATTERN_NODE = 23,
|
639
|
+
|
640
|
+
/** CaseMatchNode */
|
641
|
+
PM_CASE_MATCH_NODE = 24,
|
636
642
|
|
637
643
|
/** CaseNode */
|
638
|
-
PM_CASE_NODE =
|
644
|
+
PM_CASE_NODE = 25,
|
639
645
|
|
640
646
|
/** ClassNode */
|
641
|
-
PM_CLASS_NODE =
|
647
|
+
PM_CLASS_NODE = 26,
|
642
648
|
|
643
649
|
/** ClassVariableAndWriteNode */
|
644
|
-
PM_CLASS_VARIABLE_AND_WRITE_NODE =
|
650
|
+
PM_CLASS_VARIABLE_AND_WRITE_NODE = 27,
|
645
651
|
|
646
652
|
/** ClassVariableOperatorWriteNode */
|
647
|
-
PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE =
|
653
|
+
PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 28,
|
648
654
|
|
649
655
|
/** ClassVariableOrWriteNode */
|
650
|
-
PM_CLASS_VARIABLE_OR_WRITE_NODE =
|
656
|
+
PM_CLASS_VARIABLE_OR_WRITE_NODE = 29,
|
651
657
|
|
652
658
|
/** ClassVariableReadNode */
|
653
|
-
PM_CLASS_VARIABLE_READ_NODE =
|
659
|
+
PM_CLASS_VARIABLE_READ_NODE = 30,
|
654
660
|
|
655
661
|
/** ClassVariableTargetNode */
|
656
|
-
PM_CLASS_VARIABLE_TARGET_NODE =
|
662
|
+
PM_CLASS_VARIABLE_TARGET_NODE = 31,
|
657
663
|
|
658
664
|
/** ClassVariableWriteNode */
|
659
|
-
PM_CLASS_VARIABLE_WRITE_NODE =
|
665
|
+
PM_CLASS_VARIABLE_WRITE_NODE = 32,
|
660
666
|
|
661
667
|
/** ConstantAndWriteNode */
|
662
|
-
PM_CONSTANT_AND_WRITE_NODE =
|
668
|
+
PM_CONSTANT_AND_WRITE_NODE = 33,
|
663
669
|
|
664
670
|
/** ConstantOperatorWriteNode */
|
665
|
-
PM_CONSTANT_OPERATOR_WRITE_NODE =
|
671
|
+
PM_CONSTANT_OPERATOR_WRITE_NODE = 34,
|
666
672
|
|
667
673
|
/** ConstantOrWriteNode */
|
668
|
-
PM_CONSTANT_OR_WRITE_NODE =
|
674
|
+
PM_CONSTANT_OR_WRITE_NODE = 35,
|
669
675
|
|
670
676
|
/** ConstantPathAndWriteNode */
|
671
|
-
PM_CONSTANT_PATH_AND_WRITE_NODE =
|
677
|
+
PM_CONSTANT_PATH_AND_WRITE_NODE = 36,
|
672
678
|
|
673
679
|
/** ConstantPathNode */
|
674
|
-
PM_CONSTANT_PATH_NODE =
|
680
|
+
PM_CONSTANT_PATH_NODE = 37,
|
675
681
|
|
676
682
|
/** ConstantPathOperatorWriteNode */
|
677
|
-
PM_CONSTANT_PATH_OPERATOR_WRITE_NODE =
|
683
|
+
PM_CONSTANT_PATH_OPERATOR_WRITE_NODE = 38,
|
678
684
|
|
679
685
|
/** ConstantPathOrWriteNode */
|
680
|
-
PM_CONSTANT_PATH_OR_WRITE_NODE =
|
686
|
+
PM_CONSTANT_PATH_OR_WRITE_NODE = 39,
|
681
687
|
|
682
688
|
/** ConstantPathTargetNode */
|
683
|
-
PM_CONSTANT_PATH_TARGET_NODE =
|
689
|
+
PM_CONSTANT_PATH_TARGET_NODE = 40,
|
684
690
|
|
685
691
|
/** ConstantPathWriteNode */
|
686
|
-
PM_CONSTANT_PATH_WRITE_NODE =
|
692
|
+
PM_CONSTANT_PATH_WRITE_NODE = 41,
|
687
693
|
|
688
694
|
/** ConstantReadNode */
|
689
|
-
PM_CONSTANT_READ_NODE =
|
695
|
+
PM_CONSTANT_READ_NODE = 42,
|
690
696
|
|
691
697
|
/** ConstantTargetNode */
|
692
|
-
PM_CONSTANT_TARGET_NODE =
|
698
|
+
PM_CONSTANT_TARGET_NODE = 43,
|
693
699
|
|
694
700
|
/** ConstantWriteNode */
|
695
|
-
PM_CONSTANT_WRITE_NODE =
|
701
|
+
PM_CONSTANT_WRITE_NODE = 44,
|
696
702
|
|
697
703
|
/** DefNode */
|
698
|
-
PM_DEF_NODE =
|
704
|
+
PM_DEF_NODE = 45,
|
699
705
|
|
700
706
|
/** DefinedNode */
|
701
|
-
PM_DEFINED_NODE =
|
707
|
+
PM_DEFINED_NODE = 46,
|
702
708
|
|
703
709
|
/** ElseNode */
|
704
|
-
PM_ELSE_NODE =
|
710
|
+
PM_ELSE_NODE = 47,
|
705
711
|
|
706
712
|
/** EmbeddedStatementsNode */
|
707
|
-
PM_EMBEDDED_STATEMENTS_NODE =
|
713
|
+
PM_EMBEDDED_STATEMENTS_NODE = 48,
|
708
714
|
|
709
715
|
/** EmbeddedVariableNode */
|
710
|
-
PM_EMBEDDED_VARIABLE_NODE =
|
716
|
+
PM_EMBEDDED_VARIABLE_NODE = 49,
|
711
717
|
|
712
718
|
/** EnsureNode */
|
713
|
-
PM_ENSURE_NODE =
|
719
|
+
PM_ENSURE_NODE = 50,
|
714
720
|
|
715
721
|
/** FalseNode */
|
716
|
-
PM_FALSE_NODE =
|
722
|
+
PM_FALSE_NODE = 51,
|
717
723
|
|
718
724
|
/** FindPatternNode */
|
719
|
-
PM_FIND_PATTERN_NODE =
|
725
|
+
PM_FIND_PATTERN_NODE = 52,
|
720
726
|
|
721
727
|
/** FlipFlopNode */
|
722
|
-
PM_FLIP_FLOP_NODE =
|
728
|
+
PM_FLIP_FLOP_NODE = 53,
|
723
729
|
|
724
730
|
/** FloatNode */
|
725
|
-
PM_FLOAT_NODE =
|
731
|
+
PM_FLOAT_NODE = 54,
|
726
732
|
|
727
733
|
/** ForNode */
|
728
|
-
PM_FOR_NODE =
|
734
|
+
PM_FOR_NODE = 55,
|
729
735
|
|
730
736
|
/** ForwardingArgumentsNode */
|
731
|
-
PM_FORWARDING_ARGUMENTS_NODE =
|
737
|
+
PM_FORWARDING_ARGUMENTS_NODE = 56,
|
732
738
|
|
733
739
|
/** ForwardingParameterNode */
|
734
|
-
PM_FORWARDING_PARAMETER_NODE =
|
740
|
+
PM_FORWARDING_PARAMETER_NODE = 57,
|
735
741
|
|
736
742
|
/** ForwardingSuperNode */
|
737
|
-
PM_FORWARDING_SUPER_NODE =
|
743
|
+
PM_FORWARDING_SUPER_NODE = 58,
|
738
744
|
|
739
745
|
/** GlobalVariableAndWriteNode */
|
740
|
-
PM_GLOBAL_VARIABLE_AND_WRITE_NODE =
|
746
|
+
PM_GLOBAL_VARIABLE_AND_WRITE_NODE = 59,
|
741
747
|
|
742
748
|
/** GlobalVariableOperatorWriteNode */
|
743
|
-
PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE =
|
749
|
+
PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 60,
|
744
750
|
|
745
751
|
/** GlobalVariableOrWriteNode */
|
746
|
-
PM_GLOBAL_VARIABLE_OR_WRITE_NODE =
|
752
|
+
PM_GLOBAL_VARIABLE_OR_WRITE_NODE = 61,
|
747
753
|
|
748
754
|
/** GlobalVariableReadNode */
|
749
|
-
PM_GLOBAL_VARIABLE_READ_NODE =
|
755
|
+
PM_GLOBAL_VARIABLE_READ_NODE = 62,
|
750
756
|
|
751
757
|
/** GlobalVariableTargetNode */
|
752
|
-
PM_GLOBAL_VARIABLE_TARGET_NODE =
|
758
|
+
PM_GLOBAL_VARIABLE_TARGET_NODE = 63,
|
753
759
|
|
754
760
|
/** GlobalVariableWriteNode */
|
755
|
-
PM_GLOBAL_VARIABLE_WRITE_NODE =
|
761
|
+
PM_GLOBAL_VARIABLE_WRITE_NODE = 64,
|
756
762
|
|
757
763
|
/** HashNode */
|
758
|
-
PM_HASH_NODE =
|
764
|
+
PM_HASH_NODE = 65,
|
759
765
|
|
760
766
|
/** HashPatternNode */
|
761
|
-
PM_HASH_PATTERN_NODE =
|
767
|
+
PM_HASH_PATTERN_NODE = 66,
|
762
768
|
|
763
769
|
/** IfNode */
|
764
|
-
PM_IF_NODE =
|
770
|
+
PM_IF_NODE = 67,
|
765
771
|
|
766
772
|
/** ImaginaryNode */
|
767
|
-
PM_IMAGINARY_NODE =
|
773
|
+
PM_IMAGINARY_NODE = 68,
|
768
774
|
|
769
775
|
/** ImplicitNode */
|
770
|
-
PM_IMPLICIT_NODE =
|
776
|
+
PM_IMPLICIT_NODE = 69,
|
777
|
+
|
778
|
+
/** ImplicitRestNode */
|
779
|
+
PM_IMPLICIT_REST_NODE = 70,
|
771
780
|
|
772
781
|
/** InNode */
|
773
|
-
PM_IN_NODE =
|
782
|
+
PM_IN_NODE = 71,
|
774
783
|
|
775
784
|
/** IndexAndWriteNode */
|
776
|
-
PM_INDEX_AND_WRITE_NODE =
|
785
|
+
PM_INDEX_AND_WRITE_NODE = 72,
|
777
786
|
|
778
787
|
/** IndexOperatorWriteNode */
|
779
|
-
PM_INDEX_OPERATOR_WRITE_NODE =
|
788
|
+
PM_INDEX_OPERATOR_WRITE_NODE = 73,
|
780
789
|
|
781
790
|
/** IndexOrWriteNode */
|
782
|
-
PM_INDEX_OR_WRITE_NODE =
|
791
|
+
PM_INDEX_OR_WRITE_NODE = 74,
|
792
|
+
|
793
|
+
/** IndexTargetNode */
|
794
|
+
PM_INDEX_TARGET_NODE = 75,
|
783
795
|
|
784
796
|
/** InstanceVariableAndWriteNode */
|
785
|
-
PM_INSTANCE_VARIABLE_AND_WRITE_NODE =
|
797
|
+
PM_INSTANCE_VARIABLE_AND_WRITE_NODE = 76,
|
786
798
|
|
787
799
|
/** InstanceVariableOperatorWriteNode */
|
788
|
-
PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE =
|
800
|
+
PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 77,
|
789
801
|
|
790
802
|
/** InstanceVariableOrWriteNode */
|
791
|
-
PM_INSTANCE_VARIABLE_OR_WRITE_NODE =
|
803
|
+
PM_INSTANCE_VARIABLE_OR_WRITE_NODE = 78,
|
792
804
|
|
793
805
|
/** InstanceVariableReadNode */
|
794
|
-
PM_INSTANCE_VARIABLE_READ_NODE =
|
806
|
+
PM_INSTANCE_VARIABLE_READ_NODE = 79,
|
795
807
|
|
796
808
|
/** InstanceVariableTargetNode */
|
797
|
-
PM_INSTANCE_VARIABLE_TARGET_NODE =
|
809
|
+
PM_INSTANCE_VARIABLE_TARGET_NODE = 80,
|
798
810
|
|
799
811
|
/** InstanceVariableWriteNode */
|
800
|
-
PM_INSTANCE_VARIABLE_WRITE_NODE =
|
812
|
+
PM_INSTANCE_VARIABLE_WRITE_NODE = 81,
|
801
813
|
|
802
814
|
/** IntegerNode */
|
803
|
-
PM_INTEGER_NODE =
|
815
|
+
PM_INTEGER_NODE = 82,
|
804
816
|
|
805
817
|
/** InterpolatedMatchLastLineNode */
|
806
|
-
PM_INTERPOLATED_MATCH_LAST_LINE_NODE =
|
818
|
+
PM_INTERPOLATED_MATCH_LAST_LINE_NODE = 83,
|
807
819
|
|
808
820
|
/** InterpolatedRegularExpressionNode */
|
809
|
-
PM_INTERPOLATED_REGULAR_EXPRESSION_NODE =
|
821
|
+
PM_INTERPOLATED_REGULAR_EXPRESSION_NODE = 84,
|
810
822
|
|
811
823
|
/** InterpolatedStringNode */
|
812
|
-
PM_INTERPOLATED_STRING_NODE =
|
824
|
+
PM_INTERPOLATED_STRING_NODE = 85,
|
813
825
|
|
814
826
|
/** InterpolatedSymbolNode */
|
815
|
-
PM_INTERPOLATED_SYMBOL_NODE =
|
827
|
+
PM_INTERPOLATED_SYMBOL_NODE = 86,
|
816
828
|
|
817
829
|
/** InterpolatedXStringNode */
|
818
|
-
PM_INTERPOLATED_X_STRING_NODE =
|
830
|
+
PM_INTERPOLATED_X_STRING_NODE = 87,
|
819
831
|
|
820
832
|
/** KeywordHashNode */
|
821
|
-
PM_KEYWORD_HASH_NODE =
|
833
|
+
PM_KEYWORD_HASH_NODE = 88,
|
822
834
|
|
823
835
|
/** KeywordRestParameterNode */
|
824
|
-
PM_KEYWORD_REST_PARAMETER_NODE =
|
836
|
+
PM_KEYWORD_REST_PARAMETER_NODE = 89,
|
825
837
|
|
826
838
|
/** LambdaNode */
|
827
|
-
PM_LAMBDA_NODE =
|
839
|
+
PM_LAMBDA_NODE = 90,
|
828
840
|
|
829
841
|
/** LocalVariableAndWriteNode */
|
830
|
-
PM_LOCAL_VARIABLE_AND_WRITE_NODE =
|
842
|
+
PM_LOCAL_VARIABLE_AND_WRITE_NODE = 91,
|
831
843
|
|
832
844
|
/** LocalVariableOperatorWriteNode */
|
833
|
-
PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE =
|
845
|
+
PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 92,
|
834
846
|
|
835
847
|
/** LocalVariableOrWriteNode */
|
836
|
-
PM_LOCAL_VARIABLE_OR_WRITE_NODE =
|
848
|
+
PM_LOCAL_VARIABLE_OR_WRITE_NODE = 93,
|
837
849
|
|
838
850
|
/** LocalVariableReadNode */
|
839
|
-
PM_LOCAL_VARIABLE_READ_NODE =
|
851
|
+
PM_LOCAL_VARIABLE_READ_NODE = 94,
|
840
852
|
|
841
853
|
/** LocalVariableTargetNode */
|
842
|
-
PM_LOCAL_VARIABLE_TARGET_NODE =
|
854
|
+
PM_LOCAL_VARIABLE_TARGET_NODE = 95,
|
843
855
|
|
844
856
|
/** LocalVariableWriteNode */
|
845
|
-
PM_LOCAL_VARIABLE_WRITE_NODE =
|
857
|
+
PM_LOCAL_VARIABLE_WRITE_NODE = 96,
|
846
858
|
|
847
859
|
/** MatchLastLineNode */
|
848
|
-
PM_MATCH_LAST_LINE_NODE =
|
860
|
+
PM_MATCH_LAST_LINE_NODE = 97,
|
849
861
|
|
850
862
|
/** MatchPredicateNode */
|
851
|
-
PM_MATCH_PREDICATE_NODE =
|
863
|
+
PM_MATCH_PREDICATE_NODE = 98,
|
852
864
|
|
853
865
|
/** MatchRequiredNode */
|
854
|
-
PM_MATCH_REQUIRED_NODE =
|
866
|
+
PM_MATCH_REQUIRED_NODE = 99,
|
855
867
|
|
856
868
|
/** MatchWriteNode */
|
857
|
-
PM_MATCH_WRITE_NODE =
|
869
|
+
PM_MATCH_WRITE_NODE = 100,
|
858
870
|
|
859
871
|
/** MissingNode */
|
860
|
-
PM_MISSING_NODE =
|
872
|
+
PM_MISSING_NODE = 101,
|
861
873
|
|
862
874
|
/** ModuleNode */
|
863
|
-
PM_MODULE_NODE =
|
875
|
+
PM_MODULE_NODE = 102,
|
864
876
|
|
865
877
|
/** MultiTargetNode */
|
866
|
-
PM_MULTI_TARGET_NODE =
|
878
|
+
PM_MULTI_TARGET_NODE = 103,
|
867
879
|
|
868
880
|
/** MultiWriteNode */
|
869
|
-
PM_MULTI_WRITE_NODE =
|
881
|
+
PM_MULTI_WRITE_NODE = 104,
|
870
882
|
|
871
883
|
/** NextNode */
|
872
|
-
PM_NEXT_NODE =
|
884
|
+
PM_NEXT_NODE = 105,
|
873
885
|
|
874
886
|
/** NilNode */
|
875
|
-
PM_NIL_NODE =
|
887
|
+
PM_NIL_NODE = 106,
|
876
888
|
|
877
889
|
/** NoKeywordsParameterNode */
|
878
|
-
PM_NO_KEYWORDS_PARAMETER_NODE =
|
890
|
+
PM_NO_KEYWORDS_PARAMETER_NODE = 107,
|
891
|
+
|
892
|
+
/** NumberedParametersNode */
|
893
|
+
PM_NUMBERED_PARAMETERS_NODE = 108,
|
879
894
|
|
880
895
|
/** NumberedReferenceReadNode */
|
881
|
-
PM_NUMBERED_REFERENCE_READ_NODE =
|
896
|
+
PM_NUMBERED_REFERENCE_READ_NODE = 109,
|
882
897
|
|
883
898
|
/** OptionalKeywordParameterNode */
|
884
|
-
PM_OPTIONAL_KEYWORD_PARAMETER_NODE =
|
899
|
+
PM_OPTIONAL_KEYWORD_PARAMETER_NODE = 110,
|
885
900
|
|
886
901
|
/** OptionalParameterNode */
|
887
|
-
PM_OPTIONAL_PARAMETER_NODE =
|
902
|
+
PM_OPTIONAL_PARAMETER_NODE = 111,
|
888
903
|
|
889
904
|
/** OrNode */
|
890
|
-
PM_OR_NODE =
|
905
|
+
PM_OR_NODE = 112,
|
891
906
|
|
892
907
|
/** ParametersNode */
|
893
|
-
PM_PARAMETERS_NODE =
|
908
|
+
PM_PARAMETERS_NODE = 113,
|
894
909
|
|
895
910
|
/** ParenthesesNode */
|
896
|
-
PM_PARENTHESES_NODE =
|
911
|
+
PM_PARENTHESES_NODE = 114,
|
897
912
|
|
898
913
|
/** PinnedExpressionNode */
|
899
|
-
PM_PINNED_EXPRESSION_NODE =
|
914
|
+
PM_PINNED_EXPRESSION_NODE = 115,
|
900
915
|
|
901
916
|
/** PinnedVariableNode */
|
902
|
-
PM_PINNED_VARIABLE_NODE =
|
917
|
+
PM_PINNED_VARIABLE_NODE = 116,
|
903
918
|
|
904
919
|
/** PostExecutionNode */
|
905
|
-
PM_POST_EXECUTION_NODE =
|
920
|
+
PM_POST_EXECUTION_NODE = 117,
|
906
921
|
|
907
922
|
/** PreExecutionNode */
|
908
|
-
PM_PRE_EXECUTION_NODE =
|
923
|
+
PM_PRE_EXECUTION_NODE = 118,
|
909
924
|
|
910
925
|
/** ProgramNode */
|
911
|
-
PM_PROGRAM_NODE =
|
926
|
+
PM_PROGRAM_NODE = 119,
|
912
927
|
|
913
928
|
/** RangeNode */
|
914
|
-
PM_RANGE_NODE =
|
929
|
+
PM_RANGE_NODE = 120,
|
915
930
|
|
916
931
|
/** RationalNode */
|
917
|
-
PM_RATIONAL_NODE =
|
932
|
+
PM_RATIONAL_NODE = 121,
|
918
933
|
|
919
934
|
/** RedoNode */
|
920
|
-
PM_REDO_NODE =
|
935
|
+
PM_REDO_NODE = 122,
|
921
936
|
|
922
937
|
/** RegularExpressionNode */
|
923
|
-
PM_REGULAR_EXPRESSION_NODE =
|
938
|
+
PM_REGULAR_EXPRESSION_NODE = 123,
|
924
939
|
|
925
940
|
/** RequiredKeywordParameterNode */
|
926
|
-
PM_REQUIRED_KEYWORD_PARAMETER_NODE =
|
941
|
+
PM_REQUIRED_KEYWORD_PARAMETER_NODE = 124,
|
927
942
|
|
928
943
|
/** RequiredParameterNode */
|
929
|
-
PM_REQUIRED_PARAMETER_NODE =
|
944
|
+
PM_REQUIRED_PARAMETER_NODE = 125,
|
930
945
|
|
931
946
|
/** RescueModifierNode */
|
932
|
-
PM_RESCUE_MODIFIER_NODE =
|
947
|
+
PM_RESCUE_MODIFIER_NODE = 126,
|
933
948
|
|
934
949
|
/** RescueNode */
|
935
|
-
PM_RESCUE_NODE =
|
950
|
+
PM_RESCUE_NODE = 127,
|
936
951
|
|
937
952
|
/** RestParameterNode */
|
938
|
-
PM_REST_PARAMETER_NODE =
|
953
|
+
PM_REST_PARAMETER_NODE = 128,
|
939
954
|
|
940
955
|
/** RetryNode */
|
941
|
-
PM_RETRY_NODE =
|
956
|
+
PM_RETRY_NODE = 129,
|
942
957
|
|
943
958
|
/** ReturnNode */
|
944
|
-
PM_RETURN_NODE =
|
959
|
+
PM_RETURN_NODE = 130,
|
945
960
|
|
946
961
|
/** SelfNode */
|
947
|
-
PM_SELF_NODE =
|
962
|
+
PM_SELF_NODE = 131,
|
948
963
|
|
949
964
|
/** SingletonClassNode */
|
950
|
-
PM_SINGLETON_CLASS_NODE =
|
965
|
+
PM_SINGLETON_CLASS_NODE = 132,
|
951
966
|
|
952
967
|
/** SourceEncodingNode */
|
953
|
-
PM_SOURCE_ENCODING_NODE =
|
968
|
+
PM_SOURCE_ENCODING_NODE = 133,
|
954
969
|
|
955
970
|
/** SourceFileNode */
|
956
|
-
PM_SOURCE_FILE_NODE =
|
971
|
+
PM_SOURCE_FILE_NODE = 134,
|
957
972
|
|
958
973
|
/** SourceLineNode */
|
959
|
-
PM_SOURCE_LINE_NODE =
|
974
|
+
PM_SOURCE_LINE_NODE = 135,
|
960
975
|
|
961
976
|
/** SplatNode */
|
962
|
-
PM_SPLAT_NODE =
|
977
|
+
PM_SPLAT_NODE = 136,
|
963
978
|
|
964
979
|
/** StatementsNode */
|
965
|
-
PM_STATEMENTS_NODE =
|
966
|
-
|
967
|
-
/** StringConcatNode */
|
968
|
-
PM_STRING_CONCAT_NODE = 133,
|
980
|
+
PM_STATEMENTS_NODE = 137,
|
969
981
|
|
970
982
|
/** StringNode */
|
971
|
-
PM_STRING_NODE =
|
983
|
+
PM_STRING_NODE = 138,
|
972
984
|
|
973
985
|
/** SuperNode */
|
974
|
-
PM_SUPER_NODE =
|
986
|
+
PM_SUPER_NODE = 139,
|
975
987
|
|
976
988
|
/** SymbolNode */
|
977
|
-
PM_SYMBOL_NODE =
|
989
|
+
PM_SYMBOL_NODE = 140,
|
978
990
|
|
979
991
|
/** TrueNode */
|
980
|
-
PM_TRUE_NODE =
|
992
|
+
PM_TRUE_NODE = 141,
|
981
993
|
|
982
994
|
/** UndefNode */
|
983
|
-
PM_UNDEF_NODE =
|
995
|
+
PM_UNDEF_NODE = 142,
|
984
996
|
|
985
997
|
/** UnlessNode */
|
986
|
-
PM_UNLESS_NODE =
|
998
|
+
PM_UNLESS_NODE = 143,
|
987
999
|
|
988
1000
|
/** UntilNode */
|
989
|
-
PM_UNTIL_NODE =
|
1001
|
+
PM_UNTIL_NODE = 144,
|
990
1002
|
|
991
1003
|
/** WhenNode */
|
992
|
-
PM_WHEN_NODE =
|
1004
|
+
PM_WHEN_NODE = 145,
|
993
1005
|
|
994
1006
|
/** WhileNode */
|
995
|
-
PM_WHILE_NODE =
|
1007
|
+
PM_WHILE_NODE = 146,
|
996
1008
|
|
997
1009
|
/** XStringNode */
|
998
|
-
PM_X_STRING_NODE =
|
1010
|
+
PM_X_STRING_NODE = 147,
|
999
1011
|
|
1000
1012
|
/** YieldNode */
|
1001
|
-
PM_YIELD_NODE =
|
1013
|
+
PM_YIELD_NODE = 148,
|
1002
1014
|
|
1003
1015
|
/** A special kind of node used for compilation. */
|
1004
1016
|
PM_SCOPE_NODE
|
@@ -1037,6 +1049,11 @@ static const pm_node_flags_t PM_NODE_FLAG_COMMON_MASK = (1 << (PM_NODE_FLAG_BITS
|
|
1037
1049
|
*/
|
1038
1050
|
#define PM_NODE_TYPE_P(node, type) (PM_NODE_TYPE(node) == (type))
|
1039
1051
|
|
1052
|
+
/**
|
1053
|
+
* Return true if the given flag is set on the given node.
|
1054
|
+
*/
|
1055
|
+
#define PM_NODE_FLAG_P(node, flag) ((((pm_node_t *)(node))->flags & (flag)) != 0)
|
1056
|
+
|
1040
1057
|
/**
|
1041
1058
|
* This is the base structure that represents a node in the syntax tree. It is
|
1042
1059
|
* embedded into every node type.
|
@@ -1150,7 +1167,7 @@ typedef struct pm_and_node {
|
|
1150
1167
|
*
|
1151
1168
|
* Type: PM_ARGUMENTS_NODE
|
1152
1169
|
* Flags:
|
1153
|
-
*
|
1170
|
+
* PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT
|
1154
1171
|
*
|
1155
1172
|
* @extends pm_node_t
|
1156
1173
|
*/
|
@@ -1166,6 +1183,8 @@ typedef struct pm_arguments_node {
|
|
1166
1183
|
* ArrayNode
|
1167
1184
|
*
|
1168
1185
|
* Type: PM_ARRAY_NODE
|
1186
|
+
* Flags:
|
1187
|
+
* PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT
|
1169
1188
|
*
|
1170
1189
|
* @extends pm_node_t
|
1171
1190
|
*/
|
@@ -1344,8 +1363,11 @@ typedef struct pm_block_node {
|
|
1344
1363
|
/** BlockNode#locals */
|
1345
1364
|
pm_constant_id_list_t locals;
|
1346
1365
|
|
1366
|
+
/** BlockNode#locals_body_index */
|
1367
|
+
uint32_t locals_body_index;
|
1368
|
+
|
1347
1369
|
/** BlockNode#parameters */
|
1348
|
-
struct
|
1370
|
+
struct pm_node *parameters;
|
1349
1371
|
|
1350
1372
|
/** BlockNode#body */
|
1351
1373
|
struct pm_node *body;
|
@@ -1427,6 +1449,7 @@ typedef struct pm_break_node {
|
|
1427
1449
|
* Flags:
|
1428
1450
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
1429
1451
|
* PM_CALL_NODE_FLAGS_VARIABLE_CALL
|
1452
|
+
* PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
|
1430
1453
|
*
|
1431
1454
|
* @extends pm_node_t
|
1432
1455
|
*/
|
@@ -1463,6 +1486,7 @@ typedef struct pm_call_and_write_node {
|
|
1463
1486
|
* Flags:
|
1464
1487
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
1465
1488
|
* PM_CALL_NODE_FLAGS_VARIABLE_CALL
|
1489
|
+
* PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
|
1466
1490
|
*
|
1467
1491
|
* @extends pm_node_t
|
1468
1492
|
*/
|
@@ -1476,6 +1500,9 @@ typedef struct pm_call_node {
|
|
1476
1500
|
/** CallNode#call_operator_loc */
|
1477
1501
|
pm_location_t call_operator_loc;
|
1478
1502
|
|
1503
|
+
/** CallNode#name */
|
1504
|
+
pm_constant_id_t name;
|
1505
|
+
|
1479
1506
|
/** CallNode#message_loc */
|
1480
1507
|
pm_location_t message_loc;
|
1481
1508
|
|
@@ -1490,9 +1517,6 @@ typedef struct pm_call_node {
|
|
1490
1517
|
|
1491
1518
|
/** CallNode#block */
|
1492
1519
|
struct pm_node *block;
|
1493
|
-
|
1494
|
-
/** CallNode#name */
|
1495
|
-
pm_constant_id_t name;
|
1496
1520
|
} pm_call_node_t;
|
1497
1521
|
|
1498
1522
|
/**
|
@@ -1502,6 +1526,7 @@ typedef struct pm_call_node {
|
|
1502
1526
|
* Flags:
|
1503
1527
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
1504
1528
|
* PM_CALL_NODE_FLAGS_VARIABLE_CALL
|
1529
|
+
* PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
|
1505
1530
|
*
|
1506
1531
|
* @extends pm_node_t
|
1507
1532
|
*/
|
@@ -1541,6 +1566,7 @@ typedef struct pm_call_operator_write_node {
|
|
1541
1566
|
* Flags:
|
1542
1567
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
1543
1568
|
* PM_CALL_NODE_FLAGS_VARIABLE_CALL
|
1569
|
+
* PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
|
1544
1570
|
*
|
1545
1571
|
* @extends pm_node_t
|
1546
1572
|
*/
|
@@ -1570,6 +1596,34 @@ typedef struct pm_call_or_write_node {
|
|
1570
1596
|
struct pm_node *value;
|
1571
1597
|
} pm_call_or_write_node_t;
|
1572
1598
|
|
1599
|
+
/**
|
1600
|
+
* CallTargetNode
|
1601
|
+
*
|
1602
|
+
* Type: PM_CALL_TARGET_NODE
|
1603
|
+
* Flags:
|
1604
|
+
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
1605
|
+
* PM_CALL_NODE_FLAGS_VARIABLE_CALL
|
1606
|
+
* PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
|
1607
|
+
*
|
1608
|
+
* @extends pm_node_t
|
1609
|
+
*/
|
1610
|
+
typedef struct pm_call_target_node {
|
1611
|
+
/** The embedded base node. */
|
1612
|
+
pm_node_t base;
|
1613
|
+
|
1614
|
+
/** CallTargetNode#receiver */
|
1615
|
+
struct pm_node *receiver;
|
1616
|
+
|
1617
|
+
/** CallTargetNode#call_operator_loc */
|
1618
|
+
pm_location_t call_operator_loc;
|
1619
|
+
|
1620
|
+
/** CallTargetNode#name */
|
1621
|
+
pm_constant_id_t name;
|
1622
|
+
|
1623
|
+
/** CallTargetNode#message_loc */
|
1624
|
+
pm_location_t message_loc;
|
1625
|
+
} pm_call_target_node_t;
|
1626
|
+
|
1573
1627
|
/**
|
1574
1628
|
* CapturePatternNode
|
1575
1629
|
*
|
@@ -1591,6 +1645,33 @@ typedef struct pm_capture_pattern_node {
|
|
1591
1645
|
pm_location_t operator_loc;
|
1592
1646
|
} pm_capture_pattern_node_t;
|
1593
1647
|
|
1648
|
+
/**
|
1649
|
+
* CaseMatchNode
|
1650
|
+
*
|
1651
|
+
* Type: PM_CASE_MATCH_NODE
|
1652
|
+
*
|
1653
|
+
* @extends pm_node_t
|
1654
|
+
*/
|
1655
|
+
typedef struct pm_case_match_node {
|
1656
|
+
/** The embedded base node. */
|
1657
|
+
pm_node_t base;
|
1658
|
+
|
1659
|
+
/** CaseMatchNode#predicate */
|
1660
|
+
struct pm_node *predicate;
|
1661
|
+
|
1662
|
+
/** CaseMatchNode#conditions */
|
1663
|
+
struct pm_node_list conditions;
|
1664
|
+
|
1665
|
+
/** CaseMatchNode#consequent */
|
1666
|
+
struct pm_else_node *consequent;
|
1667
|
+
|
1668
|
+
/** CaseMatchNode#case_keyword_loc */
|
1669
|
+
pm_location_t case_keyword_loc;
|
1670
|
+
|
1671
|
+
/** CaseMatchNode#end_keyword_loc */
|
1672
|
+
pm_location_t end_keyword_loc;
|
1673
|
+
} pm_case_match_node_t;
|
1674
|
+
|
1594
1675
|
/**
|
1595
1676
|
* CaseNode
|
1596
1677
|
*
|
@@ -2070,6 +2151,9 @@ typedef struct pm_def_node {
|
|
2070
2151
|
/** DefNode#locals */
|
2071
2152
|
pm_constant_id_list_t locals;
|
2072
2153
|
|
2154
|
+
/** DefNode#locals_body_index */
|
2155
|
+
uint32_t locals_body_index;
|
2156
|
+
|
2073
2157
|
/** DefNode#def_keyword_loc */
|
2074
2158
|
pm_location_t def_keyword_loc;
|
2075
2159
|
|
@@ -2537,6 +2621,9 @@ typedef struct pm_if_node {
|
|
2537
2621
|
/** IfNode#predicate */
|
2538
2622
|
struct pm_node *predicate;
|
2539
2623
|
|
2624
|
+
/** IfNode#then_keyword_loc */
|
2625
|
+
pm_location_t then_keyword_loc;
|
2626
|
+
|
2540
2627
|
/** IfNode#statements */
|
2541
2628
|
struct pm_statements_node *statements;
|
2542
2629
|
|
@@ -2577,6 +2664,18 @@ typedef struct pm_implicit_node {
|
|
2577
2664
|
struct pm_node *value;
|
2578
2665
|
} pm_implicit_node_t;
|
2579
2666
|
|
2667
|
+
/**
|
2668
|
+
* ImplicitRestNode
|
2669
|
+
*
|
2670
|
+
* Type: PM_IMPLICIT_REST_NODE
|
2671
|
+
*
|
2672
|
+
* @extends pm_node_t
|
2673
|
+
*/
|
2674
|
+
typedef struct pm_implicit_rest_node {
|
2675
|
+
/** The embedded base node. */
|
2676
|
+
pm_node_t base;
|
2677
|
+
} pm_implicit_rest_node_t;
|
2678
|
+
|
2580
2679
|
/**
|
2581
2680
|
* InNode
|
2582
2681
|
*
|
@@ -2608,6 +2707,7 @@ typedef struct pm_in_node {
|
|
2608
2707
|
* Flags:
|
2609
2708
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
2610
2709
|
* PM_CALL_NODE_FLAGS_VARIABLE_CALL
|
2710
|
+
* PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
|
2611
2711
|
*
|
2612
2712
|
* @extends pm_node_t
|
2613
2713
|
*/
|
@@ -2647,6 +2747,7 @@ typedef struct pm_index_and_write_node {
|
|
2647
2747
|
* Flags:
|
2648
2748
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
2649
2749
|
* PM_CALL_NODE_FLAGS_VARIABLE_CALL
|
2750
|
+
* PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
|
2650
2751
|
*
|
2651
2752
|
* @extends pm_node_t
|
2652
2753
|
*/
|
@@ -2689,6 +2790,7 @@ typedef struct pm_index_operator_write_node {
|
|
2689
2790
|
* Flags:
|
2690
2791
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
2691
2792
|
* PM_CALL_NODE_FLAGS_VARIABLE_CALL
|
2793
|
+
* PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
|
2692
2794
|
*
|
2693
2795
|
* @extends pm_node_t
|
2694
2796
|
*/
|
@@ -2721,6 +2823,37 @@ typedef struct pm_index_or_write_node {
|
|
2721
2823
|
struct pm_node *value;
|
2722
2824
|
} pm_index_or_write_node_t;
|
2723
2825
|
|
2826
|
+
/**
|
2827
|
+
* IndexTargetNode
|
2828
|
+
*
|
2829
|
+
* Type: PM_INDEX_TARGET_NODE
|
2830
|
+
* Flags:
|
2831
|
+
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
2832
|
+
* PM_CALL_NODE_FLAGS_VARIABLE_CALL
|
2833
|
+
* PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
|
2834
|
+
*
|
2835
|
+
* @extends pm_node_t
|
2836
|
+
*/
|
2837
|
+
typedef struct pm_index_target_node {
|
2838
|
+
/** The embedded base node. */
|
2839
|
+
pm_node_t base;
|
2840
|
+
|
2841
|
+
/** IndexTargetNode#receiver */
|
2842
|
+
struct pm_node *receiver;
|
2843
|
+
|
2844
|
+
/** IndexTargetNode#opening_loc */
|
2845
|
+
pm_location_t opening_loc;
|
2846
|
+
|
2847
|
+
/** IndexTargetNode#arguments */
|
2848
|
+
struct pm_arguments_node *arguments;
|
2849
|
+
|
2850
|
+
/** IndexTargetNode#closing_loc */
|
2851
|
+
pm_location_t closing_loc;
|
2852
|
+
|
2853
|
+
/** IndexTargetNode#block */
|
2854
|
+
struct pm_node *block;
|
2855
|
+
} pm_index_target_node_t;
|
2856
|
+
|
2724
2857
|
/**
|
2725
2858
|
* InstanceVariableAndWriteNode
|
2726
2859
|
*
|
@@ -2856,8 +2989,8 @@ typedef struct pm_instance_variable_write_node {
|
|
2856
2989
|
* Type: PM_INTEGER_NODE
|
2857
2990
|
* Flags:
|
2858
2991
|
* PM_INTEGER_BASE_FLAGS_BINARY
|
2859
|
-
* PM_INTEGER_BASE_FLAGS_OCTAL
|
2860
2992
|
* PM_INTEGER_BASE_FLAGS_DECIMAL
|
2993
|
+
* PM_INTEGER_BASE_FLAGS_OCTAL
|
2861
2994
|
* PM_INTEGER_BASE_FLAGS_HEXADECIMAL
|
2862
2995
|
*
|
2863
2996
|
* @extends pm_node_t
|
@@ -2880,6 +3013,9 @@ typedef struct pm_integer_node {
|
|
2880
3013
|
* PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
|
2881
3014
|
* PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
|
2882
3015
|
* PM_REGULAR_EXPRESSION_FLAGS_UTF_8
|
3016
|
+
* PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING
|
3017
|
+
* PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING
|
3018
|
+
* PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING
|
2883
3019
|
*
|
2884
3020
|
* @extends pm_node_t
|
2885
3021
|
*/
|
@@ -2910,6 +3046,9 @@ typedef struct pm_interpolated_match_last_line_node {
|
|
2910
3046
|
* PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
|
2911
3047
|
* PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
|
2912
3048
|
* PM_REGULAR_EXPRESSION_FLAGS_UTF_8
|
3049
|
+
* PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING
|
3050
|
+
* PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING
|
3051
|
+
* PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING
|
2913
3052
|
*
|
2914
3053
|
* @extends pm_node_t
|
2915
3054
|
*/
|
@@ -2994,6 +3133,8 @@ typedef struct pm_interpolated_x_string_node {
|
|
2994
3133
|
* KeywordHashNode
|
2995
3134
|
*
|
2996
3135
|
* Type: PM_KEYWORD_HASH_NODE
|
3136
|
+
* Flags:
|
3137
|
+
* PM_KEYWORD_HASH_NODE_FLAGS_STATIC_KEYS
|
2997
3138
|
*
|
2998
3139
|
* @extends pm_node_t
|
2999
3140
|
*/
|
@@ -3040,6 +3181,9 @@ typedef struct pm_lambda_node {
|
|
3040
3181
|
/** LambdaNode#locals */
|
3041
3182
|
pm_constant_id_list_t locals;
|
3042
3183
|
|
3184
|
+
/** LambdaNode#locals_body_index */
|
3185
|
+
uint32_t locals_body_index;
|
3186
|
+
|
3043
3187
|
/** LambdaNode#operator_loc */
|
3044
3188
|
pm_location_t operator_loc;
|
3045
3189
|
|
@@ -3050,7 +3194,7 @@ typedef struct pm_lambda_node {
|
|
3050
3194
|
pm_location_t closing_loc;
|
3051
3195
|
|
3052
3196
|
/** LambdaNode#parameters */
|
3053
|
-
struct
|
3197
|
+
struct pm_node *parameters;
|
3054
3198
|
|
3055
3199
|
/** LambdaNode#body */
|
3056
3200
|
struct pm_node *body;
|
@@ -3216,6 +3360,9 @@ typedef struct pm_local_variable_write_node {
|
|
3216
3360
|
* PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
|
3217
3361
|
* PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
|
3218
3362
|
* PM_REGULAR_EXPRESSION_FLAGS_UTF_8
|
3363
|
+
* PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING
|
3364
|
+
* PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING
|
3365
|
+
* PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING
|
3219
3366
|
*
|
3220
3367
|
* @extends pm_node_t
|
3221
3368
|
*/
|
@@ -3292,8 +3439,8 @@ typedef struct pm_match_write_node {
|
|
3292
3439
|
/** MatchWriteNode#call */
|
3293
3440
|
struct pm_call_node *call;
|
3294
3441
|
|
3295
|
-
/** MatchWriteNode#
|
3296
|
-
|
3442
|
+
/** MatchWriteNode#targets */
|
3443
|
+
struct pm_node_list targets;
|
3297
3444
|
} pm_match_write_node_t;
|
3298
3445
|
|
3299
3446
|
/**
|
@@ -3446,6 +3593,21 @@ typedef struct pm_no_keywords_parameter_node {
|
|
3446
3593
|
pm_location_t keyword_loc;
|
3447
3594
|
} pm_no_keywords_parameter_node_t;
|
3448
3595
|
|
3596
|
+
/**
|
3597
|
+
* NumberedParametersNode
|
3598
|
+
*
|
3599
|
+
* Type: PM_NUMBERED_PARAMETERS_NODE
|
3600
|
+
*
|
3601
|
+
* @extends pm_node_t
|
3602
|
+
*/
|
3603
|
+
typedef struct pm_numbered_parameters_node {
|
3604
|
+
/** The embedded base node. */
|
3605
|
+
pm_node_t base;
|
3606
|
+
|
3607
|
+
/** NumberedParametersNode#maximum */
|
3608
|
+
uint8_t maximum;
|
3609
|
+
} pm_numbered_parameters_node_t;
|
3610
|
+
|
3449
3611
|
/**
|
3450
3612
|
* NumberedReferenceReadNode
|
3451
3613
|
*
|
@@ -3545,7 +3707,7 @@ typedef struct pm_parameters_node {
|
|
3545
3707
|
struct pm_node_list optionals;
|
3546
3708
|
|
3547
3709
|
/** ParametersNode#rest */
|
3548
|
-
struct
|
3710
|
+
struct pm_node *rest;
|
3549
3711
|
|
3550
3712
|
/** ParametersNode#posts */
|
3551
3713
|
struct pm_node_list posts;
|
@@ -3752,6 +3914,9 @@ typedef struct pm_redo_node {
|
|
3752
3914
|
* PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
|
3753
3915
|
* PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
|
3754
3916
|
* PM_REGULAR_EXPRESSION_FLAGS_UTF_8
|
3917
|
+
* PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING
|
3918
|
+
* PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING
|
3919
|
+
* PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING
|
3755
3920
|
*
|
3756
3921
|
* @extends pm_node_t
|
3757
3922
|
*/
|
@@ -4021,29 +4186,13 @@ typedef struct pm_statements_node {
|
|
4021
4186
|
struct pm_node_list body;
|
4022
4187
|
} pm_statements_node_t;
|
4023
4188
|
|
4024
|
-
/**
|
4025
|
-
* StringConcatNode
|
4026
|
-
*
|
4027
|
-
* Type: PM_STRING_CONCAT_NODE
|
4028
|
-
*
|
4029
|
-
* @extends pm_node_t
|
4030
|
-
*/
|
4031
|
-
typedef struct pm_string_concat_node {
|
4032
|
-
/** The embedded base node. */
|
4033
|
-
pm_node_t base;
|
4034
|
-
|
4035
|
-
/** StringConcatNode#left */
|
4036
|
-
struct pm_node *left;
|
4037
|
-
|
4038
|
-
/** StringConcatNode#right */
|
4039
|
-
struct pm_node *right;
|
4040
|
-
} pm_string_concat_node_t;
|
4041
|
-
|
4042
4189
|
/**
|
4043
4190
|
* StringNode
|
4044
4191
|
*
|
4045
4192
|
* Type: PM_STRING_NODE
|
4046
4193
|
* Flags:
|
4194
|
+
* PM_STRING_FLAGS_FORCED_UTF8_ENCODING
|
4195
|
+
* PM_STRING_FLAGS_FORCED_BINARY_ENCODING
|
4047
4196
|
* PM_STRING_FLAGS_FROZEN
|
4048
4197
|
*
|
4049
4198
|
* @extends pm_node_t
|
@@ -4096,6 +4245,10 @@ typedef struct pm_super_node {
|
|
4096
4245
|
* SymbolNode
|
4097
4246
|
*
|
4098
4247
|
* Type: PM_SYMBOL_NODE
|
4248
|
+
* Flags:
|
4249
|
+
* PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING
|
4250
|
+
* PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING
|
4251
|
+
* PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING
|
4099
4252
|
*
|
4100
4253
|
* @extends pm_node_t
|
4101
4254
|
*/
|
@@ -4163,6 +4316,9 @@ typedef struct pm_unless_node {
|
|
4163
4316
|
/** UnlessNode#predicate */
|
4164
4317
|
struct pm_node *predicate;
|
4165
4318
|
|
4319
|
+
/** UnlessNode#then_keyword_loc */
|
4320
|
+
pm_location_t then_keyword_loc;
|
4321
|
+
|
4166
4322
|
/** UnlessNode#statements */
|
4167
4323
|
struct pm_statements_node *statements;
|
4168
4324
|
|
@@ -4250,6 +4406,9 @@ typedef struct pm_while_node {
|
|
4250
4406
|
* XStringNode
|
4251
4407
|
*
|
4252
4408
|
* Type: PM_X_STRING_NODE
|
4409
|
+
* Flags:
|
4410
|
+
* PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING
|
4411
|
+
* PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING
|
4253
4412
|
*
|
4254
4413
|
* @extends pm_node_t
|
4255
4414
|
*/
|
@@ -4299,9 +4458,17 @@ typedef struct pm_yield_node {
|
|
4299
4458
|
*/
|
4300
4459
|
typedef enum pm_arguments_node_flags {
|
4301
4460
|
/** if arguments contain keyword splat */
|
4302
|
-
|
4461
|
+
PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT = 1,
|
4303
4462
|
} pm_arguments_node_flags_t;
|
4304
4463
|
|
4464
|
+
/**
|
4465
|
+
* Flags for array nodes.
|
4466
|
+
*/
|
4467
|
+
typedef enum pm_array_node_flags {
|
4468
|
+
/** if array contains splat nodes */
|
4469
|
+
PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT = 1,
|
4470
|
+
} pm_array_node_flags_t;
|
4471
|
+
|
4305
4472
|
/**
|
4306
4473
|
* Flags for call nodes.
|
4307
4474
|
*/
|
@@ -4311,8 +4478,22 @@ typedef enum pm_call_node_flags {
|
|
4311
4478
|
|
4312
4479
|
/** a call that could have been a local variable */
|
4313
4480
|
PM_CALL_NODE_FLAGS_VARIABLE_CALL = 2,
|
4481
|
+
|
4482
|
+
/** a call that is an attribute write, so the value being written should be returned */
|
4483
|
+
PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE = 4,
|
4314
4484
|
} pm_call_node_flags_t;
|
4315
4485
|
|
4486
|
+
/**
|
4487
|
+
* Flags for nodes that have unescaped content.
|
4488
|
+
*/
|
4489
|
+
typedef enum pm_encoding_flags {
|
4490
|
+
/** internal bytes forced the encoding to UTF-8 */
|
4491
|
+
PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING = 1,
|
4492
|
+
|
4493
|
+
/** internal bytes forced the encoding to binary */
|
4494
|
+
PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING = 2,
|
4495
|
+
} pm_encoding_flags_t;
|
4496
|
+
|
4316
4497
|
/**
|
4317
4498
|
* Flags for integer nodes that correspond to the base of the integer.
|
4318
4499
|
*/
|
@@ -4320,16 +4501,24 @@ typedef enum pm_integer_base_flags {
|
|
4320
4501
|
/** 0b prefix */
|
4321
4502
|
PM_INTEGER_BASE_FLAGS_BINARY = 1,
|
4322
4503
|
|
4323
|
-
/** 0o or 0 prefix */
|
4324
|
-
PM_INTEGER_BASE_FLAGS_OCTAL = 2,
|
4325
|
-
|
4326
4504
|
/** 0d or no prefix */
|
4327
|
-
PM_INTEGER_BASE_FLAGS_DECIMAL =
|
4505
|
+
PM_INTEGER_BASE_FLAGS_DECIMAL = 2,
|
4506
|
+
|
4507
|
+
/** 0o or 0 prefix */
|
4508
|
+
PM_INTEGER_BASE_FLAGS_OCTAL = 4,
|
4328
4509
|
|
4329
4510
|
/** 0x prefix */
|
4330
4511
|
PM_INTEGER_BASE_FLAGS_HEXADECIMAL = 8,
|
4331
4512
|
} pm_integer_base_flags_t;
|
4332
4513
|
|
4514
|
+
/**
|
4515
|
+
* Flags for keyword hash nodes.
|
4516
|
+
*/
|
4517
|
+
typedef enum pm_keyword_hash_node_flags {
|
4518
|
+
/** a keyword hash which only has `AssocNode` elements all with static literal keys, which means the elements can be treated as keyword arguments */
|
4519
|
+
PM_KEYWORD_HASH_NODE_FLAGS_STATIC_KEYS = 1,
|
4520
|
+
} pm_keyword_hash_node_flags_t;
|
4521
|
+
|
4333
4522
|
/**
|
4334
4523
|
* Flags for while and until loop nodes.
|
4335
4524
|
*/
|
@@ -4373,16 +4562,45 @@ typedef enum pm_regular_expression_flags {
|
|
4373
4562
|
|
4374
4563
|
/** u - forces the UTF-8 encoding */
|
4375
4564
|
PM_REGULAR_EXPRESSION_FLAGS_UTF_8 = 128,
|
4565
|
+
|
4566
|
+
/** internal bytes forced the encoding to UTF-8 */
|
4567
|
+
PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING = 256,
|
4568
|
+
|
4569
|
+
/** internal bytes forced the encoding to binary */
|
4570
|
+
PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING = 512,
|
4571
|
+
|
4572
|
+
/** internal bytes forced the encoding to US-ASCII */
|
4573
|
+
PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING = 1024,
|
4376
4574
|
} pm_regular_expression_flags_t;
|
4377
4575
|
|
4378
4576
|
/**
|
4379
4577
|
* Flags for string nodes.
|
4380
4578
|
*/
|
4381
4579
|
typedef enum pm_string_flags {
|
4580
|
+
/** internal bytes forced the encoding to UTF-8 */
|
4581
|
+
PM_STRING_FLAGS_FORCED_UTF8_ENCODING = 1,
|
4582
|
+
|
4583
|
+
/** internal bytes forced the encoding to binary */
|
4584
|
+
PM_STRING_FLAGS_FORCED_BINARY_ENCODING = 2,
|
4585
|
+
|
4382
4586
|
/** frozen by virtue of a `frozen_string_literal` comment */
|
4383
|
-
PM_STRING_FLAGS_FROZEN =
|
4587
|
+
PM_STRING_FLAGS_FROZEN = 4,
|
4384
4588
|
} pm_string_flags_t;
|
4385
4589
|
|
4590
|
+
/**
|
4591
|
+
* Flags for symbol nodes.
|
4592
|
+
*/
|
4593
|
+
typedef enum pm_symbol_flags {
|
4594
|
+
/** internal bytes forced the encoding to UTF-8 */
|
4595
|
+
PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING = 1,
|
4596
|
+
|
4597
|
+
/** internal bytes forced the encoding to binary */
|
4598
|
+
PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING = 2,
|
4599
|
+
|
4600
|
+
/** internal bytes forced the encoding to US-ASCII */
|
4601
|
+
PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING = 4,
|
4602
|
+
} pm_symbol_flags_t;
|
4603
|
+
|
4386
4604
|
/**
|
4387
4605
|
* When we're serializing to Java, we want to skip serializing the location
|
4388
4606
|
* fields as they won't be used by JRuby or TruffleRuby. This boolean allows us
|