diff options
Diffstat (limited to 'src/bytecode/errors.c')
-rwxr-xr-x | src/bytecode/errors.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/bytecode/errors.c b/src/bytecode/errors.c index c2ab77f..b4595a1 100755 --- a/src/bytecode/errors.c +++ b/src/bytecode/errors.c | |||
@@ -29,3 +29,23 @@ error_push(Error error) { | |||
29 | errors[errors_n++] = error; | 29 | errors[errors_n++] = error; |
30 | } | 30 | } |
31 | } | 31 | } |
32 | |||
33 | void | ||
34 | report_errors(char *file_name) { | ||
35 | for (size_t i = 0; i < errors_n; i++) { | ||
36 | Error err = errors[i]; | ||
37 | fprintf(stderr, "%s", file_name); | ||
38 | if (err.line != 0) { | ||
39 | fprintf(stderr, ":%ld:%ld", err.line, err.col); | ||
40 | } | ||
41 | switch (err.type) { | ||
42 | case ERR_TYPE_LEXER: { fprintf(stderr, ": [lexer]"); } break; | ||
43 | case ERR_TYPE_COMPILER: { fprintf(stderr, ": [compiler]"); } break; | ||
44 | case ERR_TYPE_RUNTIME: { fprintf(stderr, ": [runtime]"); } break; | ||
45 | case ERR_TYPE_PARSER: { fprintf(stderr, ": [parser]"); } break; | ||
46 | default: break; | ||
47 | } | ||
48 | fprintf(stderr, " %s\n", error_msgs[err.value]); | ||
49 | } | ||
50 | errors_n = 0; | ||
51 | } | ||