[squeak-dev] Re: Traits in Trunk - how to remove a trait from a class?

Chris Cunningham cunningham.cb at gmail.com
Sun Oct 21 04:47:12 UTC 2012


On Fri, Oct 19, 2012 at 1:39 AM, Andreas.Raab <andreas.raab at gmx.de> wrote:
> Chris Cunningham wrote
>> Is there a way (UI, code) to make a class NOT use any traits after a
>> class has a Trait assigned to it?
>
> Try this:
>
>   Trait flattenTraitMethodsInClass: MyClass.

That would probably work well, but I wanted to remove the Trait and
all of the behavior related to the Trait from the class.  I could do
this and then delete the methods, but that isn't really efficient.

I did find the 'right' way to do this.  To add a trait to a class, you
change the definition of the class in the browser to look like:

Object subclass: #AClass
	uses: ATraitComposition
	instanceVariableNames: ...

To remove that trait (and any others), change the definition to be:

Object subclass: #AClass
	uses: Array new
	instanceVariableNames: ...

This will remove the Trait and the behavior from the class (and, for
that matter, change the class definition code snippit).  Odd, but it
works.

In my case, the goal was a temporary trait usage while building the
parser, with the intention of removing the behavior from all of the
classes later.  Or, of course, removing it from other classes that I
accidentally added the trait to.

-Chris


More information about the Squeak-dev mailing list