2015-06-23 9:44 GMT+02:00 Yuriy Tymchuk <yuriy.tymc...@me.com>:

> 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.
>

And maybe we should exclude traits and provide a checkTrait method, because
now there are some lint rules failing because there is code like
checkClasse: aClass
|meta|
meta := aClass class.
.... check on meta


and if this method is called for a trait like TBehavior, TBehavior class
->  Trait
meta is not the classTrait of TBehavior but the Metaclass of Trait.




>
> 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> escribió:
>
>>
>> 2014-12-18 22:32 GMT+01:00 Yuriy Tymchuk <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> 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