Ruby 4.0.5p0 (2026-05-20 revision 64336ffd0ee9e1f4c05891695a3d7b49cb709721)
diagnostic.h
Go to the documentation of this file.
1/* :markup: markdown */
2
3/*----------------------------------------------------------------------------*/
4/* This file is generated by the templates/template.rb script and should not */
5/* be modified manually. See */
6/* templates/include/prism/diagnostic.h.erb */
7/* if you are looking to modify the */
8/* template */
9/*----------------------------------------------------------------------------*/
10
16#ifndef PRISM_DIAGNOSTIC_H
17#define PRISM_DIAGNOSTIC_H
18
19#include "prism/ast.h"
20#include "prism/defines.h"
21#include "prism/util/pm_list.h"
22
23#include <stdbool.h>
24#include <stdlib.h>
25#include <assert.h>
26
31typedef enum {
32 // These are the error diagnostics.
33 PM_ERR_ALIAS_ARGUMENT,
34 PM_ERR_ALIAS_ARGUMENT_NUMBERED_REFERENCE,
35 PM_ERR_AMPAMPEQ_MULTI_ASSIGN,
36 PM_ERR_ARGUMENT_AFTER_BLOCK,
37 PM_ERR_ARGUMENT_AFTER_FORWARDING_ELLIPSES,
38 PM_ERR_ARGUMENT_BARE_HASH,
39 PM_ERR_ARGUMENT_BLOCK_FORWARDING,
40 PM_ERR_ARGUMENT_BLOCK_MULTI,
41 PM_ERR_ARGUMENT_CONFLICT_AMPERSAND,
42 PM_ERR_ARGUMENT_CONFLICT_STAR,
43 PM_ERR_ARGUMENT_CONFLICT_STAR_STAR,
44 PM_ERR_ARGUMENT_FORMAL_CLASS,
45 PM_ERR_ARGUMENT_FORMAL_CONSTANT,
46 PM_ERR_ARGUMENT_FORMAL_GLOBAL,
47 PM_ERR_ARGUMENT_FORMAL_IVAR,
48 PM_ERR_ARGUMENT_FORWARDING_UNBOUND,
49 PM_ERR_ARGUMENT_NO_FORWARDING_AMPERSAND,
50 PM_ERR_ARGUMENT_NO_FORWARDING_ELLIPSES,
51 PM_ERR_ARGUMENT_NO_FORWARDING_ELLIPSES_LAMBDA,
52 PM_ERR_ARGUMENT_NO_FORWARDING_ELLIPSES_BLOCK,
53 PM_ERR_ARGUMENT_NO_FORWARDING_STAR,
54 PM_ERR_ARGUMENT_NO_FORWARDING_STAR_STAR,
55 PM_ERR_ARGUMENT_SPLAT_AFTER_ASSOC_SPLAT,
56 PM_ERR_ARGUMENT_SPLAT_AFTER_SPLAT,
57 PM_ERR_ARGUMENT_TERM_PAREN,
58 PM_ERR_ARGUMENT_UNEXPECTED_BLOCK,
59 PM_ERR_ARRAY_ELEMENT,
60 PM_ERR_ARRAY_EXPRESSION,
61 PM_ERR_ARRAY_EXPRESSION_AFTER_STAR,
62 PM_ERR_ARRAY_SEPARATOR,
63 PM_ERR_ARRAY_TERM,
64 PM_ERR_BEGIN_LONELY_ELSE,
65 PM_ERR_BEGIN_TERM,
66 PM_ERR_BEGIN_UPCASE_BRACE,
67 PM_ERR_BEGIN_UPCASE_TERM,
68 PM_ERR_BEGIN_UPCASE_TOPLEVEL,
69 PM_ERR_BLOCK_PARAM_LOCAL_VARIABLE,
70 PM_ERR_BLOCK_PARAM_PIPE_TERM,
71 PM_ERR_BLOCK_TERM_BRACE,
72 PM_ERR_BLOCK_TERM_END,
73 PM_ERR_CANNOT_PARSE_EXPRESSION,
74 PM_ERR_CANNOT_PARSE_STRING_PART,
75 PM_ERR_CASE_EXPRESSION_AFTER_CASE,
76 PM_ERR_CASE_EXPRESSION_AFTER_WHEN,
77 PM_ERR_CASE_MATCH_MISSING_PREDICATE,
78 PM_ERR_CASE_MISSING_CONDITIONS,
79 PM_ERR_CASE_TERM,
80 PM_ERR_CLASS_IN_METHOD,
81 PM_ERR_CLASS_NAME,
82 PM_ERR_CLASS_SUPERCLASS,
83 PM_ERR_CLASS_TERM,
84 PM_ERR_CLASS_UNEXPECTED_END,
85 PM_ERR_CLASS_VARIABLE_BARE,
86 PM_ERR_CONDITIONAL_ELSIF_PREDICATE,
87 PM_ERR_CONDITIONAL_IF_PREDICATE,
88 PM_ERR_CONDITIONAL_PREDICATE_TERM,
89 PM_ERR_CONDITIONAL_TERM,
90 PM_ERR_CONDITIONAL_TERM_ELSE,
91 PM_ERR_CONDITIONAL_UNLESS_PREDICATE,
92 PM_ERR_CONDITIONAL_UNTIL_PREDICATE,
93 PM_ERR_CONDITIONAL_WHILE_PREDICATE,
94 PM_ERR_CONSTANT_PATH_COLON_COLON_CONSTANT,
95 PM_ERR_DEF_ENDLESS,
96 PM_ERR_DEF_ENDLESS_PARAMETERS,
97 PM_ERR_DEF_ENDLESS_SETTER,
98 PM_ERR_DEF_NAME,
99 PM_ERR_DEF_PARAMS_TERM,
100 PM_ERR_DEF_PARAMS_TERM_PAREN,
101 PM_ERR_DEF_RECEIVER,
102 PM_ERR_DEF_RECEIVER_TERM,
103 PM_ERR_DEF_TERM,
104 PM_ERR_DEFINED_EXPRESSION,
105 PM_ERR_EMBDOC_TERM,
106 PM_ERR_EMBEXPR_END,
107 PM_ERR_EMBVAR_INVALID,
108 PM_ERR_END_UPCASE_BRACE,
109 PM_ERR_END_UPCASE_TERM,
110 PM_ERR_ESCAPE_INVALID_CONTROL,
111 PM_ERR_ESCAPE_INVALID_CONTROL_REPEAT,
112 PM_ERR_ESCAPE_INVALID_HEXADECIMAL,
113 PM_ERR_ESCAPE_INVALID_META,
114 PM_ERR_ESCAPE_INVALID_META_REPEAT,
115 PM_ERR_ESCAPE_INVALID_UNICODE,
116 PM_ERR_ESCAPE_INVALID_UNICODE_CM_FLAGS,
117 PM_ERR_ESCAPE_INVALID_UNICODE_LIST,
118 PM_ERR_ESCAPE_INVALID_UNICODE_LITERAL,
119 PM_ERR_ESCAPE_INVALID_UNICODE_LONG,
120 PM_ERR_ESCAPE_INVALID_UNICODE_SHORT,
121 PM_ERR_ESCAPE_INVALID_UNICODE_TERM,
122 PM_ERR_EXPECT_ARGUMENT,
123 PM_ERR_EXPECT_EOL_AFTER_STATEMENT,
124 PM_ERR_EXPECT_EXPRESSION_AFTER_AMPAMPEQ,
125 PM_ERR_EXPECT_EXPRESSION_AFTER_COMMA,
126 PM_ERR_EXPECT_EXPRESSION_AFTER_EQUAL,
127 PM_ERR_EXPECT_EXPRESSION_AFTER_LESS_LESS,
128 PM_ERR_EXPECT_EXPRESSION_AFTER_LPAREN,
129 PM_ERR_EXPECT_EXPRESSION_AFTER_OPERATOR,
130 PM_ERR_EXPECT_EXPRESSION_AFTER_PIPEPIPEEQ,
131 PM_ERR_EXPECT_EXPRESSION_AFTER_QUESTION,
132 PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT,
133 PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT_HASH,
134 PM_ERR_EXPECT_EXPRESSION_AFTER_STAR,
135 PM_ERR_EXPECT_FOR_DELIMITER,
136 PM_ERR_EXPECT_IDENT_REQ_PARAMETER,
137 PM_ERR_EXPECT_IN_DELIMITER,
138 PM_ERR_EXPECT_LPAREN_AFTER_NOT_LPAREN,
139 PM_ERR_EXPECT_LPAREN_AFTER_NOT_OTHER,
140 PM_ERR_EXPECT_LPAREN_REQ_PARAMETER,
141 PM_ERR_EXPECT_MESSAGE,
142 PM_ERR_EXPECT_RBRACKET,
143 PM_ERR_EXPECT_RPAREN,
144 PM_ERR_EXPECT_RPAREN_AFTER_MULTI,
145 PM_ERR_EXPECT_RPAREN_REQ_PARAMETER,
146 PM_ERR_EXPECT_SINGLETON_CLASS_DELIMITER,
147 PM_ERR_EXPECT_STRING_CONTENT,
148 PM_ERR_EXPECT_WHEN_DELIMITER,
149 PM_ERR_EXPRESSION_BARE_HASH,
150 PM_ERR_EXPRESSION_NOT_WRITABLE,
151 PM_ERR_EXPRESSION_NOT_WRITABLE_ENCODING,
152 PM_ERR_EXPRESSION_NOT_WRITABLE_FALSE,
153 PM_ERR_EXPRESSION_NOT_WRITABLE_FILE,
154 PM_ERR_EXPRESSION_NOT_WRITABLE_LINE,
155 PM_ERR_EXPRESSION_NOT_WRITABLE_NIL,
156 PM_ERR_EXPRESSION_NOT_WRITABLE_NUMBERED,
157 PM_ERR_EXPRESSION_NOT_WRITABLE_SELF,
158 PM_ERR_EXPRESSION_NOT_WRITABLE_TRUE,
159 PM_ERR_FLOAT_PARSE,
160 PM_ERR_FOR_COLLECTION,
161 PM_ERR_FOR_IN,
162 PM_ERR_FOR_INDEX,
163 PM_ERR_FOR_TERM,
164 PM_ERR_GLOBAL_VARIABLE_BARE,
165 PM_ERR_HASH_EXPRESSION_AFTER_LABEL,
166 PM_ERR_HASH_KEY,
167 PM_ERR_HASH_ROCKET,
168 PM_ERR_HASH_TERM,
169 PM_ERR_HASH_VALUE,
170 PM_ERR_HEREDOC_IDENTIFIER,
171 PM_ERR_HEREDOC_TERM,
172 PM_ERR_INCOMPLETE_QUESTION_MARK,
173 PM_ERR_INCOMPLETE_VARIABLE_CLASS,
174 PM_ERR_INCOMPLETE_VARIABLE_CLASS_3_3,
175 PM_ERR_INCOMPLETE_VARIABLE_INSTANCE,
176 PM_ERR_INCOMPLETE_VARIABLE_INSTANCE_3_3,
177 PM_ERR_INSTANCE_VARIABLE_BARE,
178 PM_ERR_INVALID_BLOCK_EXIT,
179 PM_ERR_INVALID_CHARACTER,
180 PM_ERR_INVALID_COMMA,
181 PM_ERR_INVALID_ENCODING_MAGIC_COMMENT,
182 PM_ERR_INVALID_ESCAPE_CHARACTER,
183 PM_ERR_INVALID_FLOAT_EXPONENT,
184 PM_ERR_INVALID_LOCAL_VARIABLE_READ,
185 PM_ERR_INVALID_LOCAL_VARIABLE_WRITE,
186 PM_ERR_INVALID_MULTIBYTE_CHAR,
187 PM_ERR_INVALID_MULTIBYTE_CHARACTER,
188 PM_ERR_INVALID_MULTIBYTE_ESCAPE,
189 PM_ERR_INVALID_NUMBER_BINARY,
190 PM_ERR_INVALID_NUMBER_DECIMAL,
191 PM_ERR_INVALID_NUMBER_FRACTION,
192 PM_ERR_INVALID_NUMBER_HEXADECIMAL,
193 PM_ERR_INVALID_NUMBER_OCTAL,
194 PM_ERR_INVALID_NUMBER_UNDERSCORE_INNER,
195 PM_ERR_INVALID_NUMBER_UNDERSCORE_TRAILING,
196 PM_ERR_INVALID_PERCENT,
197 PM_ERR_INVALID_PERCENT_EOF,
198 PM_ERR_INVALID_PRINTABLE_CHARACTER,
199 PM_ERR_INVALID_RETRY_AFTER_ELSE,
200 PM_ERR_INVALID_RETRY_AFTER_ENSURE,
201 PM_ERR_INVALID_RETRY_WITHOUT_RESCUE,
202 PM_ERR_INVALID_SYMBOL,
203 PM_ERR_INVALID_VARIABLE_GLOBAL,
204 PM_ERR_INVALID_VARIABLE_GLOBAL_3_3,
205 PM_ERR_INVALID_YIELD,
206 PM_ERR_IT_NOT_ALLOWED_NUMBERED,
207 PM_ERR_IT_NOT_ALLOWED_ORDINARY,
208 PM_ERR_LAMBDA_OPEN,
209 PM_ERR_LAMBDA_TERM_BRACE,
210 PM_ERR_LAMBDA_TERM_END,
211 PM_ERR_LIST_I_LOWER_ELEMENT,
212 PM_ERR_LIST_I_LOWER_TERM,
213 PM_ERR_LIST_I_UPPER_ELEMENT,
214 PM_ERR_LIST_I_UPPER_TERM,
215 PM_ERR_LIST_W_LOWER_ELEMENT,
216 PM_ERR_LIST_W_LOWER_TERM,
217 PM_ERR_LIST_W_UPPER_ELEMENT,
218 PM_ERR_LIST_W_UPPER_TERM,
219 PM_ERR_MALLOC_FAILED,
220 PM_ERR_MIXED_ENCODING,
221 PM_ERR_MODULE_IN_METHOD,
222 PM_ERR_MODULE_NAME,
223 PM_ERR_MODULE_TERM,
224 PM_ERR_MULTI_ASSIGN_MULTI_SPLATS,
225 PM_ERR_MULTI_ASSIGN_UNEXPECTED_REST,
226 PM_ERR_NESTING_TOO_DEEP,
227 PM_ERR_NO_LOCAL_VARIABLE,
228 PM_ERR_NON_ASSOCIATIVE_OPERATOR,
229 PM_ERR_NOT_EXPRESSION,
230 PM_ERR_NUMBER_LITERAL_UNDERSCORE,
231 PM_ERR_NUMBERED_PARAMETER_INNER_BLOCK,
232 PM_ERR_NUMBERED_PARAMETER_IT,
233 PM_ERR_NUMBERED_PARAMETER_ORDINARY,
234 PM_ERR_NUMBERED_PARAMETER_OUTER_BLOCK,
235 PM_ERR_OPERATOR_MULTI_ASSIGN,
236 PM_ERR_OPERATOR_WRITE_ARGUMENTS,
237 PM_ERR_OPERATOR_WRITE_BLOCK,
238 PM_ERR_PARAMETER_ASSOC_SPLAT_MULTI,
239 PM_ERR_PARAMETER_BLOCK_MULTI,
240 PM_ERR_PARAMETER_CIRCULAR,
241 PM_ERR_PARAMETER_FORWARDING_AFTER_REST,
242 PM_ERR_PARAMETER_METHOD_NAME,
243 PM_ERR_PARAMETER_NAME_DUPLICATED,
244 PM_ERR_PARAMETER_NO_DEFAULT,
245 PM_ERR_PARAMETER_NO_DEFAULT_KW,
246 PM_ERR_PARAMETER_NUMBERED_RESERVED,
247 PM_ERR_PARAMETER_ORDER,
248 PM_ERR_PARAMETER_SPLAT_MULTI,
249 PM_ERR_PARAMETER_STAR,
250 PM_ERR_PARAMETER_UNEXPECTED_FWD,
251 PM_ERR_PARAMETER_UNEXPECTED_NO_KW,
252 PM_ERR_PARAMETER_WILD_LOOSE_COMMA,
253 PM_ERR_PATTERN_ARRAY_MULTIPLE_RESTS,
254 PM_ERR_PATTERN_CAPTURE_DUPLICATE,
255 PM_ERR_PATTERN_CAPTURE_IN_ALTERNATIVE,
256 PM_ERR_PATTERN_EXPRESSION_AFTER_BRACKET,
257 PM_ERR_PATTERN_EXPRESSION_AFTER_COMMA,
258 PM_ERR_PATTERN_EXPRESSION_AFTER_HROCKET,
259 PM_ERR_PATTERN_EXPRESSION_AFTER_IN,
260 PM_ERR_PATTERN_EXPRESSION_AFTER_KEY,
261 PM_ERR_PATTERN_EXPRESSION_AFTER_PAREN,
262 PM_ERR_PATTERN_EXPRESSION_AFTER_PIN,
263 PM_ERR_PATTERN_EXPRESSION_AFTER_PIPE,
264 PM_ERR_PATTERN_EXPRESSION_AFTER_RANGE,
265 PM_ERR_PATTERN_EXPRESSION_AFTER_REST,
266 PM_ERR_PATTERN_FIND_MISSING_INNER,
267 PM_ERR_PATTERN_HASH_IMPLICIT,
268 PM_ERR_PATTERN_HASH_KEY,
269 PM_ERR_PATTERN_HASH_KEY_DUPLICATE,
270 PM_ERR_PATTERN_HASH_KEY_INTERPOLATED,
271 PM_ERR_PATTERN_HASH_KEY_LABEL,
272 PM_ERR_PATTERN_HASH_KEY_LOCALS,
273 PM_ERR_PATTERN_IDENT_AFTER_HROCKET,
274 PM_ERR_PATTERN_LABEL_AFTER_COMMA,
275 PM_ERR_PATTERN_REST,
276 PM_ERR_PATTERN_TERM_BRACE,
277 PM_ERR_PATTERN_TERM_BRACKET,
278 PM_ERR_PATTERN_TERM_PAREN,
279 PM_ERR_PIPEPIPEEQ_MULTI_ASSIGN,
280 PM_ERR_REGEXP_ENCODING_OPTION_MISMATCH,
281 PM_ERR_REGEXP_INCOMPAT_CHAR_ENCODING,
282 PM_ERR_REGEXP_INVALID_UNICODE_RANGE,
283 PM_ERR_REGEXP_NON_ESCAPED_MBC,
284 PM_ERR_REGEXP_PARSE_ERROR,
285 PM_ERR_REGEXP_TERM,
286 PM_ERR_REGEXP_UNKNOWN_OPTIONS,
287 PM_ERR_REGEXP_UTF8_CHAR_NON_UTF8_REGEXP,
288 PM_ERR_RESCUE_EXPRESSION,
289 PM_ERR_RESCUE_MODIFIER_VALUE,
290 PM_ERR_RESCUE_TERM,
291 PM_ERR_RESCUE_VARIABLE,
292 PM_ERR_RETURN_INVALID,
293 PM_ERR_SCRIPT_NOT_FOUND,
294 PM_ERR_SINGLETON_FOR_LITERALS,
295 PM_ERR_STATEMENT_ALIAS,
296 PM_ERR_STATEMENT_POSTEXE_END,
297 PM_ERR_STATEMENT_PREEXE_BEGIN,
298 PM_ERR_STATEMENT_UNDEF,
299 PM_ERR_STRING_CONCATENATION,
300 PM_ERR_STRING_INTERPOLATED_TERM,
301 PM_ERR_STRING_LITERAL_EOF,
302 PM_ERR_STRING_LITERAL_TERM,
303 PM_ERR_SYMBOL_INVALID,
304 PM_ERR_SYMBOL_TERM_DYNAMIC,
305 PM_ERR_SYMBOL_TERM_INTERPOLATED,
306 PM_ERR_TERNARY_COLON,
307 PM_ERR_TERNARY_EXPRESSION_FALSE,
308 PM_ERR_TERNARY_EXPRESSION_TRUE,
309 PM_ERR_UNARY_DISALLOWED,
310 PM_ERR_UNARY_RECEIVER,
311 PM_ERR_UNDEF_ARGUMENT,
312 PM_ERR_UNEXPECTED_BLOCK_ARGUMENT,
313 PM_ERR_UNEXPECTED_INDEX_BLOCK,
314 PM_ERR_UNEXPECTED_INDEX_KEYWORDS,
315 PM_ERR_UNEXPECTED_LABEL,
316 PM_ERR_UNEXPECTED_MULTI_WRITE,
317 PM_ERR_UNEXPECTED_PARAMETER_DEFAULT_VALUE,
318 PM_ERR_UNEXPECTED_RANGE_OPERATOR,
319 PM_ERR_UNEXPECTED_SAFE_NAVIGATION,
320 PM_ERR_UNEXPECTED_TOKEN_CLOSE_CONTEXT,
321 PM_ERR_UNEXPECTED_TOKEN_IGNORE,
322 PM_ERR_UNTIL_TERM,
323 PM_ERR_VOID_EXPRESSION,
324 PM_ERR_WHILE_TERM,
325 PM_ERR_WRITE_TARGET_IN_METHOD,
326 PM_ERR_WRITE_TARGET_READONLY,
327 PM_ERR_WRITE_TARGET_UNEXPECTED,
328 PM_ERR_XSTRING_TERM,
329
330 // These are the warning diagnostics.
331 PM_WARN_AMBIGUOUS_BINARY_OPERATOR,
332 PM_WARN_AMBIGUOUS_FIRST_ARGUMENT_MINUS,
333 PM_WARN_AMBIGUOUS_FIRST_ARGUMENT_PLUS,
334 PM_WARN_AMBIGUOUS_PREFIX_AMPERSAND,
335 PM_WARN_AMBIGUOUS_PREFIX_STAR,
336 PM_WARN_AMBIGUOUS_PREFIX_STAR_STAR,
337 PM_WARN_AMBIGUOUS_SLASH,
338 PM_WARN_COMPARISON_AFTER_COMPARISON,
339 PM_WARN_DOT_DOT_DOT_EOL,
340 PM_WARN_EQUAL_IN_CONDITIONAL,
341 PM_WARN_EQUAL_IN_CONDITIONAL_3_3,
342 PM_WARN_END_IN_METHOD,
343 PM_WARN_DUPLICATED_HASH_KEY,
344 PM_WARN_DUPLICATED_WHEN_CLAUSE,
345 PM_WARN_FLOAT_OUT_OF_RANGE,
346 PM_WARN_IGNORED_FROZEN_STRING_LITERAL,
347 PM_WARN_INDENTATION_MISMATCH,
348 PM_WARN_INTEGER_IN_FLIP_FLOP,
349 PM_WARN_INVALID_CHARACTER,
350 PM_WARN_INVALID_MAGIC_COMMENT_VALUE,
351 PM_WARN_INVALID_NUMBERED_REFERENCE,
352 PM_WARN_KEYWORD_EOL,
353 PM_WARN_LITERAL_IN_CONDITION_DEFAULT,
354 PM_WARN_LITERAL_IN_CONDITION_VERBOSE,
355 PM_WARN_SHAREABLE_CONSTANT_VALUE_LINE,
356 PM_WARN_SHEBANG_CARRIAGE_RETURN,
357 PM_WARN_UNEXPECTED_CARRIAGE_RETURN,
358 PM_WARN_UNREACHABLE_STATEMENT,
359 PM_WARN_UNUSED_LOCAL_VARIABLE,
360 PM_WARN_VOID_STATEMENT,
362
368typedef struct {
371
374
377
379 const char *message;
380
386 bool owned;
387
392 uint8_t level;
394
408
419
426const char * pm_diagnostic_id_human(pm_diagnostic_id_t diag_id);
427
438bool pm_diagnostic_list_append(pm_list_t *list, const uint8_t *start, const uint8_t *end, pm_diagnostic_id_t diag_id);
439
451bool pm_diagnostic_list_append_format(pm_list_t *list, const uint8_t *start, const uint8_t *end, pm_diagnostic_id_t diag_id, ...);
452
459
460#endif
void pm_diagnostic_list_free(pm_list_t *list)
Deallocate the internal state of the given diagnostic list.
Definition diagnostic.c:847
bool pm_diagnostic_list_append_format(pm_list_t *list, const uint8_t *start, const uint8_t *end, pm_diagnostic_id_t diag_id,...)
Append a diagnostic to the given list of diagnostics that is using a format string for its message.
Definition diagnostic.c:803
pm_diagnostic_id_t
The diagnostic IDs of all of the diagnostics, used to communicate the types of errors between the par...
Definition diagnostic.h:31
bool pm_diagnostic_list_append(pm_list_t *list, const uint8_t *start, const uint8_t *end, pm_diagnostic_id_t diag_id)
Append a diagnostic to the given list of diagnostics that is using shared memory for its message.
Definition diagnostic.c:782
const char * pm_diagnostic_id_human(pm_diagnostic_id_t diag_id)
Get the human-readable name of the given diagnostic ID.
Definition diagnostic.c:427
pm_warning_level_t
The levels of warnings generated during parsing.
Definition diagnostic.h:412
@ PM_WARNING_LEVEL_DEFAULT
For warnings which should be emitted if $VERBOSE != nil.
Definition diagnostic.h:414
@ PM_WARNING_LEVEL_VERBOSE
For warnings which should be emitted if $VERBOSE == true.
Definition diagnostic.h:417
pm_error_level_t
The levels of errors generated during parsing.
Definition diagnostic.h:398
@ PM_ERROR_LEVEL_ARGUMENT
For errors that should raise an argument error.
Definition diagnostic.h:403
@ PM_ERROR_LEVEL_LOAD
For errors that should raise a load error.
Definition diagnostic.h:406
@ PM_ERROR_LEVEL_SYNTAX
For errors that should raise a syntax error.
Definition diagnostic.h:400
An abstract linked list.
struct pm_list_node pm_list_node_t
This struct represents an abstract linked list that provides common functionality.
Macro definitions used throughout the prism library.
C99 shim for <stdbool.h>.
This struct represents a diagnostic generated during parsing.
Definition diagnostic.h:368
pm_location_t location
The location of the diagnostic in the source.
Definition diagnostic.h:373
const char * message
The message associated with the diagnostic.
Definition diagnostic.h:379
pm_list_node_t node
The embedded base node.
Definition diagnostic.h:370
pm_diagnostic_id_t diag_id
The ID of the diagnostic.
Definition diagnostic.h:376
bool owned
Whether or not the memory related to the message of this diagnostic is owned by this diagnostic.
Definition diagnostic.h:386
uint8_t level
The level of the diagnostic, see pm_error_level_t and pm_warning_level_t for possible values.
Definition diagnostic.h:392
This represents the overall linked list.
Definition pm_list.h:55
This represents a range of bytes in the source string to which a node or token corresponds.
Definition ast.h:544