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 <[email protected] <mailto:[email protected]>>:



    2014-12-18 22:32 GMT+01:00 Yuriy Tymchuk <[email protected]
    <mailto:[email protected]>>:

        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 <[email protected]
        <mailto:[email protected]>> 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