prism 0.18.0 → 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 +31 -1
- data/README.md +2 -1
- data/config.yml +188 -55
- data/docs/building.md +9 -2
- data/docs/configuration.md +10 -9
- data/docs/encoding.md +24 -56
- data/docs/local_variable_depth.md +229 -0
- data/docs/ruby_api.md +2 -0
- data/docs/serialization.md +18 -13
- data/ext/prism/api_node.c +337 -195
- data/ext/prism/extconf.rb +13 -7
- data/ext/prism/extension.c +96 -32
- data/ext/prism/extension.h +1 -1
- data/include/prism/ast.h +340 -137
- data/include/prism/defines.h +17 -0
- data/include/prism/diagnostic.h +11 -5
- data/include/prism/encoding.h +248 -0
- data/include/prism/options.h +2 -2
- data/include/prism/parser.h +62 -42
- 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 +2 -2
- data/include/prism.h +13 -15
- data/lib/prism/compiler.rb +12 -0
- data/lib/prism/debug.rb +9 -4
- data/lib/prism/desugar_compiler.rb +3 -3
- data/lib/prism/dispatcher.rb +56 -0
- data/lib/prism/dot_visitor.rb +476 -198
- data/lib/prism/dsl.rb +66 -46
- data/lib/prism/ffi.rb +16 -3
- data/lib/prism/lex_compat.rb +19 -9
- data/lib/prism/mutation_compiler.rb +20 -0
- data/lib/prism/node.rb +1173 -450
- data/lib/prism/node_ext.rb +41 -16
- data/lib/prism/parse_result.rb +12 -15
- data/lib/prism/ripper_compat.rb +49 -34
- data/lib/prism/serialize.rb +242 -212
- data/lib/prism/visitor.rb +12 -0
- data/lib/prism.rb +20 -4
- data/prism.gemspec +4 -10
- data/rbi/prism.rbi +605 -230
- data/rbi/prism_static.rbi +3 -0
- data/sig/prism.rbs +379 -124
- data/sig/prism_static.rbs +1 -0
- data/src/diagnostic.c +228 -222
- data/src/encoding.c +5137 -0
- data/src/node.c +66 -0
- data/src/options.c +21 -2
- data/src/prettyprint.c +806 -406
- data/src/prism.c +1092 -700
- data/src/regexp.c +3 -3
- data/src/serialize.c +227 -157
- 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 +5 -11
- data/include/prism/enc/pm_encoding.h +0 -227
- data/src/enc/pm_big5.c +0 -116
- data/src/enc/pm_cp51932.c +0 -57
- data/src/enc/pm_euc_jp.c +0 -69
- data/src/enc/pm_gbk.c +0 -65
- data/src/enc/pm_shift_jis.c +0 -57
- data/src/enc/pm_tables.c +0 -2073
- 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,
|
636
639
|
|
637
640
|
/** CaseMatchNode */
|
638
|
-
PM_CASE_MATCH_NODE =
|
641
|
+
PM_CASE_MATCH_NODE = 24,
|
639
642
|
|
640
643
|
/** CaseNode */
|
641
|
-
PM_CASE_NODE =
|
644
|
+
PM_CASE_NODE = 25,
|
642
645
|
|
643
646
|
/** ClassNode */
|
644
|
-
PM_CLASS_NODE =
|
647
|
+
PM_CLASS_NODE = 26,
|
645
648
|
|
646
649
|
/** ClassVariableAndWriteNode */
|
647
|
-
PM_CLASS_VARIABLE_AND_WRITE_NODE =
|
650
|
+
PM_CLASS_VARIABLE_AND_WRITE_NODE = 27,
|
648
651
|
|
649
652
|
/** ClassVariableOperatorWriteNode */
|
650
|
-
PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE =
|
653
|
+
PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 28,
|
651
654
|
|
652
655
|
/** ClassVariableOrWriteNode */
|
653
|
-
PM_CLASS_VARIABLE_OR_WRITE_NODE =
|
656
|
+
PM_CLASS_VARIABLE_OR_WRITE_NODE = 29,
|
654
657
|
|
655
658
|
/** ClassVariableReadNode */
|
656
|
-
PM_CLASS_VARIABLE_READ_NODE =
|
659
|
+
PM_CLASS_VARIABLE_READ_NODE = 30,
|
657
660
|
|
658
661
|
/** ClassVariableTargetNode */
|
659
|
-
PM_CLASS_VARIABLE_TARGET_NODE =
|
662
|
+
PM_CLASS_VARIABLE_TARGET_NODE = 31,
|
660
663
|
|
661
664
|
/** ClassVariableWriteNode */
|
662
|
-
PM_CLASS_VARIABLE_WRITE_NODE =
|
665
|
+
PM_CLASS_VARIABLE_WRITE_NODE = 32,
|
663
666
|
|
664
667
|
/** ConstantAndWriteNode */
|
665
|
-
PM_CONSTANT_AND_WRITE_NODE =
|
668
|
+
PM_CONSTANT_AND_WRITE_NODE = 33,
|
666
669
|
|
667
670
|
/** ConstantOperatorWriteNode */
|
668
|
-
PM_CONSTANT_OPERATOR_WRITE_NODE =
|
671
|
+
PM_CONSTANT_OPERATOR_WRITE_NODE = 34,
|
669
672
|
|
670
673
|
/** ConstantOrWriteNode */
|
671
|
-
PM_CONSTANT_OR_WRITE_NODE =
|
674
|
+
PM_CONSTANT_OR_WRITE_NODE = 35,
|
672
675
|
|
673
676
|
/** ConstantPathAndWriteNode */
|
674
|
-
PM_CONSTANT_PATH_AND_WRITE_NODE =
|
677
|
+
PM_CONSTANT_PATH_AND_WRITE_NODE = 36,
|
675
678
|
|
676
679
|
/** ConstantPathNode */
|
677
|
-
PM_CONSTANT_PATH_NODE =
|
680
|
+
PM_CONSTANT_PATH_NODE = 37,
|
678
681
|
|
679
682
|
/** ConstantPathOperatorWriteNode */
|
680
|
-
PM_CONSTANT_PATH_OPERATOR_WRITE_NODE =
|
683
|
+
PM_CONSTANT_PATH_OPERATOR_WRITE_NODE = 38,
|
681
684
|
|
682
685
|
/** ConstantPathOrWriteNode */
|
683
|
-
PM_CONSTANT_PATH_OR_WRITE_NODE =
|
686
|
+
PM_CONSTANT_PATH_OR_WRITE_NODE = 39,
|
684
687
|
|
685
688
|
/** ConstantPathTargetNode */
|
686
|
-
PM_CONSTANT_PATH_TARGET_NODE =
|
689
|
+
PM_CONSTANT_PATH_TARGET_NODE = 40,
|
687
690
|
|
688
691
|
/** ConstantPathWriteNode */
|
689
|
-
PM_CONSTANT_PATH_WRITE_NODE =
|
692
|
+
PM_CONSTANT_PATH_WRITE_NODE = 41,
|
690
693
|
|
691
694
|
/** ConstantReadNode */
|
692
|
-
PM_CONSTANT_READ_NODE =
|
695
|
+
PM_CONSTANT_READ_NODE = 42,
|
693
696
|
|
694
697
|
/** ConstantTargetNode */
|
695
|
-
PM_CONSTANT_TARGET_NODE =
|
698
|
+
PM_CONSTANT_TARGET_NODE = 43,
|
696
699
|
|
697
700
|
/** ConstantWriteNode */
|
698
|
-
PM_CONSTANT_WRITE_NODE =
|
701
|
+
PM_CONSTANT_WRITE_NODE = 44,
|
699
702
|
|
700
703
|
/** DefNode */
|
701
|
-
PM_DEF_NODE =
|
704
|
+
PM_DEF_NODE = 45,
|
702
705
|
|
703
706
|
/** DefinedNode */
|
704
|
-
PM_DEFINED_NODE =
|
707
|
+
PM_DEFINED_NODE = 46,
|
705
708
|
|
706
709
|
/** ElseNode */
|
707
|
-
PM_ELSE_NODE =
|
710
|
+
PM_ELSE_NODE = 47,
|
708
711
|
|
709
712
|
/** EmbeddedStatementsNode */
|
710
|
-
PM_EMBEDDED_STATEMENTS_NODE =
|
713
|
+
PM_EMBEDDED_STATEMENTS_NODE = 48,
|
711
714
|
|
712
715
|
/** EmbeddedVariableNode */
|
713
|
-
PM_EMBEDDED_VARIABLE_NODE =
|
716
|
+
PM_EMBEDDED_VARIABLE_NODE = 49,
|
714
717
|
|
715
718
|
/** EnsureNode */
|
716
|
-
PM_ENSURE_NODE =
|
719
|
+
PM_ENSURE_NODE = 50,
|
717
720
|
|
718
721
|
/** FalseNode */
|
719
|
-
PM_FALSE_NODE =
|
722
|
+
PM_FALSE_NODE = 51,
|
720
723
|
|
721
724
|
/** FindPatternNode */
|
722
|
-
PM_FIND_PATTERN_NODE =
|
725
|
+
PM_FIND_PATTERN_NODE = 52,
|
723
726
|
|
724
727
|
/** FlipFlopNode */
|
725
|
-
PM_FLIP_FLOP_NODE =
|
728
|
+
PM_FLIP_FLOP_NODE = 53,
|
726
729
|
|
727
730
|
/** FloatNode */
|
728
|
-
PM_FLOAT_NODE =
|
731
|
+
PM_FLOAT_NODE = 54,
|
729
732
|
|
730
733
|
/** ForNode */
|
731
|
-
PM_FOR_NODE =
|
734
|
+
PM_FOR_NODE = 55,
|
732
735
|
|
733
736
|
/** ForwardingArgumentsNode */
|
734
|
-
PM_FORWARDING_ARGUMENTS_NODE =
|
737
|
+
PM_FORWARDING_ARGUMENTS_NODE = 56,
|
735
738
|
|
736
739
|
/** ForwardingParameterNode */
|
737
|
-
PM_FORWARDING_PARAMETER_NODE =
|
740
|
+
PM_FORWARDING_PARAMETER_NODE = 57,
|
738
741
|
|
739
742
|
/** ForwardingSuperNode */
|
740
|
-
PM_FORWARDING_SUPER_NODE =
|
743
|
+
PM_FORWARDING_SUPER_NODE = 58,
|
741
744
|
|
742
745
|
/** GlobalVariableAndWriteNode */
|
743
|
-
PM_GLOBAL_VARIABLE_AND_WRITE_NODE =
|
746
|
+
PM_GLOBAL_VARIABLE_AND_WRITE_NODE = 59,
|
744
747
|
|
745
748
|
/** GlobalVariableOperatorWriteNode */
|
746
|
-
PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE =
|
749
|
+
PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 60,
|
747
750
|
|
748
751
|
/** GlobalVariableOrWriteNode */
|
749
|
-
PM_GLOBAL_VARIABLE_OR_WRITE_NODE =
|
752
|
+
PM_GLOBAL_VARIABLE_OR_WRITE_NODE = 61,
|
750
753
|
|
751
754
|
/** GlobalVariableReadNode */
|
752
|
-
PM_GLOBAL_VARIABLE_READ_NODE =
|
755
|
+
PM_GLOBAL_VARIABLE_READ_NODE = 62,
|
753
756
|
|
754
757
|
/** GlobalVariableTargetNode */
|
755
|
-
PM_GLOBAL_VARIABLE_TARGET_NODE =
|
758
|
+
PM_GLOBAL_VARIABLE_TARGET_NODE = 63,
|
756
759
|
|
757
760
|
/** GlobalVariableWriteNode */
|
758
|
-
PM_GLOBAL_VARIABLE_WRITE_NODE =
|
761
|
+
PM_GLOBAL_VARIABLE_WRITE_NODE = 64,
|
759
762
|
|
760
763
|
/** HashNode */
|
761
|
-
PM_HASH_NODE =
|
764
|
+
PM_HASH_NODE = 65,
|
762
765
|
|
763
766
|
/** HashPatternNode */
|
764
|
-
PM_HASH_PATTERN_NODE =
|
767
|
+
PM_HASH_PATTERN_NODE = 66,
|
765
768
|
|
766
769
|
/** IfNode */
|
767
|
-
PM_IF_NODE =
|
770
|
+
PM_IF_NODE = 67,
|
768
771
|
|
769
772
|
/** ImaginaryNode */
|
770
|
-
PM_IMAGINARY_NODE =
|
773
|
+
PM_IMAGINARY_NODE = 68,
|
771
774
|
|
772
775
|
/** ImplicitNode */
|
773
|
-
PM_IMPLICIT_NODE =
|
776
|
+
PM_IMPLICIT_NODE = 69,
|
777
|
+
|
778
|
+
/** ImplicitRestNode */
|
779
|
+
PM_IMPLICIT_REST_NODE = 70,
|
774
780
|
|
775
781
|
/** InNode */
|
776
|
-
PM_IN_NODE =
|
782
|
+
PM_IN_NODE = 71,
|
777
783
|
|
778
784
|
/** IndexAndWriteNode */
|
779
|
-
PM_INDEX_AND_WRITE_NODE =
|
785
|
+
PM_INDEX_AND_WRITE_NODE = 72,
|
780
786
|
|
781
787
|
/** IndexOperatorWriteNode */
|
782
|
-
PM_INDEX_OPERATOR_WRITE_NODE =
|
788
|
+
PM_INDEX_OPERATOR_WRITE_NODE = 73,
|
783
789
|
|
784
790
|
/** IndexOrWriteNode */
|
785
|
-
PM_INDEX_OR_WRITE_NODE =
|
791
|
+
PM_INDEX_OR_WRITE_NODE = 74,
|
792
|
+
|
793
|
+
/** IndexTargetNode */
|
794
|
+
PM_INDEX_TARGET_NODE = 75,
|
786
795
|
|
787
796
|
/** InstanceVariableAndWriteNode */
|
788
|
-
PM_INSTANCE_VARIABLE_AND_WRITE_NODE =
|
797
|
+
PM_INSTANCE_VARIABLE_AND_WRITE_NODE = 76,
|
789
798
|
|
790
799
|
/** InstanceVariableOperatorWriteNode */
|
791
|
-
PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE =
|
800
|
+
PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 77,
|
792
801
|
|
793
802
|
/** InstanceVariableOrWriteNode */
|
794
|
-
PM_INSTANCE_VARIABLE_OR_WRITE_NODE =
|
803
|
+
PM_INSTANCE_VARIABLE_OR_WRITE_NODE = 78,
|
795
804
|
|
796
805
|
/** InstanceVariableReadNode */
|
797
|
-
PM_INSTANCE_VARIABLE_READ_NODE =
|
806
|
+
PM_INSTANCE_VARIABLE_READ_NODE = 79,
|
798
807
|
|
799
808
|
/** InstanceVariableTargetNode */
|
800
|
-
PM_INSTANCE_VARIABLE_TARGET_NODE =
|
809
|
+
PM_INSTANCE_VARIABLE_TARGET_NODE = 80,
|
801
810
|
|
802
811
|
/** InstanceVariableWriteNode */
|
803
|
-
PM_INSTANCE_VARIABLE_WRITE_NODE =
|
812
|
+
PM_INSTANCE_VARIABLE_WRITE_NODE = 81,
|
804
813
|
|
805
814
|
/** IntegerNode */
|
806
|
-
PM_INTEGER_NODE =
|
815
|
+
PM_INTEGER_NODE = 82,
|
807
816
|
|
808
817
|
/** InterpolatedMatchLastLineNode */
|
809
|
-
PM_INTERPOLATED_MATCH_LAST_LINE_NODE =
|
818
|
+
PM_INTERPOLATED_MATCH_LAST_LINE_NODE = 83,
|
810
819
|
|
811
820
|
/** InterpolatedRegularExpressionNode */
|
812
|
-
PM_INTERPOLATED_REGULAR_EXPRESSION_NODE =
|
821
|
+
PM_INTERPOLATED_REGULAR_EXPRESSION_NODE = 84,
|
813
822
|
|
814
823
|
/** InterpolatedStringNode */
|
815
|
-
PM_INTERPOLATED_STRING_NODE =
|
824
|
+
PM_INTERPOLATED_STRING_NODE = 85,
|
816
825
|
|
817
826
|
/** InterpolatedSymbolNode */
|
818
|
-
PM_INTERPOLATED_SYMBOL_NODE =
|
827
|
+
PM_INTERPOLATED_SYMBOL_NODE = 86,
|
819
828
|
|
820
829
|
/** InterpolatedXStringNode */
|
821
|
-
PM_INTERPOLATED_X_STRING_NODE =
|
830
|
+
PM_INTERPOLATED_X_STRING_NODE = 87,
|
822
831
|
|
823
832
|
/** KeywordHashNode */
|
824
|
-
PM_KEYWORD_HASH_NODE =
|
833
|
+
PM_KEYWORD_HASH_NODE = 88,
|
825
834
|
|
826
835
|
/** KeywordRestParameterNode */
|
827
|
-
PM_KEYWORD_REST_PARAMETER_NODE =
|
836
|
+
PM_KEYWORD_REST_PARAMETER_NODE = 89,
|
828
837
|
|
829
838
|
/** LambdaNode */
|
830
|
-
PM_LAMBDA_NODE =
|
839
|
+
PM_LAMBDA_NODE = 90,
|
831
840
|
|
832
841
|
/** LocalVariableAndWriteNode */
|
833
|
-
PM_LOCAL_VARIABLE_AND_WRITE_NODE =
|
842
|
+
PM_LOCAL_VARIABLE_AND_WRITE_NODE = 91,
|
834
843
|
|
835
844
|
/** LocalVariableOperatorWriteNode */
|
836
|
-
PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE =
|
845
|
+
PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 92,
|
837
846
|
|
838
847
|
/** LocalVariableOrWriteNode */
|
839
|
-
PM_LOCAL_VARIABLE_OR_WRITE_NODE =
|
848
|
+
PM_LOCAL_VARIABLE_OR_WRITE_NODE = 93,
|
840
849
|
|
841
850
|
/** LocalVariableReadNode */
|
842
|
-
PM_LOCAL_VARIABLE_READ_NODE =
|
851
|
+
PM_LOCAL_VARIABLE_READ_NODE = 94,
|
843
852
|
|
844
853
|
/** LocalVariableTargetNode */
|
845
|
-
PM_LOCAL_VARIABLE_TARGET_NODE =
|
854
|
+
PM_LOCAL_VARIABLE_TARGET_NODE = 95,
|
846
855
|
|
847
856
|
/** LocalVariableWriteNode */
|
848
|
-
PM_LOCAL_VARIABLE_WRITE_NODE =
|
857
|
+
PM_LOCAL_VARIABLE_WRITE_NODE = 96,
|
849
858
|
|
850
859
|
/** MatchLastLineNode */
|
851
|
-
PM_MATCH_LAST_LINE_NODE =
|
860
|
+
PM_MATCH_LAST_LINE_NODE = 97,
|
852
861
|
|
853
862
|
/** MatchPredicateNode */
|
854
|
-
PM_MATCH_PREDICATE_NODE =
|
863
|
+
PM_MATCH_PREDICATE_NODE = 98,
|
855
864
|
|
856
865
|
/** MatchRequiredNode */
|
857
|
-
PM_MATCH_REQUIRED_NODE =
|
866
|
+
PM_MATCH_REQUIRED_NODE = 99,
|
858
867
|
|
859
868
|
/** MatchWriteNode */
|
860
|
-
PM_MATCH_WRITE_NODE =
|
869
|
+
PM_MATCH_WRITE_NODE = 100,
|
861
870
|
|
862
871
|
/** MissingNode */
|
863
|
-
PM_MISSING_NODE =
|
872
|
+
PM_MISSING_NODE = 101,
|
864
873
|
|
865
874
|
/** ModuleNode */
|
866
|
-
PM_MODULE_NODE =
|
875
|
+
PM_MODULE_NODE = 102,
|
867
876
|
|
868
877
|
/** MultiTargetNode */
|
869
|
-
PM_MULTI_TARGET_NODE =
|
878
|
+
PM_MULTI_TARGET_NODE = 103,
|
870
879
|
|
871
880
|
/** MultiWriteNode */
|
872
|
-
PM_MULTI_WRITE_NODE =
|
881
|
+
PM_MULTI_WRITE_NODE = 104,
|
873
882
|
|
874
883
|
/** NextNode */
|
875
|
-
PM_NEXT_NODE =
|
884
|
+
PM_NEXT_NODE = 105,
|
876
885
|
|
877
886
|
/** NilNode */
|
878
|
-
PM_NIL_NODE =
|
887
|
+
PM_NIL_NODE = 106,
|
879
888
|
|
880
889
|
/** NoKeywordsParameterNode */
|
881
|
-
PM_NO_KEYWORDS_PARAMETER_NODE =
|
890
|
+
PM_NO_KEYWORDS_PARAMETER_NODE = 107,
|
891
|
+
|
892
|
+
/** NumberedParametersNode */
|
893
|
+
PM_NUMBERED_PARAMETERS_NODE = 108,
|
882
894
|
|
883
895
|
/** NumberedReferenceReadNode */
|
884
|
-
PM_NUMBERED_REFERENCE_READ_NODE =
|
896
|
+
PM_NUMBERED_REFERENCE_READ_NODE = 109,
|
885
897
|
|
886
898
|
/** OptionalKeywordParameterNode */
|
887
|
-
PM_OPTIONAL_KEYWORD_PARAMETER_NODE =
|
899
|
+
PM_OPTIONAL_KEYWORD_PARAMETER_NODE = 110,
|
888
900
|
|
889
901
|
/** OptionalParameterNode */
|
890
|
-
PM_OPTIONAL_PARAMETER_NODE =
|
902
|
+
PM_OPTIONAL_PARAMETER_NODE = 111,
|
891
903
|
|
892
904
|
/** OrNode */
|
893
|
-
PM_OR_NODE =
|
905
|
+
PM_OR_NODE = 112,
|
894
906
|
|
895
907
|
/** ParametersNode */
|
896
|
-
PM_PARAMETERS_NODE =
|
908
|
+
PM_PARAMETERS_NODE = 113,
|
897
909
|
|
898
910
|
/** ParenthesesNode */
|
899
|
-
PM_PARENTHESES_NODE =
|
911
|
+
PM_PARENTHESES_NODE = 114,
|
900
912
|
|
901
913
|
/** PinnedExpressionNode */
|
902
|
-
PM_PINNED_EXPRESSION_NODE =
|
914
|
+
PM_PINNED_EXPRESSION_NODE = 115,
|
903
915
|
|
904
916
|
/** PinnedVariableNode */
|
905
|
-
PM_PINNED_VARIABLE_NODE =
|
917
|
+
PM_PINNED_VARIABLE_NODE = 116,
|
906
918
|
|
907
919
|
/** PostExecutionNode */
|
908
|
-
PM_POST_EXECUTION_NODE =
|
920
|
+
PM_POST_EXECUTION_NODE = 117,
|
909
921
|
|
910
922
|
/** PreExecutionNode */
|
911
|
-
PM_PRE_EXECUTION_NODE =
|
923
|
+
PM_PRE_EXECUTION_NODE = 118,
|
912
924
|
|
913
925
|
/** ProgramNode */
|
914
|
-
PM_PROGRAM_NODE =
|
926
|
+
PM_PROGRAM_NODE = 119,
|
915
927
|
|
916
928
|
/** RangeNode */
|
917
|
-
PM_RANGE_NODE =
|
929
|
+
PM_RANGE_NODE = 120,
|
918
930
|
|
919
931
|
/** RationalNode */
|
920
|
-
PM_RATIONAL_NODE =
|
932
|
+
PM_RATIONAL_NODE = 121,
|
921
933
|
|
922
934
|
/** RedoNode */
|
923
|
-
PM_REDO_NODE =
|
935
|
+
PM_REDO_NODE = 122,
|
924
936
|
|
925
937
|
/** RegularExpressionNode */
|
926
|
-
PM_REGULAR_EXPRESSION_NODE =
|
938
|
+
PM_REGULAR_EXPRESSION_NODE = 123,
|
927
939
|
|
928
940
|
/** RequiredKeywordParameterNode */
|
929
|
-
PM_REQUIRED_KEYWORD_PARAMETER_NODE =
|
941
|
+
PM_REQUIRED_KEYWORD_PARAMETER_NODE = 124,
|
930
942
|
|
931
943
|
/** RequiredParameterNode */
|
932
|
-
PM_REQUIRED_PARAMETER_NODE =
|
944
|
+
PM_REQUIRED_PARAMETER_NODE = 125,
|
933
945
|
|
934
946
|
/** RescueModifierNode */
|
935
|
-
PM_RESCUE_MODIFIER_NODE =
|
947
|
+
PM_RESCUE_MODIFIER_NODE = 126,
|
936
948
|
|
937
949
|
/** RescueNode */
|
938
|
-
PM_RESCUE_NODE =
|
950
|
+
PM_RESCUE_NODE = 127,
|
939
951
|
|
940
952
|
/** RestParameterNode */
|
941
|
-
PM_REST_PARAMETER_NODE =
|
953
|
+
PM_REST_PARAMETER_NODE = 128,
|
942
954
|
|
943
955
|
/** RetryNode */
|
944
|
-
PM_RETRY_NODE =
|
956
|
+
PM_RETRY_NODE = 129,
|
945
957
|
|
946
958
|
/** ReturnNode */
|
947
|
-
PM_RETURN_NODE =
|
959
|
+
PM_RETURN_NODE = 130,
|
948
960
|
|
949
961
|
/** SelfNode */
|
950
|
-
PM_SELF_NODE =
|
962
|
+
PM_SELF_NODE = 131,
|
951
963
|
|
952
964
|
/** SingletonClassNode */
|
953
|
-
PM_SINGLETON_CLASS_NODE =
|
965
|
+
PM_SINGLETON_CLASS_NODE = 132,
|
954
966
|
|
955
967
|
/** SourceEncodingNode */
|
956
|
-
PM_SOURCE_ENCODING_NODE =
|
968
|
+
PM_SOURCE_ENCODING_NODE = 133,
|
957
969
|
|
958
970
|
/** SourceFileNode */
|
959
|
-
PM_SOURCE_FILE_NODE =
|
971
|
+
PM_SOURCE_FILE_NODE = 134,
|
960
972
|
|
961
973
|
/** SourceLineNode */
|
962
|
-
PM_SOURCE_LINE_NODE =
|
974
|
+
PM_SOURCE_LINE_NODE = 135,
|
963
975
|
|
964
976
|
/** SplatNode */
|
965
|
-
PM_SPLAT_NODE =
|
977
|
+
PM_SPLAT_NODE = 136,
|
966
978
|
|
967
979
|
/** StatementsNode */
|
968
|
-
PM_STATEMENTS_NODE =
|
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
|
*
|
@@ -2097,6 +2151,9 @@ typedef struct pm_def_node {
|
|
2097
2151
|
/** DefNode#locals */
|
2098
2152
|
pm_constant_id_list_t locals;
|
2099
2153
|
|
2154
|
+
/** DefNode#locals_body_index */
|
2155
|
+
uint32_t locals_body_index;
|
2156
|
+
|
2100
2157
|
/** DefNode#def_keyword_loc */
|
2101
2158
|
pm_location_t def_keyword_loc;
|
2102
2159
|
|
@@ -2607,6 +2664,18 @@ typedef struct pm_implicit_node {
|
|
2607
2664
|
struct pm_node *value;
|
2608
2665
|
} pm_implicit_node_t;
|
2609
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
|
+
|
2610
2679
|
/**
|
2611
2680
|
* InNode
|
2612
2681
|
*
|
@@ -2638,6 +2707,7 @@ typedef struct pm_in_node {
|
|
2638
2707
|
* Flags:
|
2639
2708
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
2640
2709
|
* PM_CALL_NODE_FLAGS_VARIABLE_CALL
|
2710
|
+
* PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
|
2641
2711
|
*
|
2642
2712
|
* @extends pm_node_t
|
2643
2713
|
*/
|
@@ -2677,6 +2747,7 @@ typedef struct pm_index_and_write_node {
|
|
2677
2747
|
* Flags:
|
2678
2748
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
2679
2749
|
* PM_CALL_NODE_FLAGS_VARIABLE_CALL
|
2750
|
+
* PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
|
2680
2751
|
*
|
2681
2752
|
* @extends pm_node_t
|
2682
2753
|
*/
|
@@ -2719,6 +2790,7 @@ typedef struct pm_index_operator_write_node {
|
|
2719
2790
|
* Flags:
|
2720
2791
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
2721
2792
|
* PM_CALL_NODE_FLAGS_VARIABLE_CALL
|
2793
|
+
* PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
|
2722
2794
|
*
|
2723
2795
|
* @extends pm_node_t
|
2724
2796
|
*/
|
@@ -2751,6 +2823,37 @@ typedef struct pm_index_or_write_node {
|
|
2751
2823
|
struct pm_node *value;
|
2752
2824
|
} pm_index_or_write_node_t;
|
2753
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
|
+
|
2754
2857
|
/**
|
2755
2858
|
* InstanceVariableAndWriteNode
|
2756
2859
|
*
|
@@ -2886,8 +2989,8 @@ typedef struct pm_instance_variable_write_node {
|
|
2886
2989
|
* Type: PM_INTEGER_NODE
|
2887
2990
|
* Flags:
|
2888
2991
|
* PM_INTEGER_BASE_FLAGS_BINARY
|
2889
|
-
* PM_INTEGER_BASE_FLAGS_OCTAL
|
2890
2992
|
* PM_INTEGER_BASE_FLAGS_DECIMAL
|
2993
|
+
* PM_INTEGER_BASE_FLAGS_OCTAL
|
2891
2994
|
* PM_INTEGER_BASE_FLAGS_HEXADECIMAL
|
2892
2995
|
*
|
2893
2996
|
* @extends pm_node_t
|
@@ -2910,6 +3013,9 @@ typedef struct pm_integer_node {
|
|
2910
3013
|
* PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
|
2911
3014
|
* PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
|
2912
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
|
2913
3019
|
*
|
2914
3020
|
* @extends pm_node_t
|
2915
3021
|
*/
|
@@ -2940,6 +3046,9 @@ typedef struct pm_interpolated_match_last_line_node {
|
|
2940
3046
|
* PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
|
2941
3047
|
* PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
|
2942
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
|
2943
3052
|
*
|
2944
3053
|
* @extends pm_node_t
|
2945
3054
|
*/
|
@@ -3024,6 +3133,8 @@ typedef struct pm_interpolated_x_string_node {
|
|
3024
3133
|
* KeywordHashNode
|
3025
3134
|
*
|
3026
3135
|
* Type: PM_KEYWORD_HASH_NODE
|
3136
|
+
* Flags:
|
3137
|
+
* PM_KEYWORD_HASH_NODE_FLAGS_STATIC_KEYS
|
3027
3138
|
*
|
3028
3139
|
* @extends pm_node_t
|
3029
3140
|
*/
|
@@ -3070,6 +3181,9 @@ typedef struct pm_lambda_node {
|
|
3070
3181
|
/** LambdaNode#locals */
|
3071
3182
|
pm_constant_id_list_t locals;
|
3072
3183
|
|
3184
|
+
/** LambdaNode#locals_body_index */
|
3185
|
+
uint32_t locals_body_index;
|
3186
|
+
|
3073
3187
|
/** LambdaNode#operator_loc */
|
3074
3188
|
pm_location_t operator_loc;
|
3075
3189
|
|
@@ -3080,7 +3194,7 @@ typedef struct pm_lambda_node {
|
|
3080
3194
|
pm_location_t closing_loc;
|
3081
3195
|
|
3082
3196
|
/** LambdaNode#parameters */
|
3083
|
-
struct
|
3197
|
+
struct pm_node *parameters;
|
3084
3198
|
|
3085
3199
|
/** LambdaNode#body */
|
3086
3200
|
struct pm_node *body;
|
@@ -3246,6 +3360,9 @@ typedef struct pm_local_variable_write_node {
|
|
3246
3360
|
* PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
|
3247
3361
|
* PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
|
3248
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
|
3249
3366
|
*
|
3250
3367
|
* @extends pm_node_t
|
3251
3368
|
*/
|
@@ -3476,6 +3593,21 @@ typedef struct pm_no_keywords_parameter_node {
|
|
3476
3593
|
pm_location_t keyword_loc;
|
3477
3594
|
} pm_no_keywords_parameter_node_t;
|
3478
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
|
+
|
3479
3611
|
/**
|
3480
3612
|
* NumberedReferenceReadNode
|
3481
3613
|
*
|
@@ -3575,7 +3707,7 @@ typedef struct pm_parameters_node {
|
|
3575
3707
|
struct pm_node_list optionals;
|
3576
3708
|
|
3577
3709
|
/** ParametersNode#rest */
|
3578
|
-
struct
|
3710
|
+
struct pm_node *rest;
|
3579
3711
|
|
3580
3712
|
/** ParametersNode#posts */
|
3581
3713
|
struct pm_node_list posts;
|
@@ -3782,6 +3914,9 @@ typedef struct pm_redo_node {
|
|
3782
3914
|
* PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
|
3783
3915
|
* PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
|
3784
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
|
3785
3920
|
*
|
3786
3921
|
* @extends pm_node_t
|
3787
3922
|
*/
|
@@ -4056,6 +4191,8 @@ typedef struct pm_statements_node {
|
|
4056
4191
|
*
|
4057
4192
|
* Type: PM_STRING_NODE
|
4058
4193
|
* Flags:
|
4194
|
+
* PM_STRING_FLAGS_FORCED_UTF8_ENCODING
|
4195
|
+
* PM_STRING_FLAGS_FORCED_BINARY_ENCODING
|
4059
4196
|
* PM_STRING_FLAGS_FROZEN
|
4060
4197
|
*
|
4061
4198
|
* @extends pm_node_t
|
@@ -4108,6 +4245,10 @@ typedef struct pm_super_node {
|
|
4108
4245
|
* SymbolNode
|
4109
4246
|
*
|
4110
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
|
4111
4252
|
*
|
4112
4253
|
* @extends pm_node_t
|
4113
4254
|
*/
|
@@ -4265,6 +4406,9 @@ typedef struct pm_while_node {
|
|
4265
4406
|
* XStringNode
|
4266
4407
|
*
|
4267
4408
|
* Type: PM_X_STRING_NODE
|
4409
|
+
* Flags:
|
4410
|
+
* PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING
|
4411
|
+
* PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING
|
4268
4412
|
*
|
4269
4413
|
* @extends pm_node_t
|
4270
4414
|
*/
|
@@ -4314,9 +4458,17 @@ typedef struct pm_yield_node {
|
|
4314
4458
|
*/
|
4315
4459
|
typedef enum pm_arguments_node_flags {
|
4316
4460
|
/** if arguments contain keyword splat */
|
4317
|
-
|
4461
|
+
PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT = 1,
|
4318
4462
|
} pm_arguments_node_flags_t;
|
4319
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
|
+
|
4320
4472
|
/**
|
4321
4473
|
* Flags for call nodes.
|
4322
4474
|
*/
|
@@ -4326,8 +4478,22 @@ typedef enum pm_call_node_flags {
|
|
4326
4478
|
|
4327
4479
|
/** a call that could have been a local variable */
|
4328
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,
|
4329
4484
|
} pm_call_node_flags_t;
|
4330
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
|
+
|
4331
4497
|
/**
|
4332
4498
|
* Flags for integer nodes that correspond to the base of the integer.
|
4333
4499
|
*/
|
@@ -4335,16 +4501,24 @@ typedef enum pm_integer_base_flags {
|
|
4335
4501
|
/** 0b prefix */
|
4336
4502
|
PM_INTEGER_BASE_FLAGS_BINARY = 1,
|
4337
4503
|
|
4338
|
-
/** 0o or 0 prefix */
|
4339
|
-
PM_INTEGER_BASE_FLAGS_OCTAL = 2,
|
4340
|
-
|
4341
4504
|
/** 0d or no prefix */
|
4342
|
-
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,
|
4343
4509
|
|
4344
4510
|
/** 0x prefix */
|
4345
4511
|
PM_INTEGER_BASE_FLAGS_HEXADECIMAL = 8,
|
4346
4512
|
} pm_integer_base_flags_t;
|
4347
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
|
+
|
4348
4522
|
/**
|
4349
4523
|
* Flags for while and until loop nodes.
|
4350
4524
|
*/
|
@@ -4388,16 +4562,45 @@ typedef enum pm_regular_expression_flags {
|
|
4388
4562
|
|
4389
4563
|
/** u - forces the UTF-8 encoding */
|
4390
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,
|
4391
4574
|
} pm_regular_expression_flags_t;
|
4392
4575
|
|
4393
4576
|
/**
|
4394
4577
|
* Flags for string nodes.
|
4395
4578
|
*/
|
4396
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
|
+
|
4397
4586
|
/** frozen by virtue of a `frozen_string_literal` comment */
|
4398
|
-
PM_STRING_FLAGS_FROZEN =
|
4587
|
+
PM_STRING_FLAGS_FROZEN = 4,
|
4399
4588
|
} pm_string_flags_t;
|
4400
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
|
+
|
4401
4604
|
/**
|
4402
4605
|
* When we're serializing to Java, we want to skip serializing the location
|
4403
4606
|
* fields as they won't be used by JRuby or TruffleRuby. This boolean allows us
|