For current code which closing previous issue #2, there is an new problem around IGNORE/IGNORABLE declaration.
e.g.
(local-function fun ((v1 ...) (v2 ...) ... (vk ...) vn)
(declare (type fixnum v1 v2 ... vk) (ignore vn))
... )
above code will be expanded to below;
(labels ((fun (#1=#:G1 #2=#:G2 ... #k=#:Gk #n=#:Gn)
(declare (type fixnum #1# #2# ... #k#)
(ignore #n#) )
(block fun
(tagbody #s=#:start-tag
(let ((v1 #1#) (v2 #2#) ... (vk #k#)
(vn #n#) )
(declare (type fixnum v1 v2 ... vk) (ignore vn))
... )))))
(fun ...) )
:Gn is declared as IGNORE, but it will be used as initial value of a following LET variable vn.
Is #:Gn declared as IGNORABLE?
Should vn be removed from internal LET and forbid to use vn?
For current code which closing previous issue #2, there is an new problem around IGNORE/IGNORABLE declaration.
e.g.
above code will be expanded to below;
:Gn is declared as IGNORE, but it will be used as initial value of a following LET variable vn.
Is #:Gn declared as IGNORABLE?
Should vn be removed from internal LET and forbid to use vn?