From: Christophe R. <cs...@ca...> - 2004-12-29 18:14:55
|
Pascal J.Bourguignon <pj...@in...> writes: > Wrote file /local/src/sbcl/sbcl/obj/from-host/src/compiler/node.lisp-obj-tmp > The following functions were used but not defined: > SB!C::CONT-NUM SB!C::MAKE-LOOP SB!KERNEL:SPECIFIER-TYPE > SB!KERNEL:MAKE-SINGLE-VALUE-TYPE SB!C::LEXENV-POLICY > The following special variables were not defined: > SB!C::HEAD > 0 errors, 1 warning This is coming from, I think, the slot initform for OUTER-LOOP in DEFSTRUCT COMPONENT. If you change that defstruct to use instead an &aux variable for OUTER-LOOP (:constructor make-component (head tail &aux (last-block tail) (outer-loop (make-loop :kind :outer :head head)))) ... some lines later ... (outer-loop (missing-arg) :type cloop) this should solve the problem. -devel: this really ought to have been caught by sbcl itself. Any ideas why it wasn't? There's a paragraph under DEFSTRUCT in the CLHS which specifically says that automatically constructed constructors shouldn't use slot names as lambda variables, but what happens for explicitly-constructed ones... in any case, I'm pretty sure that the CLHS implies that the initform should be executed in the lexical environment of the defstruct form, not of the constructor... Cheers, Christophe |