On Dec 10, 2011, at 16:10 , Tamas Papp wrote:
On Sat, 10 Dec 2011, Nikodemus Siivola wrote:
On 10 December 2011 12:15, Tamas Papp <email@example.com> wrote:
Redefining structures (with a different layout, or factoring out parts
to an included structure, etc) sometimes causes glitches like
:DECORATION-MARGIN #S(XY :X 25 :Y 45)
:SPACING #S(XY :X 50 :Y 30))
is not of type
[Condition of type TYPE-ERROR]
This is pretty much expected when redefining structures unless you're
You have in your image instances of structures using the old layout,
which then break when used with the new accessors and predicates.
(Usual suspects include DEFVARs, LOAD-TIME-VALUEs, DEFGLOBALs, closed
over values, EQL-specializers, and slots with :ALLOCATION :CLASS)
I thought about that, but I got this error even when I regenerated the
instances according to the new layout. Of course, I don't know how
deeply SBCL inlines the layout, so it could happen that I forgot to
recompile something, but I did an asdf reload and still got the error
Quote from The Hyperspec:
"The consequences of redefining a defstruct structure are undefined."
Maybe this has been mentioned already, and maybe SBCL makes more of an effort to support structure redefinition, but still...