Pascal J.Bourguignon <pjb@...> 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:
> 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
(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...