Now I do not understand what is this classSide here.
If we have a trait apparently we do not file out a class method as
class but as classSide.... Super strange.

Stef

On Sun, Feb 25, 2018 at 9:46 PM, Stephane Ducasse
<[email protected]> wrote:
> Apparently this method was like that in Pharo 60 so this is not my edit.
>
> 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']]
>
> Now it does not mean that this is not a bug I introduced.
>
>
>
>
> On Sun, Feb 25, 2018 at 9:42 PM, Stephane Ducasse
> <[email protected]> wrote:
>> 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