so let's discuss that on monday with the trait specialists Damien et Sebastian :) On 2013-06-29, at 23:34, Igor Stasenko <siguctua@gmail.com> wrote:
yes, i don't know if it good or bad, but i'd rather prefer that traits applied to Behavior, but not to Class (which has two entangled behaviors). But maybe for human comprehension it is better.. but not for implementing, because it certainly makes model more complex.
On 29 June 2013 22:52, Camillo Bruni <camillobruni@gmail.com> wrote:
On 2013-06-29, at 22:32, Igor Stasenko <siguctua@gmail.com> wrote:
On 29 June 2013 21:21, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
On Jun 29, 2013, at 8:19 PM, Igor Stasenko <siguctua@gmail.com> wrote:
On 29 June 2013 20:12, Camillo Bruni <camillobruni@gmail.com> wrote:
Working on the new class builder I have a hard time figuring out the full trait semantics.
If I use a trait on instance side, does that imply that its classTrait on the metaclass?
No. I do not think so (I will have to think). Normally Trait and ClassTrait are two different classes. NOw I do not remember if a trait is composed of a classTrait too.
Trait has 'classTrait'
yes, but the strange part is, that if you use a Trait on the instance-side it will automatically install the class trait as well.
ClassDescription subclass: #Class uses: TClass ...
and the users
TClass users => an IdentitySet(Class) TClass classTrait users => an IdentitySet(Class class)
so in this case it implies that when you use a Trait on the instance side it will apply also it's classTrait to the class side. So is it ok then to enforce that in the new class builder?
Currently you can do the following in the new class builder:
PharoClassInstaller make: [:builder| builder superclass: Object; name: 'Foo'; traitComposition: TClass ]
which will explicitely NOT install `TClass classTrait` in `Foo class`. Does this behavior make sense?
-- Best regards, Igor Stasenko.