ACL source file recording doesn't work from ilisp
Bob Rogers <[email protected]>
| Newsgroups | gmane.lisp.ilisp.devel |
|---|---|
| Message-ID | <[email protected]> |
The following looks like a bug in ACL 6.1 on Linux, but it affects source file recording of definitions modified via ilisp. ilisp:ilisp-eval binds excl:*source-pathname* as suggested in the ACL documentation, and excl:*load-source-file-info* and excl:*record-source-file-info* are both T, so it seems like it ought to work. The first transcripts shows how a simplified example of the ilisp technique fails. Curiously, I do get the correct redefinition warning. The second transcript shows something that is clearly broken in ACL; it also makes me think that there are lexical context issues getting in the way on the first problem. But I'm no longer on a support contract. Is there anybody with ACL support who would like to report this to [email protected]? I am disinclined to try to work around the first problem until I have a better picture of how broken it is, and how soon they are going to fix it. -- Bob Rogers http://rgrjr.dyndns.org/ ------------------------------------------------------------------------ CL-USER(48): CL-USER(48): (let ((excl:*source-pathname* (pathname "~/clinit.cl"))) (funcall (compile nil '(lambda () (defun test2 (x) (* (/ x 2) pi)))))) TEST2 CL-USER(49): CL-USER(49): (excl:source-file 'test2) :TOP-LEVEL CL-USER(50): CL-USER(50): (let ((excl:*source-pathname* (pathname "~/clinit.cl"))) (funcall (compile nil '(lambda () (defun test2 (x) (* (/ x 2) pi)))))) Warning: TEST2, :OPERATOR was defined at the top level and is now being defined in /home/rogers/clinit.cl TEST2 CL-USER(51): CL-USER(51): (excl:source-file 'test2) :TOP-LEVEL CL-USER(56): CL-USER(56): (values excl:*load-source-file-info* excl:*record-source-file-info*) T T CL-USER(57): CL-USER(57): ------------------------------------------------------------------------ CL-USER(2): (defun test (x) (* x pi)) TEST CL-USER(10): (describe #'test) #<Interpreted Function TEST> is a FUNCTION. The arguments are (X) CL-USER(11): (excl:source-file 'test) :TOP-LEVEL CL-USER(12): (compile 'test) TEST NIL NIL CL-USER(14): CL-USER(14): (describe #'test) #<Function TEST> is a COMPILED-FUNCTION. The arguments are (X) CL-USER(16): CL-USER(16): (excl:source-file 'test) :TOP-LEVEL CL-USER(26): (let ((excl:*source-pathname* (pathname "~/clinit.cl"))) (defun test (x) (* (/ x 2) pi))) Warning: TEST, :OPERATOR was defined at the top level and is now being defined in /home/rogers/clinit.cl TEST CL-USER(29): CL-USER(29): (describe #'test) #<Interpreted Closure TEST> is a FUNCTION. The arguments are (X) CL-USER(30): CL-USER(30): (compile 'test) ; While compiling TEST: Warning: Attempting to compile an interpreted closure: TEST Error: Attempt to access the plist field of (*SOURCE-PATHNAME* SPECIAL . SYMBOL) which is not a symbol. [condition type: SIMPLE-ERROR] Restart actions (select using :continue): 0: Return to Top Level (an "abort" restart). 1: Abort entirely from this process. [1] CL-USER(31): :zoom Evaluation stack: (ERROR SIMPLE-ERROR :FORMAT-CONTROL ...) ->(COMP::PROCESS-NEW-SPECIAL-DECLS (#)) (MAPHASH #<Closure # @ #xbfff7afa> #<EQ hash-table with 1 entry @ #x71b235ca>) (COMP::COMPILE-LE (EXCL::.LEXICAL-CLOSURE2. # . #) TEST ...) (COMP::COMPILE-TO-LAPS (EXCL::.LEXICAL-CLOSURE2. # . #) TEST) (COMPILE TEST) (EVAL (COMPILE 'TEST)) (TPL:TOP-LEVEL-READ-EVAL-PRINT-LOOP) (TPL:START-INTERACTIVE-TOP-LEVEL #<TERMINAL-SIMPLE-STREAM [initial terminal io] fd 0/1 @ #x7109cf7a> #<Function TOP-LEVEL-READ-EVAL-PRINT-LOOP> ...) [1] CL-USER(32): ------------------------------------------------------------------------ ------------------------------------------------------- This sf.net email is sponsored by: OSDN - Tired of that same old cell phone? Get a new here for FREE! https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390