datadog-ruby_core_source 3.5.2 → 3.5.3

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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/ccan/build_assert/build_assert.h +40 -0
  3. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/ccan/check_type/check_type.h +63 -0
  4. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/ccan/container_of/container_of.h +142 -0
  5. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/ccan/list/list.h +791 -0
  6. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/ccan/str/str.h +17 -0
  7. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/id.h +357 -0
  8. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/id_table.h +64 -0
  9. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/array.h +155 -0
  10. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/basic_operators.h +66 -0
  11. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/bignum.h +256 -0
  12. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/bits.h +647 -0
  13. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/box.h +96 -0
  14. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/class.h +749 -0
  15. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/cmdlineopt.h +64 -0
  16. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/compar.h +29 -0
  17. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/compile.h +34 -0
  18. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/compilers.h +107 -0
  19. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/complex.h +29 -0
  20. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/concurrent_set.h +21 -0
  21. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/cont.h +34 -0
  22. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/dir.h +16 -0
  23. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/enc.h +19 -0
  24. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/encoding.h +39 -0
  25. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/enum.h +18 -0
  26. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/enumerator.h +21 -0
  27. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/error.h +251 -0
  28. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/eval.h +43 -0
  29. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/file.h +38 -0
  30. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/fixnum.h +185 -0
  31. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/gc.h +360 -0
  32. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/hash.h +194 -0
  33. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/imemo.h +323 -0
  34. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/inits.h +51 -0
  35. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/io.h +163 -0
  36. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/load.h +20 -0
  37. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/loadpath.h +16 -0
  38. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/math.h +23 -0
  39. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/missing.h +19 -0
  40. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/numeric.h +323 -0
  41. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/object.h +63 -0
  42. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/parse.h +131 -0
  43. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/proc.h +30 -0
  44. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/process.h +124 -0
  45. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/ractor.h +10 -0
  46. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/random.h +17 -0
  47. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/range.h +40 -0
  48. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/rational.h +73 -0
  49. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/re.h +33 -0
  50. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/ruby_parser.h +102 -0
  51. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/sanitizers.h +346 -0
  52. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/serial.h +23 -0
  53. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/set_table.h +70 -0
  54. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/signal.h +25 -0
  55. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/st.h +11 -0
  56. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/static_assert.h +16 -0
  57. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/string.h +203 -0
  58. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/struct.h +160 -0
  59. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/symbol.h +46 -0
  60. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/thread.h +112 -0
  61. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/time.h +34 -0
  62. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/transcode.h +23 -0
  63. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/util.h +27 -0
  64. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/variable.h +76 -0
  65. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/vm.h +138 -0
  66. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal/warnings.h +16 -0
  67. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/internal.h +105 -0
  68. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/iseq.h +359 -0
  69. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/method.h +276 -0
  70. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/node.h +122 -0
  71. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/parser_st.h +162 -0
  72. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/parser_value.h +106 -0
  73. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/ast.h +8254 -0
  74. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/defines.h +260 -0
  75. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/diagnostic.h +460 -0
  76. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/encoding.h +283 -0
  77. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/extension.h +19 -0
  78. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/node.h +129 -0
  79. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/options.h +488 -0
  80. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/pack.h +163 -0
  81. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/parser.h +936 -0
  82. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/prettyprint.h +34 -0
  83. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/prism.h +408 -0
  84. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/regexp.h +43 -0
  85. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/static_literals.h +121 -0
  86. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/util/pm_buffer.h +236 -0
  87. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/util/pm_char.h +204 -0
  88. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/util/pm_constant_pool.h +218 -0
  89. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/util/pm_integer.h +130 -0
  90. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/util/pm_list.h +103 -0
  91. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/util/pm_memchr.h +29 -0
  92. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/util/pm_newline_list.h +113 -0
  93. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/util/pm_string.h +200 -0
  94. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/util/pm_strncasecmp.h +32 -0
  95. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/util/pm_strpbrk.h +46 -0
  96. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism/version.h +29 -0
  97. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/prism_compile.h +106 -0
  98. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/ractor_core.h +331 -0
  99. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/ruby_assert.h +14 -0
  100. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/ruby_atomic.h +73 -0
  101. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/rubyparser.h +1393 -0
  102. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/shape.h +464 -0
  103. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/thread_none.h +21 -0
  104. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/thread_pthread.h +185 -0
  105. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/vm_core.h +2408 -0
  106. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/vm_debug.h +124 -0
  107. data/lib/datadog/ruby_core_source/ruby-4.0.6-p0/vm_opts.h +67 -0
  108. data/lib/datadog/ruby_core_source/version.rb +1 -1
  109. metadata +108 -2
@@ -0,0 +1,460 @@
1
+ /* :markup: markdown */
2
+
3
+ /*----------------------------------------------------------------------------*/
4
+ /* This file is generated by the templates/template.rb script and should not */
5
+ /* be modified manually. See */
6
+ /* templates/include/prism/diagnostic.h.erb */
7
+ /* if you are looking to modify the */
8
+ /* template */
9
+ /*----------------------------------------------------------------------------*/
10
+
11
+ /**
12
+ * @file diagnostic.h
13
+ *
14
+ * A list of diagnostics generated during parsing.
15
+ */
16
+ #ifndef PRISM_DIAGNOSTIC_H
17
+ #define PRISM_DIAGNOSTIC_H
18
+
19
+ #include "prism/ast.h"
20
+ #include "prism/defines.h"
21
+ #include "prism/util/pm_list.h"
22
+
23
+ #include <stdbool.h>
24
+ #include <stdlib.h>
25
+ #include <assert.h>
26
+
27
+ /**
28
+ * The diagnostic IDs of all of the diagnostics, used to communicate the types
29
+ * of errors between the parser and the user.
30
+ */
31
+ typedef enum {
32
+ // These are the error diagnostics.
33
+ PM_ERR_ALIAS_ARGUMENT,
34
+ PM_ERR_ALIAS_ARGUMENT_NUMBERED_REFERENCE,
35
+ PM_ERR_AMPAMPEQ_MULTI_ASSIGN,
36
+ PM_ERR_ARGUMENT_AFTER_BLOCK,
37
+ PM_ERR_ARGUMENT_AFTER_FORWARDING_ELLIPSES,
38
+ PM_ERR_ARGUMENT_BARE_HASH,
39
+ PM_ERR_ARGUMENT_BLOCK_FORWARDING,
40
+ PM_ERR_ARGUMENT_BLOCK_MULTI,
41
+ PM_ERR_ARGUMENT_CONFLICT_AMPERSAND,
42
+ PM_ERR_ARGUMENT_CONFLICT_STAR,
43
+ PM_ERR_ARGUMENT_CONFLICT_STAR_STAR,
44
+ PM_ERR_ARGUMENT_FORMAL_CLASS,
45
+ PM_ERR_ARGUMENT_FORMAL_CONSTANT,
46
+ PM_ERR_ARGUMENT_FORMAL_GLOBAL,
47
+ PM_ERR_ARGUMENT_FORMAL_IVAR,
48
+ PM_ERR_ARGUMENT_FORWARDING_UNBOUND,
49
+ PM_ERR_ARGUMENT_NO_FORWARDING_AMPERSAND,
50
+ PM_ERR_ARGUMENT_NO_FORWARDING_ELLIPSES,
51
+ PM_ERR_ARGUMENT_NO_FORWARDING_ELLIPSES_LAMBDA,
52
+ PM_ERR_ARGUMENT_NO_FORWARDING_ELLIPSES_BLOCK,
53
+ PM_ERR_ARGUMENT_NO_FORWARDING_STAR,
54
+ PM_ERR_ARGUMENT_NO_FORWARDING_STAR_STAR,
55
+ PM_ERR_ARGUMENT_SPLAT_AFTER_ASSOC_SPLAT,
56
+ PM_ERR_ARGUMENT_SPLAT_AFTER_SPLAT,
57
+ PM_ERR_ARGUMENT_TERM_PAREN,
58
+ PM_ERR_ARGUMENT_UNEXPECTED_BLOCK,
59
+ PM_ERR_ARRAY_ELEMENT,
60
+ PM_ERR_ARRAY_EXPRESSION,
61
+ PM_ERR_ARRAY_EXPRESSION_AFTER_STAR,
62
+ PM_ERR_ARRAY_SEPARATOR,
63
+ PM_ERR_ARRAY_TERM,
64
+ PM_ERR_BEGIN_LONELY_ELSE,
65
+ PM_ERR_BEGIN_TERM,
66
+ PM_ERR_BEGIN_UPCASE_BRACE,
67
+ PM_ERR_BEGIN_UPCASE_TERM,
68
+ PM_ERR_BEGIN_UPCASE_TOPLEVEL,
69
+ PM_ERR_BLOCK_PARAM_LOCAL_VARIABLE,
70
+ PM_ERR_BLOCK_PARAM_PIPE_TERM,
71
+ PM_ERR_BLOCK_TERM_BRACE,
72
+ PM_ERR_BLOCK_TERM_END,
73
+ PM_ERR_CANNOT_PARSE_EXPRESSION,
74
+ PM_ERR_CANNOT_PARSE_STRING_PART,
75
+ PM_ERR_CASE_EXPRESSION_AFTER_CASE,
76
+ PM_ERR_CASE_EXPRESSION_AFTER_WHEN,
77
+ PM_ERR_CASE_MATCH_MISSING_PREDICATE,
78
+ PM_ERR_CASE_MISSING_CONDITIONS,
79
+ PM_ERR_CASE_TERM,
80
+ PM_ERR_CLASS_IN_METHOD,
81
+ PM_ERR_CLASS_NAME,
82
+ PM_ERR_CLASS_SUPERCLASS,
83
+ PM_ERR_CLASS_TERM,
84
+ PM_ERR_CLASS_UNEXPECTED_END,
85
+ PM_ERR_CLASS_VARIABLE_BARE,
86
+ PM_ERR_CONDITIONAL_ELSIF_PREDICATE,
87
+ PM_ERR_CONDITIONAL_IF_PREDICATE,
88
+ PM_ERR_CONDITIONAL_PREDICATE_TERM,
89
+ PM_ERR_CONDITIONAL_TERM,
90
+ PM_ERR_CONDITIONAL_TERM_ELSE,
91
+ PM_ERR_CONDITIONAL_UNLESS_PREDICATE,
92
+ PM_ERR_CONDITIONAL_UNTIL_PREDICATE,
93
+ PM_ERR_CONDITIONAL_WHILE_PREDICATE,
94
+ PM_ERR_CONSTANT_PATH_COLON_COLON_CONSTANT,
95
+ PM_ERR_DEF_ENDLESS,
96
+ PM_ERR_DEF_ENDLESS_PARAMETERS,
97
+ PM_ERR_DEF_ENDLESS_SETTER,
98
+ PM_ERR_DEF_NAME,
99
+ PM_ERR_DEF_PARAMS_TERM,
100
+ PM_ERR_DEF_PARAMS_TERM_PAREN,
101
+ PM_ERR_DEF_RECEIVER,
102
+ PM_ERR_DEF_RECEIVER_TERM,
103
+ PM_ERR_DEF_TERM,
104
+ PM_ERR_DEFINED_EXPRESSION,
105
+ PM_ERR_EMBDOC_TERM,
106
+ PM_ERR_EMBEXPR_END,
107
+ PM_ERR_EMBVAR_INVALID,
108
+ PM_ERR_END_UPCASE_BRACE,
109
+ PM_ERR_END_UPCASE_TERM,
110
+ PM_ERR_ESCAPE_INVALID_CONTROL,
111
+ PM_ERR_ESCAPE_INVALID_CONTROL_REPEAT,
112
+ PM_ERR_ESCAPE_INVALID_HEXADECIMAL,
113
+ PM_ERR_ESCAPE_INVALID_META,
114
+ PM_ERR_ESCAPE_INVALID_META_REPEAT,
115
+ PM_ERR_ESCAPE_INVALID_UNICODE,
116
+ PM_ERR_ESCAPE_INVALID_UNICODE_CM_FLAGS,
117
+ PM_ERR_ESCAPE_INVALID_UNICODE_LIST,
118
+ PM_ERR_ESCAPE_INVALID_UNICODE_LITERAL,
119
+ PM_ERR_ESCAPE_INVALID_UNICODE_LONG,
120
+ PM_ERR_ESCAPE_INVALID_UNICODE_SHORT,
121
+ PM_ERR_ESCAPE_INVALID_UNICODE_TERM,
122
+ PM_ERR_EXPECT_ARGUMENT,
123
+ PM_ERR_EXPECT_EOL_AFTER_STATEMENT,
124
+ PM_ERR_EXPECT_EXPRESSION_AFTER_AMPAMPEQ,
125
+ PM_ERR_EXPECT_EXPRESSION_AFTER_COMMA,
126
+ PM_ERR_EXPECT_EXPRESSION_AFTER_EQUAL,
127
+ PM_ERR_EXPECT_EXPRESSION_AFTER_LESS_LESS,
128
+ PM_ERR_EXPECT_EXPRESSION_AFTER_LPAREN,
129
+ PM_ERR_EXPECT_EXPRESSION_AFTER_OPERATOR,
130
+ PM_ERR_EXPECT_EXPRESSION_AFTER_PIPEPIPEEQ,
131
+ PM_ERR_EXPECT_EXPRESSION_AFTER_QUESTION,
132
+ PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT,
133
+ PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT_HASH,
134
+ PM_ERR_EXPECT_EXPRESSION_AFTER_STAR,
135
+ PM_ERR_EXPECT_FOR_DELIMITER,
136
+ PM_ERR_EXPECT_IDENT_REQ_PARAMETER,
137
+ PM_ERR_EXPECT_IN_DELIMITER,
138
+ PM_ERR_EXPECT_LPAREN_AFTER_NOT_LPAREN,
139
+ PM_ERR_EXPECT_LPAREN_AFTER_NOT_OTHER,
140
+ PM_ERR_EXPECT_LPAREN_REQ_PARAMETER,
141
+ PM_ERR_EXPECT_MESSAGE,
142
+ PM_ERR_EXPECT_RBRACKET,
143
+ PM_ERR_EXPECT_RPAREN,
144
+ PM_ERR_EXPECT_RPAREN_AFTER_MULTI,
145
+ PM_ERR_EXPECT_RPAREN_REQ_PARAMETER,
146
+ PM_ERR_EXPECT_SINGLETON_CLASS_DELIMITER,
147
+ PM_ERR_EXPECT_STRING_CONTENT,
148
+ PM_ERR_EXPECT_WHEN_DELIMITER,
149
+ PM_ERR_EXPRESSION_BARE_HASH,
150
+ PM_ERR_EXPRESSION_NOT_WRITABLE,
151
+ PM_ERR_EXPRESSION_NOT_WRITABLE_ENCODING,
152
+ PM_ERR_EXPRESSION_NOT_WRITABLE_FALSE,
153
+ PM_ERR_EXPRESSION_NOT_WRITABLE_FILE,
154
+ PM_ERR_EXPRESSION_NOT_WRITABLE_LINE,
155
+ PM_ERR_EXPRESSION_NOT_WRITABLE_NIL,
156
+ PM_ERR_EXPRESSION_NOT_WRITABLE_NUMBERED,
157
+ PM_ERR_EXPRESSION_NOT_WRITABLE_SELF,
158
+ PM_ERR_EXPRESSION_NOT_WRITABLE_TRUE,
159
+ PM_ERR_FLOAT_PARSE,
160
+ PM_ERR_FOR_COLLECTION,
161
+ PM_ERR_FOR_IN,
162
+ PM_ERR_FOR_INDEX,
163
+ PM_ERR_FOR_TERM,
164
+ PM_ERR_GLOBAL_VARIABLE_BARE,
165
+ PM_ERR_HASH_EXPRESSION_AFTER_LABEL,
166
+ PM_ERR_HASH_KEY,
167
+ PM_ERR_HASH_ROCKET,
168
+ PM_ERR_HASH_TERM,
169
+ PM_ERR_HASH_VALUE,
170
+ PM_ERR_HEREDOC_IDENTIFIER,
171
+ PM_ERR_HEREDOC_TERM,
172
+ PM_ERR_INCOMPLETE_QUESTION_MARK,
173
+ PM_ERR_INCOMPLETE_VARIABLE_CLASS,
174
+ PM_ERR_INCOMPLETE_VARIABLE_CLASS_3_3,
175
+ PM_ERR_INCOMPLETE_VARIABLE_INSTANCE,
176
+ PM_ERR_INCOMPLETE_VARIABLE_INSTANCE_3_3,
177
+ PM_ERR_INSTANCE_VARIABLE_BARE,
178
+ PM_ERR_INVALID_BLOCK_EXIT,
179
+ PM_ERR_INVALID_CHARACTER,
180
+ PM_ERR_INVALID_COMMA,
181
+ PM_ERR_INVALID_ENCODING_MAGIC_COMMENT,
182
+ PM_ERR_INVALID_ESCAPE_CHARACTER,
183
+ PM_ERR_INVALID_FLOAT_EXPONENT,
184
+ PM_ERR_INVALID_LOCAL_VARIABLE_READ,
185
+ PM_ERR_INVALID_LOCAL_VARIABLE_WRITE,
186
+ PM_ERR_INVALID_MULTIBYTE_CHAR,
187
+ PM_ERR_INVALID_MULTIBYTE_CHARACTER,
188
+ PM_ERR_INVALID_MULTIBYTE_ESCAPE,
189
+ PM_ERR_INVALID_NUMBER_BINARY,
190
+ PM_ERR_INVALID_NUMBER_DECIMAL,
191
+ PM_ERR_INVALID_NUMBER_FRACTION,
192
+ PM_ERR_INVALID_NUMBER_HEXADECIMAL,
193
+ PM_ERR_INVALID_NUMBER_OCTAL,
194
+ PM_ERR_INVALID_NUMBER_UNDERSCORE_INNER,
195
+ PM_ERR_INVALID_NUMBER_UNDERSCORE_TRAILING,
196
+ PM_ERR_INVALID_PERCENT,
197
+ PM_ERR_INVALID_PERCENT_EOF,
198
+ PM_ERR_INVALID_PRINTABLE_CHARACTER,
199
+ PM_ERR_INVALID_RETRY_AFTER_ELSE,
200
+ PM_ERR_INVALID_RETRY_AFTER_ENSURE,
201
+ PM_ERR_INVALID_RETRY_WITHOUT_RESCUE,
202
+ PM_ERR_INVALID_SYMBOL,
203
+ PM_ERR_INVALID_VARIABLE_GLOBAL,
204
+ PM_ERR_INVALID_VARIABLE_GLOBAL_3_3,
205
+ PM_ERR_INVALID_YIELD,
206
+ PM_ERR_IT_NOT_ALLOWED_NUMBERED,
207
+ PM_ERR_IT_NOT_ALLOWED_ORDINARY,
208
+ PM_ERR_LAMBDA_OPEN,
209
+ PM_ERR_LAMBDA_TERM_BRACE,
210
+ PM_ERR_LAMBDA_TERM_END,
211
+ PM_ERR_LIST_I_LOWER_ELEMENT,
212
+ PM_ERR_LIST_I_LOWER_TERM,
213
+ PM_ERR_LIST_I_UPPER_ELEMENT,
214
+ PM_ERR_LIST_I_UPPER_TERM,
215
+ PM_ERR_LIST_W_LOWER_ELEMENT,
216
+ PM_ERR_LIST_W_LOWER_TERM,
217
+ PM_ERR_LIST_W_UPPER_ELEMENT,
218
+ PM_ERR_LIST_W_UPPER_TERM,
219
+ PM_ERR_MALLOC_FAILED,
220
+ PM_ERR_MIXED_ENCODING,
221
+ PM_ERR_MODULE_IN_METHOD,
222
+ PM_ERR_MODULE_NAME,
223
+ PM_ERR_MODULE_TERM,
224
+ PM_ERR_MULTI_ASSIGN_MULTI_SPLATS,
225
+ PM_ERR_MULTI_ASSIGN_UNEXPECTED_REST,
226
+ PM_ERR_NESTING_TOO_DEEP,
227
+ PM_ERR_NO_LOCAL_VARIABLE,
228
+ PM_ERR_NON_ASSOCIATIVE_OPERATOR,
229
+ PM_ERR_NOT_EXPRESSION,
230
+ PM_ERR_NUMBER_LITERAL_UNDERSCORE,
231
+ PM_ERR_NUMBERED_PARAMETER_INNER_BLOCK,
232
+ PM_ERR_NUMBERED_PARAMETER_IT,
233
+ PM_ERR_NUMBERED_PARAMETER_ORDINARY,
234
+ PM_ERR_NUMBERED_PARAMETER_OUTER_BLOCK,
235
+ PM_ERR_OPERATOR_MULTI_ASSIGN,
236
+ PM_ERR_OPERATOR_WRITE_ARGUMENTS,
237
+ PM_ERR_OPERATOR_WRITE_BLOCK,
238
+ PM_ERR_PARAMETER_ASSOC_SPLAT_MULTI,
239
+ PM_ERR_PARAMETER_BLOCK_MULTI,
240
+ PM_ERR_PARAMETER_CIRCULAR,
241
+ PM_ERR_PARAMETER_FORWARDING_AFTER_REST,
242
+ PM_ERR_PARAMETER_METHOD_NAME,
243
+ PM_ERR_PARAMETER_NAME_DUPLICATED,
244
+ PM_ERR_PARAMETER_NO_DEFAULT,
245
+ PM_ERR_PARAMETER_NO_DEFAULT_KW,
246
+ PM_ERR_PARAMETER_NUMBERED_RESERVED,
247
+ PM_ERR_PARAMETER_ORDER,
248
+ PM_ERR_PARAMETER_SPLAT_MULTI,
249
+ PM_ERR_PARAMETER_STAR,
250
+ PM_ERR_PARAMETER_UNEXPECTED_FWD,
251
+ PM_ERR_PARAMETER_UNEXPECTED_NO_KW,
252
+ PM_ERR_PARAMETER_WILD_LOOSE_COMMA,
253
+ PM_ERR_PATTERN_ARRAY_MULTIPLE_RESTS,
254
+ PM_ERR_PATTERN_CAPTURE_DUPLICATE,
255
+ PM_ERR_PATTERN_CAPTURE_IN_ALTERNATIVE,
256
+ PM_ERR_PATTERN_EXPRESSION_AFTER_BRACKET,
257
+ PM_ERR_PATTERN_EXPRESSION_AFTER_COMMA,
258
+ PM_ERR_PATTERN_EXPRESSION_AFTER_HROCKET,
259
+ PM_ERR_PATTERN_EXPRESSION_AFTER_IN,
260
+ PM_ERR_PATTERN_EXPRESSION_AFTER_KEY,
261
+ PM_ERR_PATTERN_EXPRESSION_AFTER_PAREN,
262
+ PM_ERR_PATTERN_EXPRESSION_AFTER_PIN,
263
+ PM_ERR_PATTERN_EXPRESSION_AFTER_PIPE,
264
+ PM_ERR_PATTERN_EXPRESSION_AFTER_RANGE,
265
+ PM_ERR_PATTERN_EXPRESSION_AFTER_REST,
266
+ PM_ERR_PATTERN_FIND_MISSING_INNER,
267
+ PM_ERR_PATTERN_HASH_IMPLICIT,
268
+ PM_ERR_PATTERN_HASH_KEY,
269
+ PM_ERR_PATTERN_HASH_KEY_DUPLICATE,
270
+ PM_ERR_PATTERN_HASH_KEY_INTERPOLATED,
271
+ PM_ERR_PATTERN_HASH_KEY_LABEL,
272
+ PM_ERR_PATTERN_HASH_KEY_LOCALS,
273
+ PM_ERR_PATTERN_IDENT_AFTER_HROCKET,
274
+ PM_ERR_PATTERN_LABEL_AFTER_COMMA,
275
+ PM_ERR_PATTERN_REST,
276
+ PM_ERR_PATTERN_TERM_BRACE,
277
+ PM_ERR_PATTERN_TERM_BRACKET,
278
+ PM_ERR_PATTERN_TERM_PAREN,
279
+ PM_ERR_PIPEPIPEEQ_MULTI_ASSIGN,
280
+ PM_ERR_REGEXP_ENCODING_OPTION_MISMATCH,
281
+ PM_ERR_REGEXP_INCOMPAT_CHAR_ENCODING,
282
+ PM_ERR_REGEXP_INVALID_UNICODE_RANGE,
283
+ PM_ERR_REGEXP_NON_ESCAPED_MBC,
284
+ PM_ERR_REGEXP_PARSE_ERROR,
285
+ PM_ERR_REGEXP_TERM,
286
+ PM_ERR_REGEXP_UNKNOWN_OPTIONS,
287
+ PM_ERR_REGEXP_UTF8_CHAR_NON_UTF8_REGEXP,
288
+ PM_ERR_RESCUE_EXPRESSION,
289
+ PM_ERR_RESCUE_MODIFIER_VALUE,
290
+ PM_ERR_RESCUE_TERM,
291
+ PM_ERR_RESCUE_VARIABLE,
292
+ PM_ERR_RETURN_INVALID,
293
+ PM_ERR_SCRIPT_NOT_FOUND,
294
+ PM_ERR_SINGLETON_FOR_LITERALS,
295
+ PM_ERR_STATEMENT_ALIAS,
296
+ PM_ERR_STATEMENT_POSTEXE_END,
297
+ PM_ERR_STATEMENT_PREEXE_BEGIN,
298
+ PM_ERR_STATEMENT_UNDEF,
299
+ PM_ERR_STRING_CONCATENATION,
300
+ PM_ERR_STRING_INTERPOLATED_TERM,
301
+ PM_ERR_STRING_LITERAL_EOF,
302
+ PM_ERR_STRING_LITERAL_TERM,
303
+ PM_ERR_SYMBOL_INVALID,
304
+ PM_ERR_SYMBOL_TERM_DYNAMIC,
305
+ PM_ERR_SYMBOL_TERM_INTERPOLATED,
306
+ PM_ERR_TERNARY_COLON,
307
+ PM_ERR_TERNARY_EXPRESSION_FALSE,
308
+ PM_ERR_TERNARY_EXPRESSION_TRUE,
309
+ PM_ERR_UNARY_DISALLOWED,
310
+ PM_ERR_UNARY_RECEIVER,
311
+ PM_ERR_UNDEF_ARGUMENT,
312
+ PM_ERR_UNEXPECTED_BLOCK_ARGUMENT,
313
+ PM_ERR_UNEXPECTED_INDEX_BLOCK,
314
+ PM_ERR_UNEXPECTED_INDEX_KEYWORDS,
315
+ PM_ERR_UNEXPECTED_LABEL,
316
+ PM_ERR_UNEXPECTED_MULTI_WRITE,
317
+ PM_ERR_UNEXPECTED_PARAMETER_DEFAULT_VALUE,
318
+ PM_ERR_UNEXPECTED_RANGE_OPERATOR,
319
+ PM_ERR_UNEXPECTED_SAFE_NAVIGATION,
320
+ PM_ERR_UNEXPECTED_TOKEN_CLOSE_CONTEXT,
321
+ PM_ERR_UNEXPECTED_TOKEN_IGNORE,
322
+ PM_ERR_UNTIL_TERM,
323
+ PM_ERR_VOID_EXPRESSION,
324
+ PM_ERR_WHILE_TERM,
325
+ PM_ERR_WRITE_TARGET_IN_METHOD,
326
+ PM_ERR_WRITE_TARGET_READONLY,
327
+ PM_ERR_WRITE_TARGET_UNEXPECTED,
328
+ PM_ERR_XSTRING_TERM,
329
+
330
+ // These are the warning diagnostics.
331
+ PM_WARN_AMBIGUOUS_BINARY_OPERATOR,
332
+ PM_WARN_AMBIGUOUS_FIRST_ARGUMENT_MINUS,
333
+ PM_WARN_AMBIGUOUS_FIRST_ARGUMENT_PLUS,
334
+ PM_WARN_AMBIGUOUS_PREFIX_AMPERSAND,
335
+ PM_WARN_AMBIGUOUS_PREFIX_STAR,
336
+ PM_WARN_AMBIGUOUS_PREFIX_STAR_STAR,
337
+ PM_WARN_AMBIGUOUS_SLASH,
338
+ PM_WARN_COMPARISON_AFTER_COMPARISON,
339
+ PM_WARN_DOT_DOT_DOT_EOL,
340
+ PM_WARN_EQUAL_IN_CONDITIONAL,
341
+ PM_WARN_EQUAL_IN_CONDITIONAL_3_3,
342
+ PM_WARN_END_IN_METHOD,
343
+ PM_WARN_DUPLICATED_HASH_KEY,
344
+ PM_WARN_DUPLICATED_WHEN_CLAUSE,
345
+ PM_WARN_FLOAT_OUT_OF_RANGE,
346
+ PM_WARN_IGNORED_FROZEN_STRING_LITERAL,
347
+ PM_WARN_INDENTATION_MISMATCH,
348
+ PM_WARN_INTEGER_IN_FLIP_FLOP,
349
+ PM_WARN_INVALID_CHARACTER,
350
+ PM_WARN_INVALID_MAGIC_COMMENT_VALUE,
351
+ PM_WARN_INVALID_NUMBERED_REFERENCE,
352
+ PM_WARN_KEYWORD_EOL,
353
+ PM_WARN_LITERAL_IN_CONDITION_DEFAULT,
354
+ PM_WARN_LITERAL_IN_CONDITION_VERBOSE,
355
+ PM_WARN_SHAREABLE_CONSTANT_VALUE_LINE,
356
+ PM_WARN_SHEBANG_CARRIAGE_RETURN,
357
+ PM_WARN_UNEXPECTED_CARRIAGE_RETURN,
358
+ PM_WARN_UNREACHABLE_STATEMENT,
359
+ PM_WARN_UNUSED_LOCAL_VARIABLE,
360
+ PM_WARN_VOID_STATEMENT,
361
+ } pm_diagnostic_id_t;
362
+
363
+ /**
364
+ * This struct represents a diagnostic generated during parsing.
365
+ *
366
+ * @extends pm_list_node_t
367
+ */
368
+ typedef struct {
369
+ /** The embedded base node. */
370
+ pm_list_node_t node;
371
+
372
+ /** The location of the diagnostic in the source. */
373
+ pm_location_t location;
374
+
375
+ /** The ID of the diagnostic. */
376
+ pm_diagnostic_id_t diag_id;
377
+
378
+ /** The message associated with the diagnostic. */
379
+ const char *message;
380
+
381
+ /**
382
+ * Whether or not the memory related to the message of this diagnostic is
383
+ * owned by this diagnostic. If it is, it needs to be freed when the
384
+ * diagnostic is freed.
385
+ */
386
+ bool owned;
387
+
388
+ /**
389
+ * The level of the diagnostic, see `pm_error_level_t` and
390
+ * `pm_warning_level_t` for possible values.
391
+ */
392
+ uint8_t level;
393
+ } pm_diagnostic_t;
394
+
395
+ /**
396
+ * The levels of errors generated during parsing.
397
+ */
398
+ typedef enum {
399
+ /** For errors that should raise a syntax error. */
400
+ PM_ERROR_LEVEL_SYNTAX = 0,
401
+
402
+ /** For errors that should raise an argument error. */
403
+ PM_ERROR_LEVEL_ARGUMENT = 1,
404
+
405
+ /** For errors that should raise a load error. */
406
+ PM_ERROR_LEVEL_LOAD = 2
407
+ } pm_error_level_t;
408
+
409
+ /**
410
+ * The levels of warnings generated during parsing.
411
+ */
412
+ typedef enum {
413
+ /** For warnings which should be emitted if $VERBOSE != nil. */
414
+ PM_WARNING_LEVEL_DEFAULT = 0,
415
+
416
+ /** For warnings which should be emitted if $VERBOSE == true. */
417
+ PM_WARNING_LEVEL_VERBOSE = 1
418
+ } pm_warning_level_t;
419
+
420
+ /**
421
+ * Get the human-readable name of the given diagnostic ID.
422
+ *
423
+ * @param diag_id The diagnostic ID.
424
+ * @return The human-readable name of the diagnostic ID.
425
+ */
426
+ const char * pm_diagnostic_id_human(pm_diagnostic_id_t diag_id);
427
+
428
+ /**
429
+ * Append a diagnostic to the given list of diagnostics that is using shared
430
+ * memory for its message.
431
+ *
432
+ * @param list The list to append to.
433
+ * @param start The start of the diagnostic.
434
+ * @param end The end of the diagnostic.
435
+ * @param diag_id The diagnostic ID.
436
+ * @return Whether the diagnostic was successfully appended.
437
+ */
438
+ bool pm_diagnostic_list_append(pm_list_t *list, const uint8_t *start, const uint8_t *end, pm_diagnostic_id_t diag_id);
439
+
440
+ /**
441
+ * Append a diagnostic to the given list of diagnostics that is using a format
442
+ * string for its message.
443
+ *
444
+ * @param list The list to append to.
445
+ * @param start The start of the diagnostic.
446
+ * @param end The end of the diagnostic.
447
+ * @param diag_id The diagnostic ID.
448
+ * @param ... The arguments to the format string for the message.
449
+ * @return Whether the diagnostic was successfully appended.
450
+ */
451
+ bool pm_diagnostic_list_append_format(pm_list_t *list, const uint8_t *start, const uint8_t *end, pm_diagnostic_id_t diag_id, ...);
452
+
453
+ /**
454
+ * Deallocate the internal state of the given diagnostic list.
455
+ *
456
+ * @param list The list to deallocate.
457
+ */
458
+ void pm_diagnostic_list_free(pm_list_t *list);
459
+
460
+ #endif