Added a declaration to name LAMBDA forms even when we do not use EXT:LAMBDA-BLOCK

This commit is contained in:
Juan Jose Garcia Ripoll 2012-12-20 23:20:33 +01:00
parent 39bc148181
commit 0e64774fbe
3 changed files with 11 additions and 1 deletions

View file

@ -3018,6 +3018,14 @@ ecl_make_lambda(cl_env_ptr env, cl_object name, cl_object lambda) {
compile_form(env, @list*(3, @'block', si_function_block_name(name),
body), FLAG_VALUES);
} else {
while (!Null(decl)) {
cl_object l = ECL_CONS_CAR(decl);
if (ECL_CONSP(l) && ECL_CONS_CAR(l) == @'si::function-block-name') {
name = ECL_CONS_CAR(ECL_CONS_CDR(l));
break;
}
decl = ECL_CONS_CDR(decl);
}
compile_body(env, body, FLAG_VALUES);
}

View file

@ -150,6 +150,7 @@
do (push `(,name ,name) copied-variables) and
nconc `((type ,type ,name)
(si::no-check-type ,name))))
(list (list 'si::function-block-name name))
(cdar declarations)))
(block `(block ,(si::function-block-name name) ,@real-body))
(method-lambda

View file

@ -98,6 +98,7 @@ and a possible documentation string (only accepted when DOC-P is true)."
SI::C-GLOBAL DYNAMIC-EXTENT IGNORABLE VALUES
SI::NO-CHECK-TYPE POLICY-DEBUG-IHS-FRAME :READ-ONLY)
(push decl others))
(SI:FUNCTION-BLOCK-NAME)
(otherwise
(if (or (alien-declaration-p decl-name)
(policy-declaration-name-p decl-name))
@ -147,7 +148,7 @@ special variable declarations, as these have been extracted before."
(cmp-env-extend-declaration 'alien (rest decl) env))
((SI::C-LOCAL SI::C-GLOBAL SI::NO-CHECK-TYPE :READ-ONLY)
env)
((DYNAMIC-EXTENT IGNORABLE)
((DYNAMIC-EXTENT IGNORABLE SI:FUNCTION-BLOCK-NAME)
;; FIXME! SOME ARE IGNORED!
env)
(otherwise