Opened 9 years ago
Last modified 9 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.0 |
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 (10)
comment:1 Changed 6 years ago by
Milestone: | 1.4.0 → 1.5.0 |
---|
comment:5 Changed 3 years ago by
Milestone: | 1.6.2 → 1.7.0 |
---|
comment:10 Changed 9 months ago by
Milestone: | 1.8.1 → 1.9.0 |
---|
Note: See
TracTickets for help on using
tickets.
Ticket retargeted after milestone closed