I would say, that besides #checkClass: and #checkMethod: rules should also have 
#checkMetaClass: this will allow rule developers to be more flexible, and will 
add a bit more certainty.

Because sometimes you need to check both, then you implement a method and call 
it from #checkClass: and #checkMetaClass:. Sometimes you only need to check one 
of them. And you will always know that metaclass will not sendup in your method.

Uko

> On 23 Jun 2015, at 08:40, Guillermo Polito <guillermopol...@gmail.com> wrote:
> 
> What if rules that need metaclasses ask for them explicitly to the class?
> 
> environment allClasses do: [ :theInstanceSide |
>    self doSomethingWith: theInstanceSide.
>    self doSomethingWith: theInstanceSide classSide. ]
> 
> Just putting another possibility on the table...
> 
> El lun., 22 de jun. de 2015 a la(s) 10:40 p. m., Nicolai Hess 
> <nicolaih...@web.de <mailto:nicolaih...@web.de>> escribió:
> 
> 2014-12-18 22:32 GMT+01:00 Yuriy Tymchuk <yuriy.tymc...@me.com 
> <mailto:yuriy.tymc...@me.com>>:
> I’m ready to help with this issue, but as far as I can tell, it’s not hard to 
> implement the mentors. Here we should decide on the meaning of the phrases. 
> What are "all behaviors” and so on. The reason of the refactoring that I’ve 
> done was that there were two methods with similar names that were doing 
> different things.
> 
> Uko
> 
>> On 18 Dec 2014, at 21:19, Nicolai Hess <nicolaih...@web.de 
>> <mailto:nicolaih...@web.de>> wrote:
>> 
>> Hi,
>> 
>> some time ago Yuriy cleaned up the RBBrowserEnvironment methods for 
>> allClassesAndTraits(Do), classesDo, ....
>> 
>> The fix was good and necessary (I think). But they had an impact
>> on some SmallLint-rules (they arent applied on the class side) and the 
>> behavior
>> for the different Environments changed (compared with Pharo3 
>> (-> 14621 <https://pharo.fogbugz.com/default.asp?14621> Some 
>> RBBrowserEnvironments don't work well with Metaclasses))
>> 
>> As some SmallLint-rules need to iterate over the metaclasses as well and
>> I don't want to revert Yuriys change, I 'll add another method that
>> collect classes and metaclasses. 
>> 
>> So, I need some help, how to name this methods:
>> 
>> all classes (Object, Integer, ....) -> allClasses, ok
>> all classes and metaclasses (Object, Object class, Integer class ) -> ? 
>> allBehaviors?
>> all classes and traits -> allClassesAndTraits, ok
>> all classes and meta classes and traits and class traits -> ? no idea!
>> all metaclasses and class traits -> allMeta(ClassesAndTraits) ? I don't know 
>> if we need this
>> 
>> One problem with "allBehaviors" is, SystemNavigation uses allBehaviors to 
>> iterate
>> over classes, metaclasses, traits and class traits, 
>> allthough a Trait is not a Behavior. (TClass isBehavior -> false)
>> 
>> feedback is welcome
>> 
>> 
>> nicolai
>> 
>> 
> 
> 
> 
> 
> Pharo 3.0:
> SystemNavigation default allClasses size. 4024
> Smalltalk allClasses size. 4024.
> RBBrowserEnvironment default allClasses size. 4024
> RBBrowserEnvironment default classes size. 8048
> 
> Pharo 4.0:
> 
> SystemNavigation default allClasses size. 5012 
> Smalltalk allClasses size. 5012 
> RBBrowserEnvironment default allClasses size. 5012
> RBBrowserEnvironment default classes size.  5012
> 
> -> I "define" the Pharo 4.0 behavior as the correct one. 
> RBEnvironment>>#classes should not contain meta classes.
> 
> Some other RBEnvironments and/or RBRules rely on the "classes = classes and 
> metaclasses" (-> see issue 
> 14621 <https://pharo.fogbugz.com/default.asp?14621>
> Some RBBrowserEnvironments don't work well with Metaclasses
> 14230 <https://pharo.fogbugz.com/default.asp?14230>
> Some rules aren't applied on the classside anymore
> 15302 <https://pharo.fogbugz.com/default.asp?15302>
> a RBEnvironment from #referencesTo: does not list meta classes
> 
> I will change them, and if appropiate, add a new 
> classesAndMetaclasses resp. classesAndMetaclassesDo:
> 
> I don't know about classesAndMetaclassesTraits. And I skip "behaviors" for 
> now. 
> #allBehaviors is suspicious to me, I still don't
> know what they are:
> 
> Smalltalk globals allBehaviors includes:TBehavior. -> true (1)
> TBehavior isBehavior. -> false (!)
> 
> 
> 

Reply via email to