[Vm-dev] reorganizing opensmalltalk-vm
Tobias Pape
Das.Linux at gmx.de
Mon Oct 29 20:03:24 UTC 2018
> On 29.10.2018, at 20:03, Levente Uzonyi <leves at caesar.elte.hu> wrote:
>
> On Fri, 26 Oct 2018, Tobias Pape wrote:
>
>> Think I have a method with a very long selector, eg MCClassDefinition:
>>
>>
>> initializeWithName: nameString
>> superclassName: superclassString
>> traitComposition: traitCompositionString
>> classTraitComposition: classTraitCompositionString
>> category: categoryString instVarNames: ivarArray
>> classVarNames: cvarArray
>> poolDictionaryNames: poolArray
>> classInstVarNames: civarArray
>> type: typeSymbol
>> comment: commentString
>> commentStamp: stampStringOrNil
>> name := nameString asSymbol.
>> superclassName := superclassString ifNil: ['nil'] ifNotNil: [superclassString asSymbol].
>> traitComposition := traitCompositionString.
>> classTraitComposition := classTraitCompositionString.
>> category := categoryString.
>> type := typeSymbol.
>> comment := commentString withSqueakLineEndings.
>> commentStamp := stampStringOrNil ifNil: [self defaultCommentStamp].
>> variables := OrderedCollection new.
>> self addVariables: ivarArray ofType: MCInstanceVariableDefinition.
>> self addVariables: cvarArray sorted ofType: MCClassVariableDefinition.
>> self addVariables: poolArray sorted ofType: MCPoolImportDefinition.
>> self addVariables: civarArray ofType: MCClassInstanceVariableDefinition
>>
>>
>> Seeing the Tonel format, this formatting of the selector, even if it is uncommon, would not be preserved, right?
>
> I just checked, and the formatting is preserved, even comments and white spaces between the selector part and the argument names appear as written.
> The only nuance is that no parser can optimally separate the method body from its signature, so there are edge cases with unexpected results. E.g.:
>
> If you add type information as comments like below, the last comment will appear if it were part of the method body:
>
> Object >> foo: foo "Integer" bar: bar "String"
>
> ^foo asString, bar
>
> will be stored as
>
> Object >> foo: foo "Integer" bar: bar [ "String"
>
> ^foo asString, bar
> ]
Interesting!
More information about the Vm-dev
mailing list