Since you probably want to query a method after on the class, I would return 1
#flushEvents

this method is send by
SmalltalkImage garbageCollect
SmalltalkImage shutDownImage:
WorldMorph installForUIProcessReinstall
and the *class side * method
Object class flushEvents.

What would you expect this method returns:
" the classes of the�� environment fore references to #flush events"
(RBBrowserEnvironment new referencesTo:#flushEvents) classes

1. SmalltalkImage/WorldMorph/Object class
2. SmalltalkImage/WorldMorph/Object
3. SmalltalkImage/WorldMorph

Because if I want two this is easy
������
������ query collect: #theNonMetaclass

1, because all three classes resp. the meta class "Object class" refer to this (this is how Pharo 3 behaves)
2, because all three classes have a method on the instance or class side refering to this (this is what I would expect)
3. because there are only two non-meta classes refering to this method (this is how Pharo4/5 behaves)
3 is a bug!
When we look for refs we should get them all.



?

I don't know, but this is crucial for deciding the way on how to clean the current RBEnvironments implementation.

oh yes!
Thanks for looking into it.





2015-06-22 22:39 GMT+02:00 Nicolai Hess <nicolaihess@web.de>:


2014-12-18 22:32 GMT+01:00 Yuriy Tymchuk <yuriy.tymchuk@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 <nicolaihess@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 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
Some RBBrowserEnvironments don't work well with Metaclasses
Some rules aren't applied on the classside anymore
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 (!)