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