aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode/errors.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bytecode/errors.c')
-rwxr-xr-xsrc/bytecode/errors.c20
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
33void
34report_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}