<div dir="ltr"><div dir="auto"><div dir="auto">Well, the categories define the scope of packages in Squeak, together with the package names. Since system categories do not splice single classes into parts provided by different modules (here: packages), I see no point in the concept of extensions for categories. Packages do define this splicing of classes, and thereby define extension methods, so extension methods do not make sense without packages. Packages get mixed up with categories because the assignment of objects to packages works through categories.

</div><div dir="auto"><br></div><div>Technically a class would not belong to a package if a) the class were not in any system category or b) there is no package that covers the system category.</div><div><br></div><div>But it does not matter in this case:</div><div>PackageInfo>>extensionMethods answers the methods that belong to the receiver package, but are defined in classes that do not belong to the same package. That's why this is *not* about the package being extended, but about the package extending other classes. Hence I inquired about the wording of the selectors. The enumerating of methods works by inspecting all subclasses of ProtoObject. So it 

even 

includes extension methods of classes that are not in a category or without a package covering the category.</div><div><br></div><div>Concerning the cardinality of your package--category association: a package can contain multiple categories (all with the package name as a prefix of the category name, separated from the remainder with a -), but the classes in a category should all belong to a single package. The combined set of methods of these classes need not all belong to the same package because some of them can be extension methods that belong to other packages. You can define overlapping packages, such as Kernel and Kernel-Numbers. Then it is ambiguous to which package the classes in the category Kernel-Numbers belong. But you usually don't want to do that.</div><div><br></div><div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Thiede, Christoph <<a href="mailto:Christoph.Thiede@student.hpi.uni-potsdam.de" rel="noreferrer" target="_blank">Christoph.Thiede@student.hpi.uni-potsdam.de</a>> schrieb am Di., 14. Jan. 2020, 09:02:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



<div>

<div id="gmail-m_-4140081107908485815m_1023693969366683706m_8827590507617367136divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr">
<p>But I think I need to refine it again ... Actually, I am mixing up system categories and packages here. This seems to be a true n:m relation (n, m >= 0, n + m > 0, to be exact :P), so I would like to introduce two separate selectors, #allExtensionsOfPackage:
 and #allExtensionsOfSystemCategory:.</p>
<p>However, I did not find any logic in the image to search for extension methods without any package. Is this actually missing, or rather intended ("you cannot extend a system category, but only a package")? I might be completely on the wrong track at the
 moment ...</p>
<p><br>
</p>
<p>(To see the issue, you can simply try to browse all extensions of the UserObjects category.)</p>
<p><br>
</p>
<p>Best,</p>
<p>Christoph</p>
<div id="gmail-m_-4140081107908485815m_1023693969366683706m_8827590507617367136Signature">
<div id="gmail-m_-4140081107908485815m_1023693969366683706m_8827590507617367136divtagdefaultwrapper" dir="ltr" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div name="divtagdefaultwrapper">
<div><font size="2" color="#808080"></font></div>
</div>
</div>
</div>
</div>
<hr style="display:inline-block;width:98%">
<div id="gmail-m_-4140081107908485815m_1023693969366683706m_8827590507617367136divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>Von:</b> Squeak-dev <<a href="mailto:squeak-dev-bounces@lists.squeakfoundation.org" rel="noreferrer noreferrer" target="_blank">squeak-dev-bounces@lists.squeakfoundation.org</a>> im Auftrag von Chris Muller <<a href="mailto:asqueaker@gmail.com" rel="noreferrer noreferrer" target="_blank">asqueaker@gmail.com</a>><br>
<b>Gesendet:</b> Dienstag, 14. Januar 2020 07:09:55<br>
<b>An:</b> The general-purpose Squeak developers list<br>
<b>Betreff:</b> Re: [squeak-dev] The Inbox: System-ct.1131.mcz</font>
<div> </div>
</div>
<div>
<div dir="ltr">But it IS the package being extended.  "Of" is just right.  If you'll pardon the pun, nice extension, Christoph!   :-D</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Mon, Jan 13, 2020 at 1:30 PM Jakob Reschke <<a href="mailto:forums.jakob@resfarm.de" rel="noreferrer noreferrer" target="_blank">forums.jakob@resfarm.de</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="auto">How about "Extensions from" or "in" instead of "Extensions of" since it is not the package being extended? Native speakers what's your opinion?
<div dir="auto"><br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr"><<a href="mailto:commits@source.squeak.org" rel="noreferrer noreferrer noreferrer" target="_blank">commits@source.squeak.org</a>> schrieb am Mo., 13. Jan. 2020, 12:21:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Christoph Thiede uploaded a new version of System to project The Inbox:<br>
<a href="http://source.squeak.org/inbox/System-ct.1131.mcz" rel="noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">http://source.squeak.org/inbox/System-ct.1131.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: System-ct.1131<br>
Author: ct<br>
Time: 13 January 2020, 12:21:05.96857 pm<br>
UUID: b10f8320-ffea-024e-9696-4fdc0e642415<br>
Ancestors: System-cmm.1129<br>
<br>
Adds support for extension methods to SystemNavigation<br>
<br>
=============== Diff against System-cmm.1129 ===============<br>
<br>
Item was added:<br>
+ ----- Method: SystemNavigation>>allExtensionsOf: (in category 'query') -----<br>
+ allExtensionsOf: aPackage<br>
+ <br>
+       ^ aPackage extensionMethods!<br>
<br>
Item was added:<br>
+ ----- Method: SystemNavigation>>browseAllExtensionsOf: (in category 'browse') -----<br>
+ browseAllExtensionsOf: aPackage<br>
+       "self default browseAllExtensionsOf: SystemNavigation package"<br>
+ <br>
+       ^ self<br>
+                       browseMessageList: [self allExtensionsOf: aPackage]<br>
+                       name: ('Extensions of package {1}' translated format: {aPackage name})!<br>
<br>
<br>
</blockquote>
</div>
<br>
</blockquote>
</div>
</div>
</div>

<br>
</blockquote></div>