Structure class alias badness
Somewhere along the way, structure classes (or their layouts) are being conflated with their names. This becomes evident if you alias a structure class and then remove that alias. This doesn't happen with classes defined with DEFCLASS, although there is some related funniness I'm still trying to track down in that case.
E.g.: given a file "struct-bug.lisp" containg the following forms:
(setf (find-class 'alias) (find-class 'record))
(setf (find-class 'alias) nil)
This is SBCL 188.8.131.52-6548750, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* (load (compile-file "struct-bug" :verbose nil :print nil))
* (compile-file "struct-bug" :verbose nil :print nil)
; file: /home/alex/
; in: DEFSTRUCT RECORD
; (DEFSTRUCT RECORD)
; --> PROGN DEFUN PROGN EVAL-WHEN
; (SB-IMPL::%DEFUN 'MAKE-RECORD
; (BLOCK MAKE-RECORD
; NIL 'NIL (SB-C:SOURCE-
; caught ERROR:
; dumping anonymous layout: #<SB-KERNEL:LAYOUT for #<SB-KERNEL:
; compilation unit finished
; caught 1 ERROR condition
* (load *)
debugger invoked on a SB-INT:
Execution of a form compiled with errors.
NIL 'NIL (SOURCE-LOCATION))
dumping anonymous layout: #<SB-KERNEL:LAYOUT for #<SB-KERNEL:
restarts (invokable by number or by possibly-
0: [ABORT] Exit debugger, returning to top level.
#<SB-SYS:FD-STREAM for "file /home/alex/