Comment 1 for bug 1761947

Revision history for this message
Douglas Katzman (dougk) wrote :

The macroexpander of DEFMETHOD is to blame, but this could be considered just an unfortunate side-effect of *EVALUATOR-MODE* being set to :COMPILE, which makes the entire form a single lambda. As such, the defmethod expander warns before the DEFCLASS is executed. Some potential fixes:

 - get the macro to inject the WARN call into the :COMPILE-TOPLEVEL effects of its expansion so that it will only warn from COMPILE-FILE

 - remove the warning generation from the macro, but put a compiler-macro on LOAD-DEFMETHOD that warns if any of the classes named in its 4th argument - which should always have the form (LIST (FIND-CLASS 'thing) ...) - aren't known.
   This is similar to using vacuous transforms as we do to detect misshapen FORMAT strings.

 - just remove the warning entirely. this is really taking the low road

 - don't set *EVALUATOR-MODE* to :COMPILE

 - turn this warning into a deferrable warning (patch attached)