<div dir="ltr">I have another one:<div><br></div><div>For several test cases I have to suppress the display of progress (otherwise the tests would run much slower). To do that, I override performTest to catch the relevant exceptions/notifications and mute them. I need that in multiple test case classes, but I do not want to provide the progress suppressing with an abstract test superclass. So I created a trait that contains this performTest override. Test cases that need the progress muted can mix that in by using the trait.</div><div><br></div><div>Why don't I want the abstract superclass? Because I have two more such traits for test cases: one that provides additional assert methods for a certain type of object, and one that provides a method for suppressing change notifications so the changes file is not cluttered that much when the tests run. As traits I can mix in and combine these into test case classes when they are required.</div><div><br></div><div>The latter mentioned trait would benefit from a traits implementation with state, though.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Am So., 31. März 2019 um 21:21 Uhr schrieb Levente Uzonyi <<a href="mailto:leves@caesar.elte.hu">leves@caesar.elte.hu</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Sat, 30 Mar 2019, David T. Lewis wrote:<br>
<br>
> Changing the subject line to focus on Levente's question.<br>
><br>
> On Thu, Mar 28, 2019 at 06:43:11PM +0100, Levente Uzonyi wrote:<br>
>> <br>
>> What are the current use cases for traits?<br>
><br>
> In order to experiment with Git based repositories, I have loaded the<br>
> Tonel package from the github repositories of Jakob Reschke.<br>
><br>
>       Installer ensureRecentMetacello.<br>
>       (Smalltalk classNamed: #Metacello) new<br>
>          repository: 'github://j4yk/tonel:squeak';<br>
>          baseline: 'Tonel';<br>
>          load.<br>
><br>
> This brings in the FS-AnsiStreams package, which uses traits.<br>
><br>
> Having traits in Squeak allows me to load this package.<br>
<br>
I haven't tried your snippet and I don't know which version of FS depends <br>
on Traits, but the one on SqueakSource definitely does not.<br>
Btw, Traits can be flattened, so it's possible to make it loadable into <br>
images with no Trait support.<br>
<br>
So far all use cases of Traits in this thread (and its parent) were about <br>
interfaces. Squeak doesn't have a concept for that, and Traits are <br>
definitely more than just simple interfaces (as long as you don't want to <br>
interface state). Perhaps we need interfaces instead of traits.<br>
<br>
Levente<br>
<br>
><br>
> Dave<br>
<br>
</blockquote></div>