bytecmp: error when make-load-form has a circular dependency
This commit is contained in:
parent
3cec96739d
commit
32704f8cf5
1 changed files with 7 additions and 3 deletions
|
|
@ -550,7 +550,7 @@ c_new_env(cl_env_ptr the_env, cl_compiler_env_ptr new, cl_object env,
|
||||||
new->lexical_level = 0;
|
new->lexical_level = 0;
|
||||||
new->load_time_forms = ECL_NIL;
|
new->load_time_forms = ECL_NIL;
|
||||||
new->ltf_being_created = ECL_NIL;
|
new->ltf_being_created = ECL_NIL;
|
||||||
new->ltf_defer_init_until = ECL_NIL;
|
new->ltf_defer_init_until = ECL_T;
|
||||||
new->ltf_locations = ECL_NIL;
|
new->ltf_locations = ECL_NIL;
|
||||||
new->env_depth = 0;
|
new->env_depth = 0;
|
||||||
new->macros = CDR(env);
|
new->macros = CDR(env);
|
||||||
|
|
@ -2218,7 +2218,11 @@ static void
|
||||||
defer_load_object(cl_env_ptr env, cl_object place, cl_object created)
|
defer_load_object(cl_env_ptr env, cl_object place, cl_object created)
|
||||||
{
|
{
|
||||||
const cl_compiler_ptr c_env = env->c_env;
|
const cl_compiler_ptr c_env = env->c_env;
|
||||||
if (ecl_member_eq(c_env->ltf_defer_init_until, created)) {
|
if (c_env->ltf_defer_init_until == ECL_T) {
|
||||||
|
FEerror("Circular dependency in load time forms involving ~S.", 1, ECL_CONS_CAR(place));
|
||||||
|
}
|
||||||
|
if (c_env->ltf_defer_init_until != ECL_NIL
|
||||||
|
&& ecl_member_eq(c_env->ltf_defer_init_until, created)) {
|
||||||
/* We are already deferring the init form long enough, nothing to do. */
|
/* We are already deferring the init form long enough, nothing to do. */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -2411,7 +2415,7 @@ eval_nontrivial_form(cl_env_ptr env, cl_object form) {
|
||||||
ECL_NIL);
|
ECL_NIL);
|
||||||
new_c_env.load_time_forms = ECL_NIL;
|
new_c_env.load_time_forms = ECL_NIL;
|
||||||
new_c_env.ltf_being_created = ECL_NIL;
|
new_c_env.ltf_being_created = ECL_NIL;
|
||||||
new_c_env.ltf_defer_init_until = ECL_NIL;
|
new_c_env.ltf_defer_init_until = ECL_T;
|
||||||
new_c_env.ltf_locations = ECL_NIL;
|
new_c_env.ltf_locations = ECL_NIL;
|
||||||
new_c_env.env_depth = 0;
|
new_c_env.env_depth = 0;
|
||||||
new_c_env.env_size = 0;
|
new_c_env.env_size = 0;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue