aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode/errors.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bytecode/errors.c')
-rwxr-xr-xsrc/bytecode/errors.c52
1 files changed, 0 insertions, 52 deletions
diff --git a/src/bytecode/errors.c b/src/bytecode/errors.c
deleted file mode 100755
index b2aab93..0000000
--- a/src/bytecode/errors.c
+++ /dev/null
@@ -1,52 +0,0 @@
1#include "errors.h"
2
3static const char* error_msgs[] = {
4 [ERR_UNKNOWN] = "error: something unexpected happened",
5 [ERR_UNMATCHED_STRING] = "error: unmatched string delimiter",
6 [ERR_UNBALANCED_PAREN] = "error: unbalanced parentheses",
7 [ERR_NOT_IMPLEMENTED] = "error: not implemented",
8 [ERR_EOF_REACHED] = "error: EOF reached",
9 [ERR_UNKNOWN_TOKEN] = "error: unknown token",
10 [ERR_UNKNOWN_OBJ_TYPE] = "error: can't eval unknown object type",
11 [ERR_NOT_A_SYMBOL] = "error: object is not a symbol",
12 [ERR_SYMBOL_NOT_FOUND] = "error: symbol not found",
13 [ERR_OBJ_NOT_CALLABLE] = "error: object is not callable",
14 [ERR_NOT_ENOUGH_ARGS] = "error: not enough arguments",
15 [ERR_TOO_MANY_ARGS] = "error: too many arguments",
16 [ERR_WRONG_ARG_TYPE] = "error: wrong argument type",
17 [ERR_DIVISION_BY_ZERO] = "error: division by zero",
18 [ERR_PC_OOB] = "error: pc out of bounds",
19 [ERR_EMPTY_CHUNK] = "error: empty chunk",
20 [ERR_AMBIGUOUS_PARAMS] = "error: ambiguous parameter names",
21};
22
23static Error errors[ERR_MAX_NUMBER];
24static size_t errors_n = 0;
25static bool supress_errors = false;
26
27void
28error_push(Error error) {
29 if (errors_n < ERR_MAX_NUMBER) {
30 errors[errors_n++] = error;
31 }
32}
33
34void
35report_errors(char *file_name) {
36 for (size_t i = 0; i < errors_n; i++) {
37 Error err = errors[i];
38 fprintf(stderr, "%s", file_name);
39 if (err.line != 0) {
40 fprintf(stderr, ":%ld:%ld", err.line, err.col);
41 }
42 switch (err.type) {
43 case ERR_TYPE_LEXER: { fprintf(stderr, ": [lexer]"); } break;
44 case ERR_TYPE_COMPILER: { fprintf(stderr, ": [compiler]"); } break;
45 case ERR_TYPE_RUNTIME: { fprintf(stderr, ": [runtime]"); } break;
46 case ERR_TYPE_PARSER: { fprintf(stderr, ": [parser]"); } break;
47 default: break;
48 }
49 fprintf(stderr, " %s\n", error_msgs[err.value]);
50 }
51 errors_n = 0;
52}