Hi, Let me explain: I have ClassX that is extended to use TraitX. Now, I want to add an instance variable to the main class while the extension is loaded. You would go to ClassX and edit it: Object subclass: #ClassX uses: TraitX instanceVariableNames: 'newInstanceVariable' classVariableNames: '' poolDictionaries: '' category: 'Base-Category' Now, if you save, the uses: clause will go in the base class. So, if I publish the package that only contains the base class I will have an unwanted side effect: the base version of ClassX will use TraitX. Cheers, Doru On 29 Apr 2010, at 18:01, Johan Fabry wrote:
Not necessarily ;-) if the browser displays the uses: TraitX (because it was added by the extension) and you add an instance var, you are going to do that with the uses: TraitX because that's what's displayed in the pane where you add the instance vars. Unless you manually remove it because you are a nasty person... and then you are just shooting yourself in the foot anyway. :-)
Now on traits unload this has to be done in a clever way, not simply reverting to the state before traits load to avoid losing any other changes made.
On 29 Apr 2010, at 10:15, Tudor Girba wrote:
Sure, but if I had the extension loaded and I would want to work on the base class and add an instance variable, I would have a problem, no? :)
Doru
On 29 Apr 2010, at 16:10, Johan Fabry wrote:
Not necessarily, the browser should display uses: TraitX, like it does now. So when browsing the code there is no perceived difference.
On 29 Apr 2010, at 03:07, Tudor Girba wrote:
It also should be noted that it is completely obscure when trying to understand a piece of code :)
Cheers, Doru
On 28 Apr 2010, at 20:03, Alexandre Bergel wrote:
Or can we make a traits installer, that performs the redefinition of target classes? First check if the target classes already declare a uses:, and if not add it. Sounds like simple metaprogramming ...
Any comments on this 'solution'?
Although not perfect, it is easy and efficient.
Alexandre
-- Johan Fabry jfabry@dcc.uchile.cl - http://dcc.uchile.cl/~jfabry PLEIAD Lab - Computer Science Department (DCC) - University of Chile
_______________________________________________ Pharo-users mailing list Pharo-users@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-users
-- www.tudorgirba.com
"It's not how it is, it is how we see it."
_______________________________________________ Pharo-users mailing list Pharo-users@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-users
-- Johan Fabry jfabry@dcc.uchile.cl - http://dcc.uchile.cl/~jfabry PLEIAD Lab - Computer Science Department (DCC) - University of Chile
_______________________________________________ Pharo-users mailing list Pharo-users@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-users
-- www.tudorgirba.com "One cannot do more than one can do."