aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode/errors.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-26 08:55:12 +0200
committerBad Diode <bd@badd10de.dev>2021-10-26 08:55:12 +0200
commit9f1f2ff307bb3da8bfc6809ae05be589e1e37ed9 (patch)
treee58427f27162f673903c480e7858d77c3a9f6b23 /src/bytecode/errors.c
parent46356365270b71be94097b3c408d5f35a9ebd6ed (diff)
downloadbdl-9f1f2ff307bb3da8bfc6809ae05be589e1e37ed9.tar.gz
bdl-9f1f2ff307bb3da8bfc6809ae05be589e1e37ed9.zip
Add OP_DROP and improve error reporting
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}