diff --git a/src/eval_cps.c b/src/eval_cps.c index 3d436cd5..67d049fe 100644 --- a/src/eval_cps.c +++ b/src/eval_cps.c @@ -947,6 +947,11 @@ static inline void eval_macro(eval_context_t *ctx) { ctx->app_cont = true; } +static inline void eval_closure(eval_context_t *ctx) { + ctx->r = ctx->curr_exp; + ctx->app_cont = true; +} + static inline void eval_callcc(eval_context_t *ctx) { lbm_value continuation = NIL; @@ -2116,6 +2121,7 @@ static void evaluation_step(void){ case SYM_DEFINE: eval_define(ctx); return; case SYM_PROGN: eval_progn(ctx); return; case SYM_LAMBDA: eval_lambda(ctx); return; + case SYM_CLOSURE: eval_closure(ctx); return; case SYM_IF: eval_if(ctx); return; case SYM_LET: eval_let(ctx); return; case SYM_AND: eval_and(ctx); return; diff --git a/tests/test_enc_dec.c b/tests/test_enc_dec.c index b69d7bc9..92f01eb8 100644 --- a/tests/test_enc_dec.c +++ b/tests/test_enc_dec.c @@ -5,6 +5,8 @@ #include "heap.h" int main(int argc, char **argv) { + (void) argc; + (void) argv; int res = 1; diff --git a/tests/test_heap_alloc.c b/tests/test_heap_alloc.c index 8860377f..f57841f2 100644 --- a/tests/test_heap_alloc.c +++ b/tests/test_heap_alloc.c @@ -10,6 +10,8 @@ uint32_t gc_stack_storage[GC_STACK_SIZE]; int main(int argc, char **argv) { + (void)argc; + (void)argv; int res = 1;