<html><body bgcolor="#FFFFFF"><div>I think I've hit this before. Repro is, filein in the wrong order, wind up with things erroneously inheriting from ProtoObject? It's totally evil, and I thought it was expected behavior (haven't seen it work any other way that I can recall.)<br><br>On Aug 13, 2010, at 12:14 PM, Eliot Miranda &lt;<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>&gt; wrote:<br><br></div><div></div><blockquote type="cite"><div><br><br><div class="gmail_quote">On Fri, Aug 13, 2010 at 1:01 AM, Bert Freudenberg <span dir="ltr">&lt;<a href="mailto:bert@freudenbergs.de"><a href="mailto:bert@freudenbergs.de">bert@freudenbergs.de</a></a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br>
On 12.08.2010, at 21:41, Jecel Assumpcao Jr. wrote:<br>
<br>
&gt; Randal L. Schwartz wrote on Date: Thu, 12 Aug 2010 12:46:52 -0700<br>
</div><div class="im">&gt;&gt; Jecel&gt; 1) the class was defined as a subclass of something that was not in the<br>
&gt;&gt; Jecel&gt; image, so the system was silently making it a subclass of ProtoObject<br>
&gt;&gt; Jecel&gt; instead (though the browser said it was a subclass of Object - very<br>
&gt;&gt; Jecel&gt; odd). Didn't we have a warning for this situation?<br>
&gt;&gt;<br>
&gt;&gt; I can't imagine any case where<br>
&gt;&gt;<br>
&gt;&gt; &nbsp;Foo subclass: #Bar [...]<br>
&gt;&gt;<br>
&gt;&gt; should *succeed* if Foo doesn't exist. &nbsp;Can you explain why this isn't fatal?<br>
&gt;<br>
</div><div class="im">&gt; Indeed, I would expect the compiler to refuse to accept this code since<br>
&gt; it can't know what to do with "Foo". But I am guessing that somehow that<br>
&gt; is being silently converted into a translation to nil instead.<br>
<br>
</div>Not "somehow". There is no special compiler magic for this. It's an unknown global, so simply becomes an entry in Undeclared with a value of nil.<br></blockquote><div><br></div><div>I'm assuming that the problem is that when the global is defined there is no magic that arranges to recompile the subclass and it remains a subclass of nil^H^H^HProtoObject, right?</div>
<div><br></div><div>I was going to reply earlier in the thread that one jsutification is&nbsp;circular package dependencies. &nbsp;e.g. package Foo defines classes A &amp; C, package Bar defines class B. &nbsp;Class hierarchy is A subclass: #B, B subclass: #C. &nbsp;Can't load Foo or Bar without a hack. &nbsp;But unless the system records ProtoObject subclasses that have been parented there-form for the purposes of deferring resolution of Undeclared references and reevaluates their correct definitions when previously undeclared classes are declared this isn't much use. &nbsp;In my Parcel loader the system does do this, but it hides classes subclassed from "absent" classes until those classes become present. &nbsp;The Squeak approach is simpler (and has much less fall-out on tools etc), but it would be nice if orphaned classes could be redefined as parent classes arrive.</div>
<div><br></div><div>best</div><div>Eliot</div><div>&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<font color="#888888"><br>
- Bert -<br>
</font><div><div></div><div class="h5"><br>
&gt; UndefinedObject does have a<br>
&gt; #subclass:instanceVariableNames:classVariableNames:poolDictionaries:cate<br>
&gt; gory: instance method to deal with legacy code that has the hack "nil<br>
&gt; subclass: #Bar ..." to implement proxies and stuff - it just now<br>
&gt; redirects it to the proper ProtoObject class.<br>
&gt;<br>
&gt; -- Jecel<br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
</div></div></blockquote></div><br>
</div></blockquote><blockquote type="cite"><div><span></span><br></div></blockquote></body></html>