Willem Broekema
2017-11-05 16:32:35 UTC
In the following form:
(defmacro m (&environment e)
(declare (ignore e))
'm)))
The declaration ends up in the wrong place after macro expansion:
(LAMBDA (#:WHOLE-5584 #:ENVIRONMENT-5585)
(LET* ((E #:ENVIRONMENT-5585))
;; the (DECLARE (IGNORE E)) should go here
(UNLESS (<= 0 (SYSTEM::DOT-LENGTH (CDR #:WHOLE-5584)) 0)
(SYSTEM::ARG-COUNT-ERROR 'DEFMACRO
'M
(CDR #:WHOLE-5584)
'(&ENVIRONMENT E)
0
0))
(LET* ()
(DECLARE (IGNORE E)) ;; but it ends up here
(BLOCK M 'M))))
Using Armed Bear Common Lisp 1.5.0
- Willem
(defmacro m (&environment e)
(declare (ignore e))
'm)))
The declaration ends up in the wrong place after macro expansion:
(LAMBDA (#:WHOLE-5584 #:ENVIRONMENT-5585)
(LET* ((E #:ENVIRONMENT-5585))
;; the (DECLARE (IGNORE E)) should go here
(UNLESS (<= 0 (SYSTEM::DOT-LENGTH (CDR #:WHOLE-5584)) 0)
(SYSTEM::ARG-COUNT-ERROR 'DEFMACRO
'M
(CDR #:WHOLE-5584)
'(&ENVIRONMENT E)
0
0))
(LET* ()
(DECLARE (IGNORE E)) ;; but it ends up here
(BLOCK M 'M))))
Using Armed Bear Common Lisp 1.5.0
- Willem