From 586b22815663bce7d6a99b9d924dd97f14266581 Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Sat, 18 Jan 2014 16:51:54 +0900 Subject: [PATCH] add PIC_TT_IREP --- include/picrin/value.h | 3 ++- src/codegen.c | 4 ++-- src/gc.c | 6 ++++++ src/macro.c | 1 + src/value.c | 2 ++ src/write.c | 3 +++ 6 files changed, 16 insertions(+), 3 deletions(-) diff --git a/include/picrin/value.h b/include/picrin/value.h index 2fbd876c..a63705a6 100644 --- a/include/picrin/value.h +++ b/include/picrin/value.h @@ -102,7 +102,8 @@ enum pic_tt { PIC_TT_SYNTAX, PIC_TT_SC, PIC_TT_LIB, - PIC_TT_VAR + PIC_TT_VAR, + PIC_TT_IREP }; #define PIC_OBJECT_HEADER \ diff --git a/src/codegen.c b/src/codegen.c index 49456e90..00b39a0c 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -679,10 +679,10 @@ codegen(codegen_state *state, pic_value obj, bool tailpos) case PIC_TT_SYNTAX: case PIC_TT_SC: case PIC_TT_LIB: - case PIC_TT_VAR: { + case PIC_TT_VAR: + case PIC_TT_IREP: pic_error(pic, "invalid expression given"); } - } } static void diff --git a/src/gc.c b/src/gc.c index e0289c32..39181513 100644 --- a/src/gc.c +++ b/src/gc.c @@ -428,6 +428,9 @@ gc_mark_object(pic_state *pic, struct pic_object *obj) } break; } + case PIC_TT_IREP: { + break; + } case PIC_TT_NIL: case PIC_TT_BOOL: case PIC_TT_FLOAT: @@ -567,6 +570,9 @@ gc_finalize_object(pic_state *pic, struct pic_object *obj) case PIC_TT_VAR: { break; } + case PIC_TT_IREP: { + break; + } case PIC_TT_NIL: case PIC_TT_BOOL: case PIC_TT_FLOAT: diff --git a/src/macro.c b/src/macro.c index 143e466b..64d606d8 100644 --- a/src/macro.c +++ b/src/macro.c @@ -547,6 +547,7 @@ macroexpand(pic_state *pic, pic_value expr, struct pic_senv *senv) case PIC_TT_SYNTAX: case PIC_TT_LIB: case PIC_TT_VAR: + case PIC_TT_IREP: pic_error(pic, "unexpected value type"); return pic_undef_value(); /* unreachable */ } diff --git a/src/value.c b/src/value.c index 89d51012..53ebef29 100644 --- a/src/value.c +++ b/src/value.c @@ -84,6 +84,8 @@ pic_type_repr(enum pic_tt tt) return "lib"; case PIC_TT_VAR: return "var"; + case PIC_TT_IREP: + return "irep"; } /* logic flaw */ abort(); diff --git a/src/write.c b/src/write.c index 0ab43815..17957185 100644 --- a/src/write.c +++ b/src/write.c @@ -146,6 +146,9 @@ write(pic_state *pic, pic_value obj) case PIC_TT_VAR: printf("#", pic_ptr(obj)); break; + case PIC_TT_IREP: + printf("#", pic_ptr(obj)); + break; } }