[Pharo-project] Issue with traits
Create a trait: Trait named: #ABBA uses: {} category: 'ABBA'. - add a method #foo to ABBA trait Then create 2 classes which using it: Object subclass: #ABBAB uses: ABBA instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'ABBA'. Object subclass: #ABBAC uses: ABBA instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'ABBA'. now what i found interesting: (ABBAB methodDict at: #foo) == (ABBAC methodDict at: #foo) but as side effect, we got this one: (ABBAB methodDict at: #foo) methodClass ==> ABBAC which i find a bit disturbing :( I'm not sure if given issue could have a major impact somewhere... But i would just #clone the trait method before installing it.. Yes, it takes more space, but it makes each of such methods unrelated. And i strongly assume that these methods should be unrelated, and moreover, recompiled for each class separately, because global var in one class could be a class var in another one, so a trait method, like: foo ^ Bar will behave depending on class environment. -- Best regards, Igor Stasenko AKA sig.
participants (1)
-
Igor Stasenko