Ben

We were thinking also about reflection.


So may be we should introduce a relationship between the method and its actual implementation.

Imagine that
    mother := foo:(bar:zork:)
    mother children
            foo:bar:
            foo:bar:zork:

then
    senders (foo:bar:)
=>
    sender (motherOf(foo:bar:))

where motherOf is a back pointer from the expanded method into its mother
But it means that method using foo:bar: should somehow "mention" that they will
use motherOf (foo:bar:).



Le 22/1/16 01:41, Ben Coman a écrit :
I don't have any use cases right now, but I'll keep my eyes open.  But
an example (that is maybe too basic to mess with) is the
#at:ifAbsent:   pattern.  For example, the following would be
"deleted"

    Dictionary>>.at: key
        ^ self at: key ifAbsent: [self errorKeyNotFound: key]

and you would only have....

    Dictionary>>at: key ifAbsent: aBlock
          <optional: ifAbsent default: [ self errorKeyNotFound: key]>

The big in-Image example would be...

      TClass>>
            subclass: aName
            uses: aTraitCompositionOrArray
            instanceVariableNames: someInstanceVariableNames
            classVariableNames: someClassVariableNames
            poolDictionaries: someSharedPoolNames
            package: aCategory
                 <optional: uses default: {}>
                 <optional: instanceVariableNames default: ''>
                 <optional: classVariableNames default: ''>
                 <optional: poolDictionaries default:''>
                 <optional: package 'Unclassified'>

Now I wonder about  senders & implementers  searchability, and if
"virtual" methods are generated in all combinations of optional
parameters and show up in the system browser list, but show the "main"
method as their source.


Reply via email to