Even though it cannot compile the functions at runtime, delivery can generate the forms for them. The necessary method combination templates can be found by using the keyword
:warn-on-missing-templates
. This defaults to
nil
. If this keyword is non-
nil
, a warning is issued whenever a missing template is detected. The value of this keyword can be either a string or a pathname, in which case it is a file to put the warning in, or
t,
in which case the warning goes to
*terminal-io*
. The warning takes this form:
;*****
;>>> Add this combination to the template file <<<
(CLOS::PRE-COMPILE-COMBINED-METHODS
((1 COMMON-LISP:NIL) COMMON-LISP:NIL (CLOS::_CALL-METHOD_)))
; *****
You can take this template, place it in an ordinary lisp file, return to LispWorks, and compile it. This compiled file should be loaded into the image before delivery. See Incorporating the templates into the application.
Most missing templates can be found statically, and if
:warn-on-missing-templates
has been set, they are output at the time of saving the delivery image. An attempt is made to find all missing templates. However, because method combinations are dependent on the actual arguments to generic functions, it is not always possible to find every missing template. The application must be run to be sure of finding all the missing templates.
Note: Valid combinations may be generated or seen in warnings even if they are never used. Delivery can only tell you what combinations the application could potentially use.