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");
745static inline const char *
747 assert(diag_id < PM_DIAGNOSTIC_ID_MAX);
749 const char *message = diagnostic_messages[diag_id].message;
757 assert(diag_id < PM_DIAGNOSTIC_ID_MAX);
759 return (uint8_t) diagnostic_messages[diag_id].level;
768 if (diagnostic == NULL)
return false;
771 .location = { start, end },
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);
816 .location = { start, end },
820 .level = pm_diagnostic_level(diag_id)
834 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.
struct pm_list_node pm_list_node_t
This struct represents an abstract linked list that provides common functionality.
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.
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.
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.