Hi Rudi,<br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>I see similar errors in other situations. My guess is that at load time, classes get redefined but object literals from compile-time (with the compile-time class) stay around in the fasl. These literals then have (come load-time) a class with the same name but different identity than the one that find-class returns.</div>
</div></blockquote><div><br></div><div>Thinking about this assumption, I'm still very much puzzled what in our code base would instate an object of class METHOD-COMBINATION. That is, not of one of its two subclasses (SHORT-* or LONG-*), but of the direct type. From what I searched our code base I can't find any code which would do that (i.e. instantiate an object of that type).</div>
<div><br></div><div>Also, when looking at the MACROEXPAND-ALL output of DEFINE-METHOD-COMBINATION, DEFGENERIC and DEFMETHOD, there don't seem to be any direct references to any objects or classes. E.g. the method combination designation in DEFGENERIC gets saved as a symbol which is passed through to our internal %DEFGENERIC function which is called upon evaluation of the DEFGENERIC form be it compiled or interpreted.</div>
<div> </div><div>Also, compilation of DEFINE-METHOD-COMBINATION, DEFGENERIC and DEFMETHOD don't have any other compile-time side effects than that the symbol of the generic function is (temporarily) assigned a function to its symbol function slot. Meaning D-M-C compilation is completely compile-time side effect free, as far as I can tell. Which would be completely contrary to your expectation. </div>
</div><br><div>So, I'm still very puzzled. What would be our best way forward? I'd love to fix this, because I think we'll run into it later as well in "real world" cases. Would getting together on IRC to chat about it be a good next step? (One issue that I see is that all these tests used to pass when I wrote them. So at some point something must have changed which made us incompatible with ourselves. That's another reason why I at least want to understand what's going on...)</div>
<div><br></div><div><br></div><div>Bye,</div><div><br></div><div>Erik.</div>