mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-02-06 07:30:32 -08:00
Added a declaration to name LAMBDA forms even when we do not use EXT:LAMBDA-BLOCK
This commit is contained in:
parent
39bc148181
commit
0e64774fbe
3 changed files with 11 additions and 1 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue