diff options
Diffstat (limited to 'src/bootstrap/main.c')
-rwxr-xr-x | src/bootstrap/main.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/bootstrap/main.c b/src/bootstrap/main.c index 052f1c0..c589b2d 100755 --- a/src/bootstrap/main.c +++ b/src/bootstrap/main.c | |||
@@ -61,6 +61,7 @@ init(void) { | |||
61 | MAKE_ENV_PROC(global_env, "fixnum?", proc_is_fixnum); | 61 | MAKE_ENV_PROC(global_env, "fixnum?", proc_is_fixnum); |
62 | MAKE_ENV_PROC(global_env, "pair?", proc_is_pair); | 62 | MAKE_ENV_PROC(global_env, "pair?", proc_is_pair); |
63 | MAKE_ENV_PROC(global_env, "procedure?", proc_is_procedure); | 63 | MAKE_ENV_PROC(global_env, "procedure?", proc_is_procedure); |
64 | MAKE_ENV_PROC(global_env, "error?", proc_is_error); | ||
64 | MAKE_ENV_PROC(global_env, "not", proc_not); | 65 | MAKE_ENV_PROC(global_env, "not", proc_not); |
65 | MAKE_ENV_PROC(global_env, "and", proc_and); | 66 | MAKE_ENV_PROC(global_env, "and", proc_and); |
66 | MAKE_ENV_PROC(global_env, "or", proc_or); | 67 | MAKE_ENV_PROC(global_env, "or", proc_or); |
@@ -74,6 +75,9 @@ init(void) { | |||
74 | MAKE_ENV_PROC(global_env, "eq?", proc_equal); | 75 | MAKE_ENV_PROC(global_env, "eq?", proc_equal); |
75 | MAKE_ENV_PROC(global_env, "def", proc_define); | 76 | MAKE_ENV_PROC(global_env, "def", proc_define); |
76 | MAKE_ENV_PROC(global_env, "set!", proc_set); | 77 | MAKE_ENV_PROC(global_env, "set!", proc_set); |
78 | |||
79 | // Runtime procedures. | ||
80 | MAKE_ENV_PROC(global_env, "supress-errors", proc_supress_errors); | ||
77 | } | 81 | } |
78 | 82 | ||
79 | void | 83 | void |
@@ -125,7 +129,7 @@ run_repl(void) { | |||
125 | process_source(&sv); | 129 | process_source(&sv); |
126 | 130 | ||
127 | // Check if there were any errors. | 131 | // Check if there were any errors. |
128 | if (errors_n != 0) { | 132 | if (errors_n != 0 && !supress_errors) { |
129 | for (size_t i = 0; i < errors_n; i++) { | 133 | for (size_t i = 0; i < errors_n; i++) { |
130 | Error err = errors[i]; | 134 | Error err = errors[i]; |
131 | for (size_t j = 0; j < err.col + sizeof(REPL_PROMPT) - 2; j++) { | 135 | for (size_t j = 0; j < err.col + sizeof(REPL_PROMPT) - 2; j++) { |
@@ -168,7 +172,7 @@ run_file(char *file_name) { | |||
168 | process_source(&sv); | 172 | process_source(&sv); |
169 | 173 | ||
170 | // Check if there were any errors. | 174 | // Check if there were any errors. |
171 | if (errors_n != 0) { | 175 | if (errors_n != 0 && !supress_errors) { |
172 | for (size_t i = 0; i < errors_n; i++) { | 176 | for (size_t i = 0; i < errors_n; i++) { |
173 | Error err = errors[i]; | 177 | Error err = errors[i]; |
174 | fprintf(stderr, "%s", file_name); | 178 | fprintf(stderr, "%s", file_name); |
@@ -210,7 +214,7 @@ run_stdin(void) { | |||
210 | process_source(&sv); | 214 | process_source(&sv); |
211 | 215 | ||
212 | // Check if there were any errors. | 216 | // Check if there were any errors. |
213 | if (errors_n != 0) { | 217 | if (errors_n != 0 && !supress_errors) { |
214 | for (size_t i = 0; i < errors_n; i++) { | 218 | for (size_t i = 0; i < errors_n; i++) { |
215 | Error err = errors[i]; | 219 | Error err = errors[i]; |
216 | fprintf(stderr, "stdin"); | 220 | fprintf(stderr, "stdin"); |