On Nov 16, 2020, at 03:48, Robert Munyer 2433647181@munyer.com wrote:
COMPILE-FILE is supposed to expand all macros in such a way that they will not be expanded again when the compiled file is loaded. (3.2.2.2)
The file below has 4 output lines that start with "*** Expanding macro". None of those lines should be printed when the compiled file is loaded.
------- begin test-min-compilation.lisp -------
(macrolet ((m1 () (format t "~&*** Expanding macro 1.~%") '(format t "~&Output of macro 1.~%"))) (m1))
(defconstant +dc+ (macrolet ((m2 () (format t "~&*** Expanding macro 2 inside DEFCONSTANT.~%") '(format t "~&Output of macro 2.~%"))) (m2)))
(defparameter *dp* (macrolet ((m3 () (format t "~&*** Expanding macro 3 inside DEFPARAMETER.~%") '(format t "~&Output of macro 3.~%"))) (m3)))
(defvar *dv* (macrolet ((m4 () (format t "~&*** Expanding macro 4 inside DEFVAR.~%") '(format t "~&Output of macro 4.~%"))) (m4)))
------- end test-min-compilation.lisp -------
[…]
I have filed this under [trac ticket][477], and thanks for the infomative report with reference to the [relevant passage from the CLHS][3.2.2.2].
[477]: https://abcl.org/trac/ticket/477 [3.2.2.2]: http://www.lispworks.com/documentation/HyperSpec/Body/03_bbb.htm