refactor error object

This commit is contained in:
Yuichi Nishiwaki
2014-09-17 00:29:17 +09:00
parent 33efb3e950
commit 78a982fb41
10 changed files with 71 additions and 66 deletions
+3 -2
View File
@@ -81,6 +81,7 @@ typedef struct {
pic_sym sCONS, sCAR, sCDR, sNILP;
pic_sym sADD, sSUB, sMUL, sDIV, sMINUS;
pic_sym sEQ, sLT, sLE, sGT, sGE, sNOT;
pic_sym sREAD, sFILE;
pic_sym rDEFINE, rLAMBDA, rIF, rBEGIN, rQUOTE, rSETBANG;
pic_sym rDEFINE_SYNTAX, rIMPORT, rEXPORT;
@@ -104,7 +105,7 @@ typedef struct {
struct pic_reader *reader;
jmp_buf *jmp;
struct pic_error *err;
pic_value err;
struct pic_jmpbuf *try_jmps;
size_t try_jmp_size, try_jmp_idx;
@@ -206,7 +207,7 @@ noreturn void pic_abort(pic_state *, const char *);
noreturn void pic_errorf(pic_state *, const char *, ...);
void pic_warnf(pic_state *, const char *, ...);
pic_str *pic_get_backtrace(pic_state *);
void pic_print_backtrace(pic_state *, struct pic_error *);
void pic_print_backtrace(pic_state *);
/* obsoleted */
static inline void pic_warn(pic_state *pic, const char *msg)
+5 -9
View File
@@ -34,18 +34,14 @@ struct pic_jmpbuf {
void pic_push_try(pic_state *, struct pic_proc *);
void pic_pop_try(pic_state *);
noreturn void pic_throw(pic_state *, short, const char *, pic_value);
noreturn void pic_throw_error(pic_state *, struct pic_error *);
noreturn void pic_raise(pic_state *, pic_value);
noreturn void pic_throw(pic_state *, pic_sym, const char *, pic_list);
noreturn void pic_error(pic_state *, const char *, pic_list);
struct pic_error {
PIC_OBJECT_HEADER
enum pic_error_kind {
PIC_ERROR_OTHER,
PIC_ERROR_FILE,
PIC_ERROR_READ,
PIC_ERROR_RAISED
} type;
struct pic_string *msg;
pic_sym type;
pic_str *msg;
pic_value irrs;
pic_str *stack;
};
+1
View File
@@ -142,6 +142,7 @@ struct pic_blob;
struct pic_proc;
struct pic_port;
struct pic_error;
/* set aliases to basic types */
typedef pic_value pic_list;