11 #define PM_DIAGNOSTIC_ID_MAX 319
90 [PM_ERR_INVALID_ENCODING_MAGIC_COMMENT] = {
"unknown or invalid encoding in the magic comment",
PM_ERROR_LEVEL_ARGUMENT },
96 [PM_ERR_ALIAS_ARGUMENT] = {
"invalid argument being passed to `alias`; expected a bare word, symbol, constant, or global variable",
PM_ERROR_LEVEL_SYNTAX },
97 [PM_ERR_ALIAS_ARGUMENT_NUMBERED_REFERENCE] = {
"invalid argument being passed to `alias`; can't make alias for the number variables",
PM_ERROR_LEVEL_SYNTAX },
98 [PM_ERR_AMPAMPEQ_MULTI_ASSIGN] = {
"unexpected `&&=` in a multiple assignment",
PM_ERROR_LEVEL_SYNTAX },
99 [PM_ERR_ARGUMENT_AFTER_BLOCK] = {
"unexpected argument after a block argument",
PM_ERROR_LEVEL_SYNTAX },
100 [PM_ERR_ARGUMENT_AFTER_FORWARDING_ELLIPSES] = {
"unexpected argument after `...`",
PM_ERROR_LEVEL_SYNTAX },
102 [PM_ERR_ARGUMENT_BLOCK_MULTI] = {
"both block arg and actual block given; only one block is allowed",
PM_ERROR_LEVEL_SYNTAX },
103 [PM_ERR_ARGUMENT_CONFLICT_AMPERSAND] = {
"unexpected `&`; anonymous block parameter is also used within block",
PM_ERROR_LEVEL_SYNTAX },
104 [PM_ERR_ARGUMENT_CONFLICT_STAR] = {
"unexpected `*`; anonymous rest parameter is also used within block",
PM_ERROR_LEVEL_SYNTAX },
105 [PM_ERR_ARGUMENT_CONFLICT_STAR_STAR] = {
"unexpected `**`; anonymous keyword rest parameter is also used within block",
PM_ERROR_LEVEL_SYNTAX },
106 [PM_ERR_ARGUMENT_FORMAL_CLASS] = {
"invalid formal argument; formal argument cannot be a class variable",
PM_ERROR_LEVEL_SYNTAX },
107 [PM_ERR_ARGUMENT_FORMAL_CONSTANT] = {
"invalid formal argument; formal argument cannot be a constant",
PM_ERROR_LEVEL_SYNTAX },
108 [PM_ERR_ARGUMENT_FORMAL_GLOBAL] = {
"invalid formal argument; formal argument cannot be a global variable",
PM_ERROR_LEVEL_SYNTAX },
109 [PM_ERR_ARGUMENT_FORMAL_IVAR] = {
"invalid formal argument; formal argument cannot be an instance variable",
PM_ERROR_LEVEL_SYNTAX },
110 [PM_ERR_ARGUMENT_FORWARDING_UNBOUND] = {
"unexpected `...` in an non-parenthesized call",
PM_ERROR_LEVEL_SYNTAX },
111 [PM_ERR_ARGUMENT_NO_FORWARDING_AMPERSAND] = {
"unexpected `&`; no anonymous block parameter",
PM_ERROR_LEVEL_SYNTAX },
112 [PM_ERR_ARGUMENT_NO_FORWARDING_ELLIPSES] = {
"unexpected ... when the parent method is not forwarding",
PM_ERROR_LEVEL_SYNTAX },
113 [PM_ERR_ARGUMENT_NO_FORWARDING_STAR] = {
"unexpected `*`; no anonymous rest parameter",
PM_ERROR_LEVEL_SYNTAX },
114 [PM_ERR_ARGUMENT_NO_FORWARDING_STAR_STAR] = {
"unexpected `**`; no anonymous keyword rest parameter",
PM_ERROR_LEVEL_SYNTAX },
115 [PM_ERR_ARGUMENT_SPLAT_AFTER_ASSOC_SPLAT] = {
"unexpected `*` splat argument after a `**` keyword splat argument",
PM_ERROR_LEVEL_SYNTAX },
116 [PM_ERR_ARGUMENT_SPLAT_AFTER_SPLAT] = {
"unexpected `*` splat argument after a `*` splat argument",
PM_ERROR_LEVEL_SYNTAX },
117 [PM_ERR_ARGUMENT_TERM_PAREN] = {
"unexpected %s; expected a `)` to close the arguments",
PM_ERROR_LEVEL_SYNTAX },
118 [PM_ERR_ARGUMENT_UNEXPECTED_BLOCK] = {
"unexpected '{' after a method call without parenthesis",
PM_ERROR_LEVEL_SYNTAX },
120 [PM_ERR_ARRAY_EXPRESSION] = {
"expected an expression for the array element",
PM_ERROR_LEVEL_SYNTAX },
121 [PM_ERR_ARRAY_EXPRESSION_AFTER_STAR] = {
"expected an expression after `*` in the array",
PM_ERROR_LEVEL_SYNTAX },
122 [PM_ERR_ARRAY_SEPARATOR] = {
"unexpected %s; expected a `,` separator for the array elements",
PM_ERROR_LEVEL_SYNTAX },
124 [PM_ERR_BEGIN_LONELY_ELSE] = {
"unexpected `else` in `begin` block; else without rescue is useless",
PM_ERROR_LEVEL_SYNTAX },
127 [PM_ERR_BEGIN_UPCASE_TERM] = {
"expected a `}` to close the `BEGIN` statement",
PM_ERROR_LEVEL_SYNTAX },
129 [PM_ERR_BLOCK_PARAM_LOCAL_VARIABLE] = {
"expected a local variable name in the block parameters",
PM_ERROR_LEVEL_SYNTAX },
130 [PM_ERR_BLOCK_PARAM_PIPE_TERM] = {
"expected the block parameters to end with `|`",
PM_ERROR_LEVEL_SYNTAX },
131 [PM_ERR_BLOCK_TERM_BRACE] = {
"expected a block beginning with `{` to end with `}`",
PM_ERROR_LEVEL_SYNTAX },
132 [PM_ERR_BLOCK_TERM_END] = {
"expected a block beginning with `do` to end with `end`",
PM_ERROR_LEVEL_SYNTAX },
134 [PM_ERR_CASE_EXPRESSION_AFTER_CASE] = {
"expected an expression after `case`",
PM_ERROR_LEVEL_SYNTAX },
135 [PM_ERR_CASE_EXPRESSION_AFTER_WHEN] = {
"expected an expression after `when`",
PM_ERROR_LEVEL_SYNTAX },
136 [PM_ERR_CASE_MATCH_MISSING_PREDICATE] = {
"expected a predicate for a case matching statement",
PM_ERROR_LEVEL_SYNTAX },
137 [PM_ERR_CASE_MISSING_CONDITIONS] = {
"expected a `when` or `in` clause after `case`",
PM_ERROR_LEVEL_SYNTAX },
140 [PM_ERR_CLASS_NAME] = {
"unexpected constant path after `class`; class/module name must be CONSTANT",
PM_ERROR_LEVEL_SYNTAX },
143 [PM_ERR_CLASS_UNEXPECTED_END] = {
"unexpected `end`, expecting ';' or '\\n'",
PM_ERROR_LEVEL_SYNTAX },
144 [PM_ERR_CLASS_VARIABLE_BARE] = {
"'@@' without identifiers is not allowed as a class variable name",
PM_ERROR_LEVEL_SYNTAX },
145 [PM_ERR_CONDITIONAL_ELSIF_PREDICATE] = {
"expected a predicate expression for the `elsif` statement",
PM_ERROR_LEVEL_SYNTAX },
146 [PM_ERR_CONDITIONAL_IF_PREDICATE] = {
"expected a predicate expression for the `if` statement",
PM_ERROR_LEVEL_SYNTAX },
148 [PM_ERR_CONDITIONAL_TERM] = {
"expected an `end` to close the conditional clause",
PM_ERROR_LEVEL_SYNTAX },
149 [PM_ERR_CONDITIONAL_TERM_ELSE] = {
"expected an `end` to close the `else` clause",
PM_ERROR_LEVEL_SYNTAX },
150 [PM_ERR_CONDITIONAL_UNLESS_PREDICATE] = {
"expected a predicate expression for the `unless` statement",
PM_ERROR_LEVEL_SYNTAX },
151 [PM_ERR_CONDITIONAL_UNTIL_PREDICATE] = {
"expected a predicate expression for the `until` statement",
PM_ERROR_LEVEL_SYNTAX },
152 [PM_ERR_CONDITIONAL_WHILE_PREDICATE] = {
"expected a predicate expression for the `while` statement",
PM_ERROR_LEVEL_SYNTAX },
153 [PM_ERR_CONSTANT_PATH_COLON_COLON_CONSTANT] = {
"expected a constant after the `::` operator",
PM_ERROR_LEVEL_SYNTAX },
155 [PM_ERR_DEF_ENDLESS_SETTER] = {
"invalid method name; a setter method cannot be defined in an endless method definition",
PM_ERROR_LEVEL_SYNTAX },
157 [PM_ERR_DEF_PARAMS_TERM] = {
"expected a delimiter to close the parameters",
PM_ERROR_LEVEL_SYNTAX },
158 [PM_ERR_DEF_PARAMS_TERM_PAREN] = {
"unexpected %s; expected a `)` to close the parameters",
PM_ERROR_LEVEL_SYNTAX },
160 [PM_ERR_DEF_RECEIVER_TERM] = {
"expected a `.` or `::` after the receiver in a method definition",
PM_ERROR_LEVEL_SYNTAX },
169 [PM_ERR_ESCAPE_INVALID_CONTROL_REPEAT] = {
"invalid control escape sequence; control cannot be repeated",
PM_ERROR_LEVEL_SYNTAX },
172 [PM_ERR_ESCAPE_INVALID_META_REPEAT] = {
"invalid meta escape sequence; meta cannot be repeated",
PM_ERROR_LEVEL_SYNTAX },
174 [PM_ERR_ESCAPE_INVALID_UNICODE_CM_FLAGS] = {
"invalid Unicode escape sequence; Unicode cannot be combined with control or meta flags",
PM_ERROR_LEVEL_SYNTAX },
176 [PM_ERR_ESCAPE_INVALID_UNICODE_LITERAL] = {
"invalid Unicode escape sequence; Multiple codepoints at single character literal are disallowed",
PM_ERROR_LEVEL_SYNTAX },
177 [PM_ERR_ESCAPE_INVALID_UNICODE_LONG] = {
"invalid Unicode escape sequence; maximum length is 6 digits",
PM_ERROR_LEVEL_SYNTAX },
178 [PM_ERR_ESCAPE_INVALID_UNICODE_SHORT] = {
"too short escape sequence: %.*s",
PM_ERROR_LEVEL_SYNTAX },
181 [PM_ERR_EXPECT_EOL_AFTER_STATEMENT] = {
"unexpected %s, expecting end-of-input",
PM_ERROR_LEVEL_SYNTAX },
182 [PM_ERR_EXPECT_EXPRESSION_AFTER_AMPAMPEQ] = {
"expected an expression after `&&=`",
PM_ERROR_LEVEL_SYNTAX },
183 [PM_ERR_EXPECT_EXPRESSION_AFTER_PIPEPIPEEQ] = {
"expected an expression after `||=`",
PM_ERROR_LEVEL_SYNTAX },
184 [PM_ERR_EXPECT_EXPRESSION_AFTER_COMMA] = {
"expected an expression after `,`",
PM_ERROR_LEVEL_SYNTAX },
185 [PM_ERR_EXPECT_EXPRESSION_AFTER_EQUAL] = {
"expected an expression after `=`",
PM_ERROR_LEVEL_SYNTAX },
186 [PM_ERR_EXPECT_EXPRESSION_AFTER_LESS_LESS] = {
"expected an expression after `<<`",
PM_ERROR_LEVEL_SYNTAX },
187 [PM_ERR_EXPECT_EXPRESSION_AFTER_LPAREN] = {
"expected an expression after `(`",
PM_ERROR_LEVEL_SYNTAX },
188 [PM_ERR_EXPECT_EXPRESSION_AFTER_OPERATOR] = {
"unexpected %s; expected an expression after the operator",
PM_ERROR_LEVEL_SYNTAX },
189 [PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT] = {
"expected an expression after `*` splat in an argument",
PM_ERROR_LEVEL_SYNTAX },
190 [PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT_HASH] = {
"expected an expression after `**` in a hash",
PM_ERROR_LEVEL_SYNTAX },
191 [PM_ERR_EXPECT_EXPRESSION_AFTER_STAR] = {
"expected an expression after `*`",
PM_ERROR_LEVEL_SYNTAX },
192 [PM_ERR_EXPECT_FOR_DELIMITER] = {
"unexpected %s; expected a 'do', newline, or ';' after the 'for' loop collection",
PM_ERROR_LEVEL_SYNTAX },
193 [PM_ERR_EXPECT_IDENT_REQ_PARAMETER] = {
"expected an identifier for the required parameter",
PM_ERROR_LEVEL_SYNTAX },
194 [PM_ERR_EXPECT_IN_DELIMITER] = {
"expected a delimiter after the patterns of an `in` clause",
PM_ERROR_LEVEL_SYNTAX },
195 [PM_ERR_EXPECT_LPAREN_REQ_PARAMETER] = {
"expected a `(` to start a required parameter",
PM_ERROR_LEVEL_SYNTAX },
196 [PM_ERR_EXPECT_MESSAGE] = {
"unexpected %s; expecting a message to send to the receiver",
PM_ERROR_LEVEL_SYNTAX },
199 [PM_ERR_EXPECT_RPAREN_AFTER_MULTI] = {
"expected a `)` after multiple assignment",
PM_ERROR_LEVEL_SYNTAX },
200 [PM_ERR_EXPECT_RPAREN_REQ_PARAMETER] = {
"expected a `)` to end a required parameter",
PM_ERROR_LEVEL_SYNTAX },
201 [PM_ERR_EXPECT_SINGLETON_CLASS_DELIMITER] = {
"unexpected %s; expected a newline or a ';' after the singleton class",
PM_ERROR_LEVEL_SYNTAX },
202 [PM_ERR_EXPECT_STRING_CONTENT] = {
"expected string content after opening string delimiter",
PM_ERROR_LEVEL_SYNTAX },
203 [PM_ERR_EXPECT_WHEN_DELIMITER] = {
"expected a delimiter after the predicates of a `when` clause",
PM_ERROR_LEVEL_SYNTAX },
205 [PM_ERR_EXPRESSION_NOT_WRITABLE] = {
"unexpected '='; target cannot be written",
PM_ERROR_LEVEL_SYNTAX },
206 [PM_ERR_EXPRESSION_NOT_WRITABLE_ENCODING] = {
"Can't assign to __ENCODING__",
PM_ERROR_LEVEL_SYNTAX },
211 [PM_ERR_EXPRESSION_NOT_WRITABLE_NUMBERED] = {
"Can't assign to numbered parameter %.2s",
PM_ERROR_LEVEL_SYNTAX },
215 [PM_ERR_FOR_COLLECTION] = {
"expected a collection after the `in` in a `for` statement",
PM_ERROR_LEVEL_SYNTAX },
217 [PM_ERR_FOR_IN] = {
"expected an `in` after the index in a `for` statement",
PM_ERROR_LEVEL_SYNTAX },
219 [PM_ERR_GLOBAL_VARIABLE_BARE] = {
"'$' without identifiers is not allowed as a global variable name",
PM_ERROR_LEVEL_SYNTAX },
220 [PM_ERR_HASH_EXPRESSION_AFTER_LABEL] = {
"expected an expression after the label in a hash",
PM_ERROR_LEVEL_SYNTAX },
221 [PM_ERR_HASH_KEY] = {
"unexpected %s, expecting '}' or a key in the hash literal",
PM_ERROR_LEVEL_SYNTAX },
224 [PM_ERR_HASH_VALUE] = {
"unexpected %s; expected a value in the hash literal",
PM_ERROR_LEVEL_SYNTAX },
226 [PM_ERR_HEREDOC_TERM] = {
"unterminated heredoc; can't find string \"%.*s\" anywhere before EOF",
PM_ERROR_LEVEL_SYNTAX },
228 [PM_ERR_INCOMPLETE_VARIABLE_CLASS_3_3] = {
"`%.*s' is not allowed as a class variable name",
PM_ERROR_LEVEL_SYNTAX },
229 [PM_ERR_INCOMPLETE_VARIABLE_CLASS] = {
"'%.*s' is not allowed as a class variable name",
PM_ERROR_LEVEL_SYNTAX },
230 [PM_ERR_INCOMPLETE_VARIABLE_INSTANCE_3_3] = {
"`%.*s' is not allowed as an instance variable name",
PM_ERROR_LEVEL_SYNTAX },
231 [PM_ERR_INCOMPLETE_VARIABLE_INSTANCE] = {
"'%.*s' is not allowed as an instance variable name",
PM_ERROR_LEVEL_SYNTAX },
232 [PM_ERR_INSTANCE_VARIABLE_BARE] = {
"'@' without identifiers is not allowed as an instance variable name",
PM_ERROR_LEVEL_SYNTAX },
237 [PM_ERR_INVALID_LOCAL_VARIABLE_READ] = {
"identifier %.*s is not valid to get",
PM_ERROR_LEVEL_SYNTAX },
238 [PM_ERR_INVALID_LOCAL_VARIABLE_WRITE] = {
"identifier %.*s is not valid to set",
PM_ERROR_LEVEL_SYNTAX },
239 [PM_ERR_INVALID_NUMBER_BINARY] = {
"invalid binary number; numeric literal without digits",
PM_ERROR_LEVEL_SYNTAX },
240 [PM_ERR_INVALID_NUMBER_DECIMAL] = {
"invalid decimal number; numeric literal without digits",
PM_ERROR_LEVEL_SYNTAX },
241 [PM_ERR_INVALID_NUMBER_FRACTION] = {
"unexpected fraction part after numeric literal",
PM_ERROR_LEVEL_SYNTAX },
242 [PM_ERR_INVALID_NUMBER_HEXADECIMAL] = {
"invalid hexadecimal number; numeric literal without digits",
PM_ERROR_LEVEL_SYNTAX },
243 [PM_ERR_INVALID_NUMBER_OCTAL] = {
"invalid octal number; numeric literal without digits",
PM_ERROR_LEVEL_SYNTAX },
244 [PM_ERR_INVALID_NUMBER_UNDERSCORE_INNER] = {
"invalid underscore placement in number",
PM_ERROR_LEVEL_SYNTAX },
248 [PM_ERR_INVALID_MULTIBYTE_CHARACTER] = {
"invalid multibyte character 0x%X",
PM_ERROR_LEVEL_SYNTAX },
252 [PM_ERR_INVALID_PERCENT_EOF] = {
"unterminated quoted string meets end of file",
PM_ERROR_LEVEL_SYNTAX },
257 [PM_ERR_INVALID_VARIABLE_GLOBAL_3_3] = {
"`%.*s' is not allowed as a global variable name",
PM_ERROR_LEVEL_SYNTAX },
258 [PM_ERR_INVALID_VARIABLE_GLOBAL] = {
"'%.*s' is not allowed as a global variable name",
PM_ERROR_LEVEL_SYNTAX },
260 [PM_ERR_IT_NOT_ALLOWED_NUMBERED] = {
"`it` is not allowed when a numbered parameter is already used",
PM_ERROR_LEVEL_SYNTAX },
261 [PM_ERR_IT_NOT_ALLOWED_ORDINARY] = {
"`it` is not allowed when an ordinary parameter is defined",
PM_ERROR_LEVEL_SYNTAX },
262 [PM_ERR_LAMBDA_OPEN] = {
"expected a `do` keyword or a `{` to open the lambda block",
PM_ERROR_LEVEL_SYNTAX },
263 [PM_ERR_LAMBDA_TERM_BRACE] = {
"expected a lambda block beginning with `{` to end with `}`",
PM_ERROR_LEVEL_SYNTAX },
264 [PM_ERR_LAMBDA_TERM_END] = {
"expected a lambda block beginning with `do` to end with `end`",
PM_ERROR_LEVEL_SYNTAX },
266 [PM_ERR_LIST_I_LOWER_TERM] = {
"unterminated list; expected a closing delimiter for the `%i`",
PM_ERROR_LEVEL_SYNTAX },
268 [PM_ERR_LIST_I_UPPER_TERM] = {
"unterminated list; expected a closing delimiter for the `%I`",
PM_ERROR_LEVEL_SYNTAX },
270 [PM_ERR_LIST_W_LOWER_TERM] = {
"unterminated list; expected a closing delimiter for the `%w`",
PM_ERROR_LEVEL_SYNTAX },
272 [PM_ERR_LIST_W_UPPER_TERM] = {
"unterminated list; expected a closing delimiter for the `%W`",
PM_ERROR_LEVEL_SYNTAX },
275 [PM_ERR_MODULE_IN_METHOD] = {
"unexpected module definition in method body",
PM_ERROR_LEVEL_SYNTAX },
276 [PM_ERR_MODULE_NAME] = {
"unexpected constant path after `module`; class/module name must be CONSTANT",
PM_ERROR_LEVEL_SYNTAX },
277 [PM_ERR_MODULE_TERM] = {
"expected an `end` to close the `module` statement",
PM_ERROR_LEVEL_SYNTAX },
278 [PM_ERR_MULTI_ASSIGN_MULTI_SPLATS] = {
"multiple splats in multiple assignment",
PM_ERROR_LEVEL_SYNTAX },
279 [PM_ERR_MULTI_ASSIGN_UNEXPECTED_REST] = {
"unexpected '%.*s' resulting in multiple splats in multiple assignment",
PM_ERROR_LEVEL_SYNTAX },
282 [PM_ERR_NON_ASSOCIATIVE_OPERATOR] = {
"unexpected %s; %s is a non-associative operator",
PM_ERROR_LEVEL_SYNTAX },
285 [PM_ERR_NUMBERED_PARAMETER_INNER_BLOCK] = {
"numbered parameter is already used in inner block",
PM_ERROR_LEVEL_SYNTAX },
286 [PM_ERR_NUMBERED_PARAMETER_IT] = {
"numbered parameters are not allowed when 'it' is already used",
PM_ERROR_LEVEL_SYNTAX },
287 [PM_ERR_NUMBERED_PARAMETER_ORDINARY] = {
"numbered parameters are not allowed when an ordinary parameter is defined",
PM_ERROR_LEVEL_SYNTAX },
288 [PM_ERR_NUMBERED_PARAMETER_OUTER_BLOCK] = {
"numbered parameter is already used in outer block",
PM_ERROR_LEVEL_SYNTAX },
289 [PM_ERR_OPERATOR_MULTI_ASSIGN] = {
"unexpected operator for a multiple assignment",
PM_ERROR_LEVEL_SYNTAX },
290 [PM_ERR_OPERATOR_WRITE_ARGUMENTS] = {
"unexpected operator after a call with arguments",
PM_ERROR_LEVEL_SYNTAX },
291 [PM_ERR_OPERATOR_WRITE_BLOCK] = {
"unexpected operator after a call with a block",
PM_ERROR_LEVEL_SYNTAX },
292 [PM_ERR_PARAMETER_ASSOC_SPLAT_MULTI] = {
"unexpected multiple `**` splat parameters",
PM_ERROR_LEVEL_SYNTAX },
293 [PM_ERR_PARAMETER_BLOCK_MULTI] = {
"multiple block parameters; only one block is allowed",
PM_ERROR_LEVEL_SYNTAX },
298 [PM_ERR_PARAMETER_NO_DEFAULT] = {
"expected a default value for the parameter",
PM_ERROR_LEVEL_SYNTAX },
299 [PM_ERR_PARAMETER_NO_DEFAULT_KW] = {
"expected a default value for the keyword parameter",
PM_ERROR_LEVEL_SYNTAX },
300 [PM_ERR_PARAMETER_NUMBERED_RESERVED] = {
"%.2s is reserved for numbered parameters",
PM_ERROR_LEVEL_SYNTAX },
302 [PM_ERR_PARAMETER_SPLAT_MULTI] = {
"unexpected multiple `*` splat parameters",
PM_ERROR_LEVEL_SYNTAX },
306 [PM_ERR_PARAMETER_UNEXPECTED_NO_KW] = {
"unexpected **nil; no keywords marker disallowed after keywords",
PM_ERROR_LEVEL_SYNTAX },
307 [PM_ERR_PATTERN_ARRAY_MULTIPLE_RESTS] = {
"unexpected multiple '*' rest patterns in an array pattern",
PM_ERROR_LEVEL_SYNTAX },
309 [PM_ERR_PATTERN_EXPRESSION_AFTER_BRACKET] = {
"expected a pattern expression after the `[` operator",
PM_ERROR_LEVEL_SYNTAX },
310 [PM_ERR_PATTERN_EXPRESSION_AFTER_COMMA] = {
"expected a pattern expression after `,`",
PM_ERROR_LEVEL_SYNTAX },
311 [PM_ERR_PATTERN_EXPRESSION_AFTER_HROCKET] = {
"expected a pattern expression after `=>`",
PM_ERROR_LEVEL_SYNTAX },
312 [PM_ERR_PATTERN_EXPRESSION_AFTER_IN] = {
"expected a pattern expression after the `in` keyword",
PM_ERROR_LEVEL_SYNTAX },
313 [PM_ERR_PATTERN_EXPRESSION_AFTER_KEY] = {
"expected a pattern expression after the key",
PM_ERROR_LEVEL_SYNTAX },
314 [PM_ERR_PATTERN_EXPRESSION_AFTER_PAREN] = {
"expected a pattern expression after the `(` operator",
PM_ERROR_LEVEL_SYNTAX },
315 [PM_ERR_PATTERN_EXPRESSION_AFTER_PIN] = {
"expected a pattern expression after the `^` pin operator",
PM_ERROR_LEVEL_SYNTAX },
316 [PM_ERR_PATTERN_EXPRESSION_AFTER_PIPE] = {
"expected a pattern expression after the `|` operator",
PM_ERROR_LEVEL_SYNTAX },
317 [PM_ERR_PATTERN_EXPRESSION_AFTER_RANGE] = {
"expected a pattern expression after the range operator",
PM_ERROR_LEVEL_SYNTAX },
318 [PM_ERR_PATTERN_EXPRESSION_AFTER_REST] = {
"unexpected pattern expression after the `**` expression",
PM_ERROR_LEVEL_SYNTAX },
319 [PM_ERR_PATTERN_FIND_MISSING_INNER] = {
"find patterns need at least one required inner pattern",
PM_ERROR_LEVEL_SYNTAX },
320 [PM_ERR_PATTERN_HASH_IMPLICIT] = {
"unexpected implicit hash in pattern; use '{' to delineate",
PM_ERROR_LEVEL_SYNTAX },
321 [PM_ERR_PATTERN_HASH_KEY] = {
"unexpected %s; expected a key in the hash pattern",
PM_ERROR_LEVEL_SYNTAX },
323 [PM_ERR_PATTERN_HASH_KEY_INTERPOLATED] = {
"symbol literal with interpolation is not allowed",
PM_ERROR_LEVEL_SYNTAX },
324 [PM_ERR_PATTERN_HASH_KEY_LABEL] = {
"expected a label as the key in the hash pattern",
PM_ERROR_LEVEL_SYNTAX },
325 [PM_ERR_PATTERN_HASH_KEY_LOCALS] = {
"key must be valid as local variables",
PM_ERROR_LEVEL_SYNTAX },
326 [PM_ERR_PATTERN_IDENT_AFTER_HROCKET] = {
"expected an identifier after the `=>` operator",
PM_ERROR_LEVEL_SYNTAX },
327 [PM_ERR_PATTERN_LABEL_AFTER_COMMA] = {
"expected a label after the `,` in the hash pattern",
PM_ERROR_LEVEL_SYNTAX },
329 [PM_ERR_PATTERN_TERM_BRACE] = {
"expected a `}` to close the pattern expression",
PM_ERROR_LEVEL_SYNTAX },
330 [PM_ERR_PATTERN_TERM_BRACKET] = {
"expected a `]` to close the pattern expression",
PM_ERROR_LEVEL_SYNTAX },
331 [PM_ERR_PATTERN_TERM_PAREN] = {
"expected a `)` to close the pattern expression",
PM_ERROR_LEVEL_SYNTAX },
332 [PM_ERR_PIPEPIPEEQ_MULTI_ASSIGN] = {
"unexpected `||=` in a multiple assignment",
PM_ERROR_LEVEL_SYNTAX },
333 [PM_ERR_REGEXP_ENCODING_OPTION_MISMATCH] = {
"regexp encoding option '%c' differs from source encoding '%s'",
PM_ERROR_LEVEL_SYNTAX },
334 [PM_ERR_REGEXP_INCOMPAT_CHAR_ENCODING] = {
"incompatible character encoding: /%.*s/",
PM_ERROR_LEVEL_SYNTAX },
335 [PM_ERR_REGEXP_NON_ESCAPED_MBC] = {
"/.../n has a non escaped non ASCII character in non ASCII-8BIT script: /%.*s/",
PM_ERROR_LEVEL_SYNTAX },
339 [PM_ERR_REGEXP_TERM] = {
"unterminated regexp meets end of file; expected a closing delimiter",
PM_ERROR_LEVEL_SYNTAX },
340 [PM_ERR_REGEXP_UTF8_CHAR_NON_UTF8_REGEXP] = {
"UTF-8 character in non UTF-8 regexp: /%s/",
PM_ERROR_LEVEL_SYNTAX },
342 [PM_ERR_RESCUE_MODIFIER_VALUE] = {
"expected a value after the `rescue` modifier",
PM_ERROR_LEVEL_SYNTAX },
343 [PM_ERR_RESCUE_TERM] = {
"expected a closing delimiter for the `rescue` clause",
PM_ERROR_LEVEL_SYNTAX },
344 [PM_ERR_RESCUE_VARIABLE] = {
"expected an exception variable after `=>` in a rescue statement",
PM_ERROR_LEVEL_SYNTAX },
346 [PM_ERR_SINGLETON_FOR_LITERALS] = {
"cannot define singleton method for literals",
PM_ERROR_LEVEL_SYNTAX },
347 [PM_ERR_STATEMENT_ALIAS] = {
"unexpected an `alias` at a non-statement position",
PM_ERROR_LEVEL_SYNTAX },
348 [PM_ERR_STATEMENT_POSTEXE_END] = {
"unexpected an `END` at a non-statement position",
PM_ERROR_LEVEL_SYNTAX },
349 [PM_ERR_STATEMENT_PREEXE_BEGIN] = {
"unexpected a `BEGIN` at a non-statement position",
PM_ERROR_LEVEL_SYNTAX },
350 [PM_ERR_STATEMENT_UNDEF] = {
"unexpected an `undef` at a non-statement position",
PM_ERROR_LEVEL_SYNTAX },
352 [PM_ERR_STRING_INTERPOLATED_TERM] = {
"unterminated string; expected a closing delimiter for the interpolated string",
PM_ERROR_LEVEL_SYNTAX },
354 [PM_ERR_STRING_LITERAL_TERM] = {
"unexpected %s, expected a string literal terminator",
PM_ERROR_LEVEL_SYNTAX },
356 [PM_ERR_SYMBOL_TERM_DYNAMIC] = {
"unterminated quoted string; expected a closing delimiter for the dynamic symbol",
PM_ERROR_LEVEL_SYNTAX },
357 [PM_ERR_SYMBOL_TERM_INTERPOLATED] = {
"unterminated symbol; expected a closing delimiter for the interpolated symbol",
PM_ERROR_LEVEL_SYNTAX },
358 [PM_ERR_TERNARY_COLON] = {
"expected a `:` after the true expression of a ternary operator",
PM_ERROR_LEVEL_SYNTAX },
359 [PM_ERR_TERNARY_EXPRESSION_FALSE] = {
"expected an expression after `:` in the ternary operator",
PM_ERROR_LEVEL_SYNTAX },
360 [PM_ERR_TERNARY_EXPRESSION_TRUE] = {
"expected an expression after `?` in the ternary operator",
PM_ERROR_LEVEL_SYNTAX },
361 [PM_ERR_UNARY_RECEIVER] = {
"unexpected %s, expected a receiver for unary `%c`",
PM_ERROR_LEVEL_SYNTAX },
362 [PM_ERR_UNARY_DISALLOWED] = {
"unexpected %s; unary calls are not allowed in this context",
PM_ERROR_LEVEL_SYNTAX },
363 [PM_ERR_UNDEF_ARGUMENT] = {
"invalid argument being passed to `undef`; expected a bare word, constant, or symbol argument",
PM_ERROR_LEVEL_SYNTAX },
364 [PM_ERR_UNEXPECTED_BLOCK_ARGUMENT] = {
"block argument should not be given",
PM_ERROR_LEVEL_SYNTAX },
365 [PM_ERR_UNEXPECTED_INDEX_BLOCK] = {
"unexpected block arg given in index assignment; blocks are not allowed in index assignment expressions",
PM_ERROR_LEVEL_SYNTAX },
366 [PM_ERR_UNEXPECTED_INDEX_KEYWORDS] = {
"unexpected keyword arg given in index assignment; keywords are not allowed in index assignment expressions",
PM_ERROR_LEVEL_SYNTAX },
368 [PM_ERR_UNEXPECTED_MULTI_WRITE] = {
"unexpected multiple assignment; multiple assignment is not allowed in this context",
PM_ERROR_LEVEL_SYNTAX },
369 [PM_ERR_UNEXPECTED_RANGE_OPERATOR] = {
"unexpected range operator; .. and ... are non-associative and cannot be chained",
PM_ERROR_LEVEL_SYNTAX },
370 [PM_ERR_UNEXPECTED_SAFE_NAVIGATION] = {
"&. inside multiple assignment destination",
PM_ERROR_LEVEL_SYNTAX },
371 [PM_ERR_UNEXPECTED_TOKEN_CLOSE_CONTEXT] = {
"unexpected %s, assuming it is closing the parent %s",
PM_ERROR_LEVEL_SYNTAX },
379 [PM_ERR_XSTRING_TERM] = {
"expected a closing delimiter for the `%x` or backtick string",
PM_ERROR_LEVEL_SYNTAX },
382 [PM_WARN_AMBIGUOUS_BINARY_OPERATOR] = {
"'%s' after local variable or literal is interpreted as binary operator even though it seems like %s",
PM_WARNING_LEVEL_VERBOSE },
383 [PM_WARN_AMBIGUOUS_FIRST_ARGUMENT_MINUS] = {
"ambiguous first argument; put parentheses or a space even after `-` operator",
PM_WARNING_LEVEL_VERBOSE },
384 [PM_WARN_AMBIGUOUS_FIRST_ARGUMENT_PLUS] = {
"ambiguous first argument; put parentheses or a space even after `+` operator",
PM_WARNING_LEVEL_VERBOSE },
385 [PM_WARN_AMBIGUOUS_PREFIX_AMPERSAND] = {
"ambiguous `&` has been interpreted as an argument prefix",
PM_WARNING_LEVEL_VERBOSE },
386 [PM_WARN_AMBIGUOUS_PREFIX_STAR] = {
"ambiguous `*` has been interpreted as an argument prefix",
PM_WARNING_LEVEL_VERBOSE },
387 [PM_WARN_AMBIGUOUS_PREFIX_STAR_STAR] = {
"ambiguous `**` has been interpreted as an argument prefix",
PM_WARNING_LEVEL_VERBOSE },
388 [PM_WARN_AMBIGUOUS_SLASH] = {
"ambiguous `/`; wrap regexp in parentheses or add a space after `/` operator",
PM_WARNING_LEVEL_VERBOSE },
391 [PM_WARN_DUPLICATED_HASH_KEY] = {
"key %.*s is duplicated and overwritten on line %" PRIi32,
PM_WARNING_LEVEL_DEFAULT },
392 [PM_WARN_DUPLICATED_WHEN_CLAUSE] = {
"'when' clause on line %" PRIi32
" duplicates 'when' clause on line %" PRIi32
" and is ignored",
PM_WARNING_LEVEL_VERBOSE },
393 [PM_WARN_EQUAL_IN_CONDITIONAL_3_3] = {
"found `= literal' in conditional, should be ==",
PM_WARNING_LEVEL_DEFAULT },
397 [PM_WARN_IGNORED_FROZEN_STRING_LITERAL] = {
"'frozen_string_literal' is ignored after any tokens",
PM_WARNING_LEVEL_VERBOSE },
398 [PM_WARN_INDENTATION_MISMATCH] = {
"mismatched indentations at '%.*s' with '%.*s' at %" PRIi32,
PM_WARNING_LEVEL_VERBOSE },
402 [PM_WARN_INVALID_NUMBERED_REFERENCE] = {
"'%.*s' is too big for a number variable, always nil",
PM_WARNING_LEVEL_DEFAULT },
406 [PM_WARN_SHAREABLE_CONSTANT_VALUE_LINE] = {
"'shareable_constant_value' is ignored unless in comment-only line",
PM_WARNING_LEVEL_VERBOSE },
407 [PM_WARN_SHEBANG_CARRIAGE_RETURN] = {
"shebang line ending with \\r may cause problems",
PM_WARNING_LEVEL_DEFAULT },
408 [PM_WARN_UNEXPECTED_CARRIAGE_RETURN] = {
"encountered \\r in middle of line, treated as a mere space",
PM_WARNING_LEVEL_DEFAULT },
420 case PM_ERR_ALIAS_ARGUMENT:
return "alias_argument";
421 case PM_ERR_ALIAS_ARGUMENT_NUMBERED_REFERENCE:
return "alias_argument_numbered_reference";
422 case PM_ERR_AMPAMPEQ_MULTI_ASSIGN:
return "ampampeq_multi_assign";
423 case PM_ERR_ARGUMENT_AFTER_BLOCK:
return "argument_after_block";
424 case PM_ERR_ARGUMENT_AFTER_FORWARDING_ELLIPSES:
return "argument_after_forwarding_ellipses";
425 case PM_ERR_ARGUMENT_BARE_HASH:
return "argument_bare_hash";
426 case PM_ERR_ARGUMENT_BLOCK_FORWARDING:
return "argument_block_forwarding";
427 case PM_ERR_ARGUMENT_BLOCK_MULTI:
return "argument_block_multi";
428 case PM_ERR_ARGUMENT_CONFLICT_AMPERSAND:
return "argument_conflict_ampersand";
429 case PM_ERR_ARGUMENT_CONFLICT_STAR:
return "argument_conflict_star";
430 case PM_ERR_ARGUMENT_CONFLICT_STAR_STAR:
return "argument_conflict_star_star";
431 case PM_ERR_ARGUMENT_FORMAL_CLASS:
return "argument_formal_class";
432 case PM_ERR_ARGUMENT_FORMAL_CONSTANT:
return "argument_formal_constant";
433 case PM_ERR_ARGUMENT_FORMAL_GLOBAL:
return "argument_formal_global";
434 case PM_ERR_ARGUMENT_FORMAL_IVAR:
return "argument_formal_ivar";
435 case PM_ERR_ARGUMENT_FORWARDING_UNBOUND:
return "argument_forwarding_unbound";
436 case PM_ERR_ARGUMENT_NO_FORWARDING_AMPERSAND:
return "argument_no_forwarding_ampersand";
437 case PM_ERR_ARGUMENT_NO_FORWARDING_ELLIPSES:
return "argument_no_forwarding_ellipses";
438 case PM_ERR_ARGUMENT_NO_FORWARDING_STAR:
return "argument_no_forwarding_star";
439 case PM_ERR_ARGUMENT_NO_FORWARDING_STAR_STAR:
return "argument_no_forwarding_star_star";
440 case PM_ERR_ARGUMENT_SPLAT_AFTER_ASSOC_SPLAT:
return "argument_splat_after_assoc_splat";
441 case PM_ERR_ARGUMENT_SPLAT_AFTER_SPLAT:
return "argument_splat_after_splat";
442 case PM_ERR_ARGUMENT_TERM_PAREN:
return "argument_term_paren";
443 case PM_ERR_ARGUMENT_UNEXPECTED_BLOCK:
return "argument_unexpected_block";
444 case PM_ERR_ARRAY_ELEMENT:
return "array_element";
445 case PM_ERR_ARRAY_EXPRESSION:
return "array_expression";
446 case PM_ERR_ARRAY_EXPRESSION_AFTER_STAR:
return "array_expression_after_star";
447 case PM_ERR_ARRAY_SEPARATOR:
return "array_separator";
448 case PM_ERR_ARRAY_TERM:
return "array_term";
449 case PM_ERR_BEGIN_LONELY_ELSE:
return "begin_lonely_else";
450 case PM_ERR_BEGIN_TERM:
return "begin_term";
451 case PM_ERR_BEGIN_UPCASE_BRACE:
return "begin_upcase_brace";
452 case PM_ERR_BEGIN_UPCASE_TERM:
return "begin_upcase_term";
453 case PM_ERR_BEGIN_UPCASE_TOPLEVEL:
return "begin_upcase_toplevel";
454 case PM_ERR_BLOCK_PARAM_LOCAL_VARIABLE:
return "block_param_local_variable";
455 case PM_ERR_BLOCK_PARAM_PIPE_TERM:
return "block_param_pipe_term";
456 case PM_ERR_BLOCK_TERM_BRACE:
return "block_term_brace";
457 case PM_ERR_BLOCK_TERM_END:
return "block_term_end";
458 case PM_ERR_CANNOT_PARSE_EXPRESSION:
return "cannot_parse_expression";
459 case PM_ERR_CANNOT_PARSE_STRING_PART:
return "cannot_parse_string_part";
460 case PM_ERR_CASE_EXPRESSION_AFTER_CASE:
return "case_expression_after_case";
461 case PM_ERR_CASE_EXPRESSION_AFTER_WHEN:
return "case_expression_after_when";
462 case PM_ERR_CASE_MATCH_MISSING_PREDICATE:
return "case_match_missing_predicate";
463 case PM_ERR_CASE_MISSING_CONDITIONS:
return "case_missing_conditions";
464 case PM_ERR_CASE_TERM:
return "case_term";
465 case PM_ERR_CLASS_IN_METHOD:
return "class_in_method";
466 case PM_ERR_CLASS_NAME:
return "class_name";
467 case PM_ERR_CLASS_SUPERCLASS:
return "class_superclass";
468 case PM_ERR_CLASS_TERM:
return "class_term";
469 case PM_ERR_CLASS_UNEXPECTED_END:
return "class_unexpected_end";
470 case PM_ERR_CLASS_VARIABLE_BARE:
return "class_variable_bare";
471 case PM_ERR_CONDITIONAL_ELSIF_PREDICATE:
return "conditional_elsif_predicate";
472 case PM_ERR_CONDITIONAL_IF_PREDICATE:
return "conditional_if_predicate";
473 case PM_ERR_CONDITIONAL_PREDICATE_TERM:
return "conditional_predicate_term";
474 case PM_ERR_CONDITIONAL_TERM:
return "conditional_term";
475 case PM_ERR_CONDITIONAL_TERM_ELSE:
return "conditional_term_else";
476 case PM_ERR_CONDITIONAL_UNLESS_PREDICATE:
return "conditional_unless_predicate";
477 case PM_ERR_CONDITIONAL_UNTIL_PREDICATE:
return "conditional_until_predicate";
478 case PM_ERR_CONDITIONAL_WHILE_PREDICATE:
return "conditional_while_predicate";
479 case PM_ERR_CONSTANT_PATH_COLON_COLON_CONSTANT:
return "constant_path_colon_colon_constant";
480 case PM_ERR_DEF_ENDLESS:
return "def_endless";
481 case PM_ERR_DEF_ENDLESS_SETTER:
return "def_endless_setter";
482 case PM_ERR_DEF_NAME:
return "def_name";
483 case PM_ERR_DEF_PARAMS_TERM:
return "def_params_term";
484 case PM_ERR_DEF_PARAMS_TERM_PAREN:
return "def_params_term_paren";
485 case PM_ERR_DEF_RECEIVER:
return "def_receiver";
486 case PM_ERR_DEF_RECEIVER_TERM:
return "def_receiver_term";
487 case PM_ERR_DEF_TERM:
return "def_term";
488 case PM_ERR_DEFINED_EXPRESSION:
return "defined_expression";
489 case PM_ERR_EMBDOC_TERM:
return "embdoc_term";
490 case PM_ERR_EMBEXPR_END:
return "embexpr_end";
491 case PM_ERR_EMBVAR_INVALID:
return "embvar_invalid";
492 case PM_ERR_END_UPCASE_BRACE:
return "end_upcase_brace";
493 case PM_ERR_END_UPCASE_TERM:
return "end_upcase_term";
494 case PM_ERR_ESCAPE_INVALID_CONTROL:
return "escape_invalid_control";
495 case PM_ERR_ESCAPE_INVALID_CONTROL_REPEAT:
return "escape_invalid_control_repeat";
496 case PM_ERR_ESCAPE_INVALID_HEXADECIMAL:
return "escape_invalid_hexadecimal";
497 case PM_ERR_ESCAPE_INVALID_META:
return "escape_invalid_meta";
498 case PM_ERR_ESCAPE_INVALID_META_REPEAT:
return "escape_invalid_meta_repeat";
499 case PM_ERR_ESCAPE_INVALID_UNICODE:
return "escape_invalid_unicode";
500 case PM_ERR_ESCAPE_INVALID_UNICODE_CM_FLAGS:
return "escape_invalid_unicode_cm_flags";
501 case PM_ERR_ESCAPE_INVALID_UNICODE_LIST:
return "escape_invalid_unicode_list";
502 case PM_ERR_ESCAPE_INVALID_UNICODE_LITERAL:
return "escape_invalid_unicode_literal";
503 case PM_ERR_ESCAPE_INVALID_UNICODE_LONG:
return "escape_invalid_unicode_long";
504 case PM_ERR_ESCAPE_INVALID_UNICODE_SHORT:
return "escape_invalid_unicode_short";
505 case PM_ERR_ESCAPE_INVALID_UNICODE_TERM:
return "escape_invalid_unicode_term";
506 case PM_ERR_EXPECT_ARGUMENT:
return "expect_argument";
507 case PM_ERR_EXPECT_EOL_AFTER_STATEMENT:
return "expect_eol_after_statement";
508 case PM_ERR_EXPECT_EXPRESSION_AFTER_AMPAMPEQ:
return "expect_expression_after_ampampeq";
509 case PM_ERR_EXPECT_EXPRESSION_AFTER_COMMA:
return "expect_expression_after_comma";
510 case PM_ERR_EXPECT_EXPRESSION_AFTER_EQUAL:
return "expect_expression_after_equal";
511 case PM_ERR_EXPECT_EXPRESSION_AFTER_LESS_LESS:
return "expect_expression_after_less_less";
512 case PM_ERR_EXPECT_EXPRESSION_AFTER_LPAREN:
return "expect_expression_after_lparen";
513 case PM_ERR_EXPECT_EXPRESSION_AFTER_OPERATOR:
return "expect_expression_after_operator";
514 case PM_ERR_EXPECT_EXPRESSION_AFTER_PIPEPIPEEQ:
return "expect_expression_after_pipepipeeq";
515 case PM_ERR_EXPECT_EXPRESSION_AFTER_QUESTION:
return "expect_expression_after_question";
516 case PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT:
return "expect_expression_after_splat";
517 case PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT_HASH:
return "expect_expression_after_splat_hash";
518 case PM_ERR_EXPECT_EXPRESSION_AFTER_STAR:
return "expect_expression_after_star";
519 case PM_ERR_EXPECT_FOR_DELIMITER:
return "expect_for_delimiter";
520 case PM_ERR_EXPECT_IDENT_REQ_PARAMETER:
return "expect_ident_req_parameter";
521 case PM_ERR_EXPECT_IN_DELIMITER:
return "expect_in_delimiter";
522 case PM_ERR_EXPECT_LPAREN_REQ_PARAMETER:
return "expect_lparen_req_parameter";
523 case PM_ERR_EXPECT_MESSAGE:
return "expect_message";
524 case PM_ERR_EXPECT_RBRACKET:
return "expect_rbracket";
525 case PM_ERR_EXPECT_RPAREN:
return "expect_rparen";
526 case PM_ERR_EXPECT_RPAREN_AFTER_MULTI:
return "expect_rparen_after_multi";
527 case PM_ERR_EXPECT_RPAREN_REQ_PARAMETER:
return "expect_rparen_req_parameter";
528 case PM_ERR_EXPECT_SINGLETON_CLASS_DELIMITER:
return "expect_singleton_class_delimiter";
529 case PM_ERR_EXPECT_STRING_CONTENT:
return "expect_string_content";
530 case PM_ERR_EXPECT_WHEN_DELIMITER:
return "expect_when_delimiter";
531 case PM_ERR_EXPRESSION_BARE_HASH:
return "expression_bare_hash";
532 case PM_ERR_EXPRESSION_NOT_WRITABLE:
return "expression_not_writable";
533 case PM_ERR_EXPRESSION_NOT_WRITABLE_ENCODING:
return "expression_not_writable_encoding";
534 case PM_ERR_EXPRESSION_NOT_WRITABLE_FALSE:
return "expression_not_writable_false";
535 case PM_ERR_EXPRESSION_NOT_WRITABLE_FILE:
return "expression_not_writable_file";
536 case PM_ERR_EXPRESSION_NOT_WRITABLE_LINE:
return "expression_not_writable_line";
537 case PM_ERR_EXPRESSION_NOT_WRITABLE_NIL:
return "expression_not_writable_nil";
538 case PM_ERR_EXPRESSION_NOT_WRITABLE_NUMBERED:
return "expression_not_writable_numbered";
539 case PM_ERR_EXPRESSION_NOT_WRITABLE_SELF:
return "expression_not_writable_self";
540 case PM_ERR_EXPRESSION_NOT_WRITABLE_TRUE:
return "expression_not_writable_true";
541 case PM_ERR_FLOAT_PARSE:
return "float_parse";
542 case PM_ERR_FOR_COLLECTION:
return "for_collection";
543 case PM_ERR_FOR_IN:
return "for_in";
544 case PM_ERR_FOR_INDEX:
return "for_index";
545 case PM_ERR_FOR_TERM:
return "for_term";
546 case PM_ERR_GLOBAL_VARIABLE_BARE:
return "global_variable_bare";
547 case PM_ERR_HASH_EXPRESSION_AFTER_LABEL:
return "hash_expression_after_label";
548 case PM_ERR_HASH_KEY:
return "hash_key";
549 case PM_ERR_HASH_ROCKET:
return "hash_rocket";
550 case PM_ERR_HASH_TERM:
return "hash_term";
551 case PM_ERR_HASH_VALUE:
return "hash_value";
552 case PM_ERR_HEREDOC_IDENTIFIER:
return "heredoc_identifier";
553 case PM_ERR_HEREDOC_TERM:
return "heredoc_term";
554 case PM_ERR_INCOMPLETE_QUESTION_MARK:
return "incomplete_question_mark";
555 case PM_ERR_INCOMPLETE_VARIABLE_CLASS:
return "incomplete_variable_class";
556 case PM_ERR_INCOMPLETE_VARIABLE_CLASS_3_3:
return "incomplete_variable_class_3_3";
557 case PM_ERR_INCOMPLETE_VARIABLE_INSTANCE:
return "incomplete_variable_instance";
558 case PM_ERR_INCOMPLETE_VARIABLE_INSTANCE_3_3:
return "incomplete_variable_instance_3_3";
559 case PM_ERR_INSTANCE_VARIABLE_BARE:
return "instance_variable_bare";
560 case PM_ERR_INVALID_BLOCK_EXIT:
return "invalid_block_exit";
561 case PM_ERR_INVALID_CHARACTER:
return "invalid_character";
562 case PM_ERR_INVALID_COMMA:
return "invalid_comma";
563 case PM_ERR_INVALID_ENCODING_MAGIC_COMMENT:
return "invalid_encoding_magic_comment";
564 case PM_ERR_INVALID_ESCAPE_CHARACTER:
return "invalid_escape_character";
565 case PM_ERR_INVALID_FLOAT_EXPONENT:
return "invalid_float_exponent";
566 case PM_ERR_INVALID_LOCAL_VARIABLE_READ:
return "invalid_local_variable_read";
567 case PM_ERR_INVALID_LOCAL_VARIABLE_WRITE:
return "invalid_local_variable_write";
568 case PM_ERR_INVALID_MULTIBYTE_CHAR:
return "invalid_multibyte_char";
569 case PM_ERR_INVALID_MULTIBYTE_CHARACTER:
return "invalid_multibyte_character";
570 case PM_ERR_INVALID_MULTIBYTE_ESCAPE:
return "invalid_multibyte_escape";
571 case PM_ERR_INVALID_NUMBER_BINARY:
return "invalid_number_binary";
572 case PM_ERR_INVALID_NUMBER_DECIMAL:
return "invalid_number_decimal";
573 case PM_ERR_INVALID_NUMBER_FRACTION:
return "invalid_number_fraction";
574 case PM_ERR_INVALID_NUMBER_HEXADECIMAL:
return "invalid_number_hexadecimal";
575 case PM_ERR_INVALID_NUMBER_OCTAL:
return "invalid_number_octal";
576 case PM_ERR_INVALID_NUMBER_UNDERSCORE_INNER:
return "invalid_number_underscore_inner";
577 case PM_ERR_INVALID_NUMBER_UNDERSCORE_TRAILING:
return "invalid_number_underscore_trailing";
578 case PM_ERR_INVALID_PERCENT:
return "invalid_percent";
579 case PM_ERR_INVALID_PERCENT_EOF:
return "invalid_percent_eof";
580 case PM_ERR_INVALID_PRINTABLE_CHARACTER:
return "invalid_printable_character";
581 case PM_ERR_INVALID_RETRY_AFTER_ELSE:
return "invalid_retry_after_else";
582 case PM_ERR_INVALID_RETRY_AFTER_ENSURE:
return "invalid_retry_after_ensure";
583 case PM_ERR_INVALID_RETRY_WITHOUT_RESCUE:
return "invalid_retry_without_rescue";
584 case PM_ERR_INVALID_SYMBOL:
return "invalid_symbol";
585 case PM_ERR_INVALID_VARIABLE_GLOBAL:
return "invalid_variable_global";
586 case PM_ERR_INVALID_VARIABLE_GLOBAL_3_3:
return "invalid_variable_global_3_3";
587 case PM_ERR_INVALID_YIELD:
return "invalid_yield";
588 case PM_ERR_IT_NOT_ALLOWED_NUMBERED:
return "it_not_allowed_numbered";
589 case PM_ERR_IT_NOT_ALLOWED_ORDINARY:
return "it_not_allowed_ordinary";
590 case PM_ERR_LAMBDA_OPEN:
return "lambda_open";
591 case PM_ERR_LAMBDA_TERM_BRACE:
return "lambda_term_brace";
592 case PM_ERR_LAMBDA_TERM_END:
return "lambda_term_end";
593 case PM_ERR_LIST_I_LOWER_ELEMENT:
return "list_i_lower_element";
594 case PM_ERR_LIST_I_LOWER_TERM:
return "list_i_lower_term";
595 case PM_ERR_LIST_I_UPPER_ELEMENT:
return "list_i_upper_element";
596 case PM_ERR_LIST_I_UPPER_TERM:
return "list_i_upper_term";
597 case PM_ERR_LIST_W_LOWER_ELEMENT:
return "list_w_lower_element";
598 case PM_ERR_LIST_W_LOWER_TERM:
return "list_w_lower_term";
599 case PM_ERR_LIST_W_UPPER_ELEMENT:
return "list_w_upper_element";
600 case PM_ERR_LIST_W_UPPER_TERM:
return "list_w_upper_term";
601 case PM_ERR_MALLOC_FAILED:
return "malloc_failed";
602 case PM_ERR_MIXED_ENCODING:
return "mixed_encoding";
603 case PM_ERR_MODULE_IN_METHOD:
return "module_in_method";
604 case PM_ERR_MODULE_NAME:
return "module_name";
605 case PM_ERR_MODULE_TERM:
return "module_term";
606 case PM_ERR_MULTI_ASSIGN_MULTI_SPLATS:
return "multi_assign_multi_splats";
607 case PM_ERR_MULTI_ASSIGN_UNEXPECTED_REST:
return "multi_assign_unexpected_rest";
608 case PM_ERR_NESTING_TOO_DEEP:
return "nesting_too_deep";
609 case PM_ERR_NO_LOCAL_VARIABLE:
return "no_local_variable";
610 case PM_ERR_NON_ASSOCIATIVE_OPERATOR:
return "non_associative_operator";
611 case PM_ERR_NOT_EXPRESSION:
return "not_expression";
612 case PM_ERR_NUMBER_LITERAL_UNDERSCORE:
return "number_literal_underscore";
613 case PM_ERR_NUMBERED_PARAMETER_INNER_BLOCK:
return "numbered_parameter_inner_block";
614 case PM_ERR_NUMBERED_PARAMETER_IT:
return "numbered_parameter_it";
615 case PM_ERR_NUMBERED_PARAMETER_ORDINARY:
return "numbered_parameter_ordinary";
616 case PM_ERR_NUMBERED_PARAMETER_OUTER_BLOCK:
return "numbered_parameter_outer_block";
617 case PM_ERR_OPERATOR_MULTI_ASSIGN:
return "operator_multi_assign";
618 case PM_ERR_OPERATOR_WRITE_ARGUMENTS:
return "operator_write_arguments";
619 case PM_ERR_OPERATOR_WRITE_BLOCK:
return "operator_write_block";
620 case PM_ERR_PARAMETER_ASSOC_SPLAT_MULTI:
return "parameter_assoc_splat_multi";
621 case PM_ERR_PARAMETER_BLOCK_MULTI:
return "parameter_block_multi";
622 case PM_ERR_PARAMETER_CIRCULAR:
return "parameter_circular";
623 case PM_ERR_PARAMETER_FORWARDING_AFTER_REST:
return "parameter_forwarding_after_rest";
624 case PM_ERR_PARAMETER_METHOD_NAME:
return "parameter_method_name";
625 case PM_ERR_PARAMETER_NAME_DUPLICATED:
return "parameter_name_duplicated";
626 case PM_ERR_PARAMETER_NO_DEFAULT:
return "parameter_no_default";
627 case PM_ERR_PARAMETER_NO_DEFAULT_KW:
return "parameter_no_default_kw";
628 case PM_ERR_PARAMETER_NUMBERED_RESERVED:
return "parameter_numbered_reserved";
629 case PM_ERR_PARAMETER_ORDER:
return "parameter_order";
630 case PM_ERR_PARAMETER_SPLAT_MULTI:
return "parameter_splat_multi";
631 case PM_ERR_PARAMETER_STAR:
return "parameter_star";
632 case PM_ERR_PARAMETER_UNEXPECTED_FWD:
return "parameter_unexpected_fwd";
633 case PM_ERR_PARAMETER_UNEXPECTED_NO_KW:
return "parameter_unexpected_no_kw";
634 case PM_ERR_PARAMETER_WILD_LOOSE_COMMA:
return "parameter_wild_loose_comma";
635 case PM_ERR_PATTERN_ARRAY_MULTIPLE_RESTS:
return "pattern_array_multiple_rests";
636 case PM_ERR_PATTERN_CAPTURE_DUPLICATE:
return "pattern_capture_duplicate";
637 case PM_ERR_PATTERN_EXPRESSION_AFTER_BRACKET:
return "pattern_expression_after_bracket";
638 case PM_ERR_PATTERN_EXPRESSION_AFTER_COMMA:
return "pattern_expression_after_comma";
639 case PM_ERR_PATTERN_EXPRESSION_AFTER_HROCKET:
return "pattern_expression_after_hrocket";
640 case PM_ERR_PATTERN_EXPRESSION_AFTER_IN:
return "pattern_expression_after_in";
641 case PM_ERR_PATTERN_EXPRESSION_AFTER_KEY:
return "pattern_expression_after_key";
642 case PM_ERR_PATTERN_EXPRESSION_AFTER_PAREN:
return "pattern_expression_after_paren";
643 case PM_ERR_PATTERN_EXPRESSION_AFTER_PIN:
return "pattern_expression_after_pin";
644 case PM_ERR_PATTERN_EXPRESSION_AFTER_PIPE:
return "pattern_expression_after_pipe";
645 case PM_ERR_PATTERN_EXPRESSION_AFTER_RANGE:
return "pattern_expression_after_range";
646 case PM_ERR_PATTERN_EXPRESSION_AFTER_REST:
return "pattern_expression_after_rest";
647 case PM_ERR_PATTERN_FIND_MISSING_INNER:
return "pattern_find_missing_inner";
648 case PM_ERR_PATTERN_HASH_IMPLICIT:
return "pattern_hash_implicit";
649 case PM_ERR_PATTERN_HASH_KEY:
return "pattern_hash_key";
650 case PM_ERR_PATTERN_HASH_KEY_DUPLICATE:
return "pattern_hash_key_duplicate";
651 case PM_ERR_PATTERN_HASH_KEY_INTERPOLATED:
return "pattern_hash_key_interpolated";
652 case PM_ERR_PATTERN_HASH_KEY_LABEL:
return "pattern_hash_key_label";
653 case PM_ERR_PATTERN_HASH_KEY_LOCALS:
return "pattern_hash_key_locals";
654 case PM_ERR_PATTERN_IDENT_AFTER_HROCKET:
return "pattern_ident_after_hrocket";
655 case PM_ERR_PATTERN_LABEL_AFTER_COMMA:
return "pattern_label_after_comma";
656 case PM_ERR_PATTERN_REST:
return "pattern_rest";
657 case PM_ERR_PATTERN_TERM_BRACE:
return "pattern_term_brace";
658 case PM_ERR_PATTERN_TERM_BRACKET:
return "pattern_term_bracket";
659 case PM_ERR_PATTERN_TERM_PAREN:
return "pattern_term_paren";
660 case PM_ERR_PIPEPIPEEQ_MULTI_ASSIGN:
return "pipepipeeq_multi_assign";
661 case PM_ERR_REGEXP_ENCODING_OPTION_MISMATCH:
return "regexp_encoding_option_mismatch";
662 case PM_ERR_REGEXP_INCOMPAT_CHAR_ENCODING:
return "regexp_incompat_char_encoding";
663 case PM_ERR_REGEXP_INVALID_UNICODE_RANGE:
return "regexp_invalid_unicode_range";
664 case PM_ERR_REGEXP_NON_ESCAPED_MBC:
return "regexp_non_escaped_mbc";
665 case PM_ERR_REGEXP_PARSE_ERROR:
return "regexp_parse_error";
666 case PM_ERR_REGEXP_TERM:
return "regexp_term";
667 case PM_ERR_REGEXP_UNKNOWN_OPTIONS:
return "regexp_unknown_options";
668 case PM_ERR_REGEXP_UTF8_CHAR_NON_UTF8_REGEXP:
return "regexp_utf8_char_non_utf8_regexp";
669 case PM_ERR_RESCUE_EXPRESSION:
return "rescue_expression";
670 case PM_ERR_RESCUE_MODIFIER_VALUE:
return "rescue_modifier_value";
671 case PM_ERR_RESCUE_TERM:
return "rescue_term";
672 case PM_ERR_RESCUE_VARIABLE:
return "rescue_variable";
673 case PM_ERR_RETURN_INVALID:
return "return_invalid";
674 case PM_ERR_SCRIPT_NOT_FOUND:
return "script_not_found";
675 case PM_ERR_SINGLETON_FOR_LITERALS:
return "singleton_for_literals";
676 case PM_ERR_STATEMENT_ALIAS:
return "statement_alias";
677 case PM_ERR_STATEMENT_POSTEXE_END:
return "statement_postexe_end";
678 case PM_ERR_STATEMENT_PREEXE_BEGIN:
return "statement_preexe_begin";
679 case PM_ERR_STATEMENT_UNDEF:
return "statement_undef";
680 case PM_ERR_STRING_CONCATENATION:
return "string_concatenation";
681 case PM_ERR_STRING_INTERPOLATED_TERM:
return "string_interpolated_term";
682 case PM_ERR_STRING_LITERAL_EOF:
return "string_literal_eof";
683 case PM_ERR_STRING_LITERAL_TERM:
return "string_literal_term";
684 case PM_ERR_SYMBOL_INVALID:
return "symbol_invalid";
685 case PM_ERR_SYMBOL_TERM_DYNAMIC:
return "symbol_term_dynamic";
686 case PM_ERR_SYMBOL_TERM_INTERPOLATED:
return "symbol_term_interpolated";
687 case PM_ERR_TERNARY_COLON:
return "ternary_colon";
688 case PM_ERR_TERNARY_EXPRESSION_FALSE:
return "ternary_expression_false";
689 case PM_ERR_TERNARY_EXPRESSION_TRUE:
return "ternary_expression_true";
690 case PM_ERR_UNARY_DISALLOWED:
return "unary_disallowed";
691 case PM_ERR_UNARY_RECEIVER:
return "unary_receiver";
692 case PM_ERR_UNDEF_ARGUMENT:
return "undef_argument";
693 case PM_ERR_UNEXPECTED_BLOCK_ARGUMENT:
return "unexpected_block_argument";
694 case PM_ERR_UNEXPECTED_INDEX_BLOCK:
return "unexpected_index_block";
695 case PM_ERR_UNEXPECTED_INDEX_KEYWORDS:
return "unexpected_index_keywords";
696 case PM_ERR_UNEXPECTED_LABEL:
return "unexpected_label";
697 case PM_ERR_UNEXPECTED_MULTI_WRITE:
return "unexpected_multi_write";
698 case PM_ERR_UNEXPECTED_RANGE_OPERATOR:
return "unexpected_range_operator";
699 case PM_ERR_UNEXPECTED_SAFE_NAVIGATION:
return "unexpected_safe_navigation";
700 case PM_ERR_UNEXPECTED_TOKEN_CLOSE_CONTEXT:
return "unexpected_token_close_context";
701 case PM_ERR_UNEXPECTED_TOKEN_IGNORE:
return "unexpected_token_ignore";
702 case PM_ERR_UNTIL_TERM:
return "until_term";
703 case PM_ERR_VOID_EXPRESSION:
return "void_expression";
704 case PM_ERR_WHILE_TERM:
return "while_term";
705 case PM_ERR_WRITE_TARGET_IN_METHOD:
return "write_target_in_method";
706 case PM_ERR_WRITE_TARGET_READONLY:
return "write_target_readonly";
707 case PM_ERR_WRITE_TARGET_UNEXPECTED:
return "write_target_unexpected";
708 case PM_ERR_XSTRING_TERM:
return "xstring_term";
709 case PM_WARN_AMBIGUOUS_BINARY_OPERATOR:
return "ambiguous_binary_operator";
710 case PM_WARN_AMBIGUOUS_FIRST_ARGUMENT_MINUS:
return "ambiguous_first_argument_minus";
711 case PM_WARN_AMBIGUOUS_FIRST_ARGUMENT_PLUS:
return "ambiguous_first_argument_plus";
712 case PM_WARN_AMBIGUOUS_PREFIX_AMPERSAND:
return "ambiguous_prefix_ampersand";
713 case PM_WARN_AMBIGUOUS_PREFIX_STAR:
return "ambiguous_prefix_star";
714 case PM_WARN_AMBIGUOUS_PREFIX_STAR_STAR:
return "ambiguous_prefix_star_star";
715 case PM_WARN_AMBIGUOUS_SLASH:
return "ambiguous_slash";
716 case PM_WARN_COMPARISON_AFTER_COMPARISON:
return "comparison_after_comparison";
717 case PM_WARN_DOT_DOT_DOT_EOL:
return "dot_dot_dot_eol";
718 case PM_WARN_EQUAL_IN_CONDITIONAL:
return "equal_in_conditional";
719 case PM_WARN_EQUAL_IN_CONDITIONAL_3_3:
return "equal_in_conditional_3_3";
720 case PM_WARN_END_IN_METHOD:
return "end_in_method";
721 case PM_WARN_DUPLICATED_HASH_KEY:
return "duplicated_hash_key";
722 case PM_WARN_DUPLICATED_WHEN_CLAUSE:
return "duplicated_when_clause";
723 case PM_WARN_FLOAT_OUT_OF_RANGE:
return "float_out_of_range";
724 case PM_WARN_IGNORED_FROZEN_STRING_LITERAL:
return "ignored_frozen_string_literal";
725 case PM_WARN_INDENTATION_MISMATCH:
return "indentation_mismatch";
726 case PM_WARN_INTEGER_IN_FLIP_FLOP:
return "integer_in_flip_flop";
727 case PM_WARN_INVALID_CHARACTER:
return "invalid_character";
728 case PM_WARN_INVALID_MAGIC_COMMENT_VALUE:
return "invalid_magic_comment_value";
729 case PM_WARN_INVALID_NUMBERED_REFERENCE:
return "invalid_numbered_reference";
730 case PM_WARN_KEYWORD_EOL:
return "keyword_eol";
731 case PM_WARN_LITERAL_IN_CONDITION_DEFAULT:
return "literal_in_condition_default";
732 case PM_WARN_LITERAL_IN_CONDITION_VERBOSE:
return "literal_in_condition_verbose";
733 case PM_WARN_SHAREABLE_CONSTANT_VALUE_LINE:
return "shareable_constant_value_line";
734 case PM_WARN_SHEBANG_CARRIAGE_RETURN:
return "shebang_carriage_return";
735 case PM_WARN_UNEXPECTED_CARRIAGE_RETURN:
return "unexpected_carriage_return";
736 case PM_WARN_UNREACHABLE_STATEMENT:
return "unreachable_statement";
737 case PM_WARN_UNUSED_LOCAL_VARIABLE:
return "unused_local_variable";
738 case PM_WARN_VOID_STATEMENT:
return "void_statement";
741 assert(
false &&
"unreachable");
745 static inline const char *
747 assert(diag_id < PM_DIAGNOSTIC_ID_MAX);
749 const char *message = diagnostic_messages[diag_id].
message;
755 static inline uint8_t
757 assert(diag_id < PM_DIAGNOSTIC_ID_MAX);
759 return (uint8_t) diagnostic_messages[diag_id].
level;
768 if (diagnostic == NULL)
return false;
773 .message = pm_diagnostic_message(diag_id),
775 .level = pm_diagnostic_level(diag_id)
789 va_start(arguments, diag_id);
791 const char *format = pm_diagnostic_message(diag_id);
792 int result = vsnprintf(NULL, 0, format, arguments);
800 if (diagnostic == NULL) {
804 size_t length = (size_t) (result + 1);
805 char *message = (
char *)
xmalloc(length);
806 if (message == NULL) {
811 va_start(arguments, diag_id);
812 vsnprintf(message, length, format, arguments);
820 .level = pm_diagnostic_level(diag_id)
834 while (node != NULL) {
A list of diagnostics generated during parsing.
void pm_diagnostic_list_free(pm_list_t *list)
Deallocate the internal state of the given diagnostic list.
bool pm_diagnostic_list_append_format(pm_list_t *list, const uint8_t *start, const uint8_t *end, pm_diagnostic_id_t diag_id,...)
Append a diagnostic to the given list of diagnostics that is using a format string for its message.
pm_diagnostic_id_t
The diagnostic IDs of all of the diagnostics, used to communicate the types of errors between the par...
bool pm_diagnostic_list_append(pm_list_t *list, const uint8_t *start, const uint8_t *end, pm_diagnostic_id_t diag_id)
Append a diagnostic to the given list of diagnostics that is using shared memory for its message.
@ PM_WARNING_LEVEL_DEFAULT
For warnings which should be emitted if $VERBOSE != nil.
@ PM_WARNING_LEVEL_VERBOSE
For warnings which should be emitted if $VERBOSE == true.
const char * pm_diagnostic_id_human(pm_diagnostic_id_t diag_id)
Get the human-readable name of the given diagnostic ID.
@ PM_ERROR_LEVEL_ARGUMENT
For errors that should raise an argument error.
@ PM_ERROR_LEVEL_LOAD
For errors that should raise a load error.
@ PM_ERROR_LEVEL_SYNTAX
For errors that should raise a syntax error.
#define xfree
Old name of ruby_xfree.
#define xmalloc
Old name of ruby_xmalloc.
#define xcalloc
Old name of ruby_xcalloc.
void pm_list_append(pm_list_t *list, pm_list_node_t *node)
Append a node to the given list.
This struct holds the data for each diagnostic.
uint8_t level
The level associated with the diagnostic.
const char * message
The message associated with the diagnostic.
This struct represents a diagnostic generated during parsing.
pm_location_t location
The location of the diagnostic in the source.
const char * message
The message associated with the diagnostic.
pm_list_node_t node
The embedded base node.
bool owned
Whether or not the memory related to the message of this diagnostic is owned by this diagnostic.
This struct represents an abstract linked list that provides common functionality.
struct pm_list_node * next
A pointer to the next node in the list.
This represents the overall linked list.
pm_list_node_t * head
A pointer to the head of the list.