[squeak-dev] The Trunk: Tools-topa.721.mcz
Tobias Pape
Das.Linux at gmx.de
Wed Nov 30 07:27:57 UTC 2016
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.
-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
|