[squeak-dev] The Trunk: Tools-topa.721.mcz
Tobias Pape
Das.Linux at gmx.de
Wed Nov 30 10:16:36 UTC 2016
On 30.11.2016, at 09:40, Levente Uzonyi <leves at caesar.elte.hu> wrote:
> On Wed, 30 Nov 2016, Tobias Pape wrote:
>
>>
>> On 30.11.2016, at 00:34, Chris Muller <asqueaker at gmail.com> wrote:
>>
>>> Hey Tobias, it looks like you added a <generated> tag too.
>>> Traditionally, the purpose of such a tag is used by code-generating
>>> applications to let programmers know that a particular piece of code
>>> is the purview of the framework which generated it, so they would know
>>> not to change it since it could very likely be regenerated in the
>>> future, blowing away any custom changes they might make there.
>>> But none of that is the case here. This is not to improve cooperation
>>> with a mysterious framework, but invoked directly by the developer out
>>> for a one-time convenience, just like when they use the clipboard.
>>> Such a tag could actually confuse or deter future developers from
>>> adding; e.g., lazy-initialization into the method, because its not
>>> part of a code-generating application.
>>> IMO, we should not put a <generated> tag in one-time-generated getters
>>> and setters.
>>
>>
>> ¯\_(ツ)_/¯
>>
>> what about <autoaccessor>?
>> I'd rather to have a way to identify non-human made code, whether transient
>> or permanent.
>
> Why is that for this case?
>
> (I would rather not use pragmas in these methods, because I don't see if they would ever be used. If I were really want to mark these methods, I'd use a different author or a category other than accessing.)
yeah, but its IMHO more appropriate to have "proper" metadata.
I actually intended to make a new icon marker for those methods :)
>
> Levente
>
>>
>> -t
>>
>>
>>
>>> On Tue, Nov 29, 2016 at 8:31 AM, <commits at source.squeak.org> wrote:
>>>> Tobias Pape uploaded a new version of Tools to project The Trunk:
>>>> http://source.squeak.org/trunk/Tools-topa.721.mcz
>>>> ==================== Summary ====================
>>>> Name: Tools-topa.721
>>>> Author: topa
>>>> Time: 29 November 2016, 3:27:14.942944 pm
>>>> UUID: 2d64a7b9-8dcb-46fd-9371-c9dcb3f9cfd1
>>>> Ancestors: Tools-mt.720
>>>> Accessor generation.
>>>> Makes for a nice class hook and pushes responsibility to the class.
>>>> =============== Diff against Tools-mt.720 ===============
>>>> Item was added:
>>>> + ----- Method: Behavior>>createGetterFor: (in category '*Tools-Browser-accessors') -----
>>>> + createGetterFor: aName
>>>> +
>>>> + | code |
>>>> + code := '{1}\ <generated>\\ ^ {1}\' withCRs format: {aName.}.
>>>> + self compile: code classified: #accessing notifying: nil.!
>>>> Item was added:
>>>> + ----- Method: Behavior>>createInstVarAccessors (in category '*Tools-Browser-accessors') -----
>>>> + createInstVarAccessors
>>>> + "Create getters and setters for all inst vars defined here,
>>>> + except do NOT clobber or override any selectors already understood by me"
>>>> +
>>>> + self instVarNames
>>>> + collect: [:each | each asSymbol]
>>>> + thenDo: [:instVar |
>>>> + (self canUnderstand: instVar) ifFalse: [self createGetterFor: instVar].
>>>> + (self canUnderstand: instVar asMutator) ifFalse: [self createSetterFor: instVar]].
>>>> +
>>>> + !
>>>> Item was added:
>>>> + ----- Method: Behavior>>createSetterFor: (in category '*Tools-Browser-accessors') -----
>>>> + createSetterFor: aName
>>>> +
>>>> + | code |
>>>> + code := '{1}: anObject\ <generated>\\ {2}{1} := anObject.\' withCRs
>>>> + format: {aName. self settersReturnValue ifTrue: ['^ '] ifFalse: [''].}.
>>>> + self compile: code classified: #accessing notifying: nil.!
>>>> Item was changed:
>>>> ----- Method: Browser>>createInstVarAccessors (in category 'class functions') -----
>>>> createInstVarAccessors
>>>> - "Create getters and setters for all inst vars defined at the level of the current class selection,
>>>> - except do NOT clobber or override any selectors already understood by the instances of the selected class"
>>>> + self selectedClassOrMetaClass
>>>> + ifNotNil: [:aClass | aClass createInstVarAccessors].
>>>> + !
>>>> - self selectedClassOrMetaClass ifNotNil:
>>>> - [:aClass| | cr |
>>>> - cr := String with: Character cr.
>>>> - aClass instVarNames do:
>>>> - [:aName | | newMessage setter |
>>>> - (aClass canUnderstand: aName asSymbol) ifFalse:
>>>> - [newMessage :=
>>>> - aName, cr, cr,
>>>> - ' ^ ', aName.
>>>> - aClass compile: newMessage classified: #accessing notifying: nil].
>>>> - (aClass canUnderstand: (setter := aName, ':') asSymbol) ifFalse:
>>>> - [newMessage :=
>>>> - setter, ' anObject', cr, cr,
>>>> - (aClass settersReturnValue ifTrue: [' ^'] ifFalse: [' ']),
>>>> - aName, ' := anObject'.
>>>> - aClass compile: newMessage classified: #accessing notifying: nil]]]!
More information about the Squeak-dev
mailing list
|