the problem is here of course but I need my mind back (In the train to
home). ...


MCMethodDefinition>>fullClassName
"Using #class selector for classes for backwards compatibility"

    ^ self classIsMeta
        ifFalse: [self className]
        ifTrue: [
            (self actualClass isNil or: [ self actualClass isTrait ])
                ifFalse: [self className, ' class']
                ifTrue: [self className, ' classSide']]





On Sun, Feb 25, 2018 at 9:41 PM, Stephane Ducasse
<[email protected]> wrote:
> Hi Alistair
>
> This is my mistake! I introduced this bug when I transformed
> theMetaClass to classSide
> Now I was paying super attention and I did not touch theMetaClass even
> when class would have been far enough.
> So do you have a scenario? So that I can try to have a look.
> Unfortunately I was away from home and lab since a week and I may have
> problem to allocate concentrated time.
> But I will try.
> Tx for reporting this!
>
> Stef
>
>
> On Sun, Feb 25, 2018 at 3:48 PM, Alistair Grant <[email protected]> wrote:
>> Hi Everyone,
>>
>> I'm working on integrating the file attribute primitives in to the main
>> code during bootstrap.
>>
>> Class methods for FileAttributesPluginPrims are written out as:
>>
>>
>>
>> !FileAttributesPluginPrims classSide methodsFor: 'initialize' stamp: 'nil'!
>> reset
>> "Reload the masks"
>>
>> Default := nil.! !
>>
>>
>> As you can see, the class name is written with "classSide" instead of
>> "class", resulting in the method quietly being ignored during file in.
>>
>> This comes about in:
>>
>>
>> MCStWriter>>writeMethodPreamble: definition
>>     self chunkContents: [:str |
>>         stream bang.
>>         str nextPutAll: definition fullClassName;
>>             nextPutAll: ' methodsFor: ';
>>             nextPutAll: definition category asString printString;
>>             nextPutAll: ' stamp: ';
>>             nextPutAll: definition timeStamp asString printString
>>         ]
>>
>>
>> which calls:
>>
>>
>> MCMethodDefinition>>fullClassName
>> "Using #class selector for classes for backwards compatibility"
>>
>>     ^ self classIsMeta
>>         ifFalse: [self className]
>>         ifTrue: [
>>             (self actualClass isNil or: [ self actualClass isTrait ])
>>                 ifFalse: [self className, ' class']
>>                 ifTrue: [self className, ' classSide']]
>>
>>
>>
>> Because FileAttributesPluginPrims doesn't exist in the image (the code
>> is read in from the git repository and being written out to a .st file),
>> #actualClass returns nil, resulting in "classSide" being used instead of
>> "class".
>>
>> I've never seen "classSide" used in chunk format.  Is there any time
>> "classSide" is valid, and any suggestions on how this should be fixed?
>> (My first thought is to just change MCStWriter>>writeMethodPreamble: to
>> only write "class").
>>
>>
>>
>> Thanks,
>> Alistair
>>

Reply via email to