Opened 10 years ago

Last modified 10 months ago

#351 new defect

Compiler loses lexical macro in (eval-when (:compile-toplevel ...))

Reported by: Mark Evenson Owned by:
Priority: major Milestone: 1.9.3
Component: compiler Version: 1.4.0-dev
Keywords: has-test Cc:
Parent Tickets:

Description

Douglas Katzman reports in http://article.gmane.org/gmane.lisp.armedbear.devel/3132 that:

This code fragment works with (LOAD "/tmp/foo.lisp") but not (COMPILE-FILE "/tmp/foo.lisp")

(eval-when (:compile-toplevel :load-toplevel :execute)
  (defvar *count* 0)
  (macrolet ((something (sym) `(setf (get ,sym 'uniqueid) (incf *count*))))
    (defun register-it (x) (something x))))
(eval-when (:compile-toplevel :execute)
  (format t "~&OK so far~%")
  (register-it :foo))
(eval-when (:compile-toplevel :execute)
  (format t "~&Got ~D~%" (symbol-plist :foo)))

Armed Bear Common Lisp 1.3.0
Java 1.7.0_51 Oracle Corporation
Java HotSpot(TM) 64-Bit Server VM
Low-level initialization completed in 0.258 seconds.
Startup completed in 1.231 seconds.
Type ":help" for a list of available commands.
CL-USER(1): (compile-file "/tmp/foo.lisp")
; Compiling /private/tmp/foo.lisp ...
; (DEFVAR *COUNT* ...)
; (DEFUN REGISTER-IT ...)
OK so far
#<THREAD "interpreter" {3A284BEE}>: Debugger invoked on condition of type UNDEFINED-FUNCTION
  The function SOMETHING is undefined.
Restarts:
…

Change History (13)

comment:1 Changed 8 years ago by Mark Evenson

Milestone: 1.4.01.5.0

Ticket retargeted after milestone closed

comment:2 Changed 7 years ago by Mark Evenson

Milestone: 1.5.01.6.0

Ticket retargeted after milestone closed

comment:3 Changed 4 years ago by Mark Evenson

Milestone: 1.6.01.6.1

Ticket retargeted after milestone closed

comment:4 Changed 4 years ago by Mark Evenson

Milestone: 1.6.11.6.2

Ticket retargeted after milestone closed

comment:5 Changed 4 years ago by Mark Evenson

Milestone: 1.6.21.7.0

comment:6 Changed 4 years ago by Mark Evenson

Milestone: 1.7.01.7.1

Ticket retargeted after milestone closed

comment:7 Changed 4 years ago by Mark Evenson

Milestone: 1.7.11.7.2

Ticket retargeted after milestone closed

comment:8 Changed 4 years ago by Mark Evenson

Milestone: 1.7.21.8.0

Milestone renamed

comment:9 Changed 3 years ago by Mark Evenson

Milestone: 1.8.01.8.1

Ticket retargeted after milestone closed

comment:10 Changed 2 years ago by Mark Evenson

Milestone: 1.8.11.9.0

comment:11 Changed 15 months ago by Mark Evenson

Milestone: 1.9.01.9.1

comment:12 Changed 14 months ago by Mark Evenson

Milestone: 1.9.11.9.2

comment:13 Changed 10 months ago by Mark Evenson

Milestone: 1.9.21.9.3
Note: See TracTickets for help on using tickets.