Compiled COMPILE forms at load time Bug

Raymond Toy toy.raymond at gmail.com
Fri Mar 12 12:35:14 CET 2010


On 3/11/10 9:58 PM, Raymond Toy wrote:
> On 3/10/10 1:47 PM, Helmut Eller wrote:
>> One more thing:
>>
>> (defmacro bar () 1)
>> (compile 'bar '(lambda () 2))
>>
>> should remove the macro binding for bar.  
>>   
> I agree.  I think I've figured out how to remove the macro binding and
> will be checking it in shortly.

Another issue.  This is ok:

* (defstruct rrr a)

RRR
* (defun rrr-a () 42)
Warning:  Undefining structure type:
  RRR
so that this slot accessor can be redefined:
  RRR-A

RRR-A

But:

* (defstruct zzz a)

ZZZ
* (compile 'zzz-a '(lambda () 42))
; Compiling LAMBDA NIL:
; Compiling Top-Level Form:

ZZZ-A
NIL
NIL
* (zzz-a)

42
* (make-zzz)


Invalid number of arguments: 1


So COMPILE has silently zapped the structure.  We should probably print
he warning for this too.

Note that in both cases any existing structures will be in a bad state.
 They still exist, but there's not much you can do with them.

Ray



More information about the cmucl-imp mailing list