Skip to content

walker:macroexpand-all errors on declarations in symbol-macrolet

Description

walker:macroexpand-all signals an error when processing symbol-macrolet with declarations.

(walker:macroexpand-all '(symbol-macrolet () (declare)))

; >> Condition of type: UNDEFINED-FUNCTION
;    The function WALKER::WALK-UNEXPECTED-DECLARE is undefined.

This should not signal an error.

CLHS (symbol-macrolet) allows declarations:

Syntax: symbol-macrolet ((symbol expansion)) declaration form*

Version

Provide details regarding ECL version (or preferably commit), operating system and if revelant the build options and versions of the build tools.

(format t "~&~@{~12@A ~S~%~}"
        :version (lisp-implementation-version)
        :vcs-id (ext:lisp-implementation-vcs-id)
        :os (software-type)
        :os-version (software-version)
        :machine-type (machine-type)
        :features *features*)
     VERSION "24.5.10"
      VCS-ID "UNKNOWN"
          OS "Linux"
  OS-VERSION "6.2.0-39-generic"
MACHINE-TYPE "x86_64"
    FEATURES (:WALKER :CDR-6 :GRAY-STREAMS-MODULE :CDR-1 :CDR-5 :LINUX
              :FORMATTER :CDR-7 :ECL-WEAK-HASH :LITTLE-ENDIAN
              :ECL-READ-WRITE-LOCK :LONG-LONG :UINT64-T :UINT32-T :UINT16-T
              :COMPLEX-FLOAT :LONG-FLOAT :UNICODE :DFFI :CLOS-STREAMS
              :CMU-FORMAT :UNIX :ECL-PDE :DLOPEN :CLOS :THREADS :BOEHM-GC
              :ANSI-CL :COMMON-LISP :FLOATING-POINT-EXCEPTIONS
              :IEEE-FLOATING-POINT :PACKAGE-LOCAL-NICKNAMES :CDR-14
              :PREFIXED-API :FFI :X86_64 :COMMON :ECL)

This also affects MKCL, see this table: https://plaster.tymoon.eu/view/4637.