diff --git a/src/c/compiler.d b/src/c/compiler.d index fc1142043..54825ff73 100644 --- a/src/c/compiler.d +++ b/src/c/compiler.d @@ -2235,7 +2235,7 @@ for special form ~S.", 1, function); } static void -eval_form(cl_env_ptr env, cl_object form) { +eval_nontrivial_form(cl_env_ptr env, cl_object form) { const cl_compiler_ptr old_c_env = env->c_env; struct cl_compiler_env new_c_env = *old_c_env; cl_index handle; @@ -2265,6 +2265,16 @@ eval_form(cl_env_ptr env, cl_object form) { env->c_env = old_c_env; } +static void +eval_form(cl_env_ptr env, cl_object form) { + if (ECL_LISTP(form) || ECL_SYMBOLP(form)) { + eval_nontrivial_form(env, form); + } else { + env->values[0] = form; + env->nvalues = 1; + } +} + static int compile_toplevel_body(cl_env_ptr env, cl_object body, int flags) { const cl_compiler_ptr c_env = env->c_env;