<div dir="ltr">Hi David,<div class="gmail_extra"><br><div class="gmail_quote">On Sat, Mar 17, 2018 at 12:10 PM,  <span dir="ltr"><<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">David T. Lewis uploaded a new version of Environments to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/Environments-dtl.72.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/<wbr>trunk/Environments-dtl.72.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Environments-dtl.72<br>
Author: dtl<br>
Time: 17 March 2018, 3:09:49.564301 pm<br>
UUID: e9aed004-8798-41c0-83f9-<wbr>a04f5963dd55<br>
Ancestors: Environments-jr.71, Environments-fbs.27<br>
<br>
Merge Environments-fbs.27<br>
<br>
=============== Diff against Environments-jr.71 ===============<br>
<br>
Item was added:<br>
+ ----- Method: Environment>>rootClasses (in category 'accessing') -----<br>
+ rootClasses<br>
+       "return a collection of classes which have a nil superclass"<br>
+       ^ (self select: [:each | each isBehavior and: [each superclass isNil]]) asOrderedCollection.!<br></blockquote><div><br></div><div>At least for me this isn't quite good enough.  There's a possibility that someone could establish a variable whose value is a root, e.g. by</div><div><br></div><div>Smalltalk at: #MyRootClass put: ProtoObject</div><div><br></div><div>and that would cause rootClasses to answer a duplicate.  So IMO it needs to do one of</div><div>- convert to a set and then back to a collection</div><div>- answer a set</div><div>- enumerate over associations, selecting those classes whose key is the same as their name</div></div><br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>