Skip to content

invalid IGNORE/IGNORABLE declaration handling #3

@ichimal

Description

@ichimal

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?

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions