this is Seaside30 on Pharo2.0 and also on Seaside 31 on Pharo30

Stef

> is this 3.0?
> 
> We removed CompiledMethodWithNode there… 
> 
> 
> On Jun 30, 2013, at 10:35 AM, Stéphane Ducasse <stephane.duca...@inria.fr> 
> wrote:
> 
>> Probably linked to 
>> 
>> addFileIn:  invokes 
>> 
>> 
>> compile: aString into: aClass classified: aSymbol 
>> 
>>      "The trick here is to be as silently a possible so that the package is 
>> not marked dirty when running WAFileLibrary test.
>>      This also makes running tests much faster."
>> 
>> 
>>      | methodNode compiledMethod selector methodAndNode |
>>      methodNode := aClass compilerClass new 
>>              compile: aString
>>              in: aClass
>>              notifying: nil
>>              ifFail: [ GRError signal: 'syntax error' ].
>>      selector := methodNode selector.
>>      methodAndNode := CompiledMethodWithNode 
>>              generateMethodFromNode: methodNode
>>              trailer: aClass defaultMethodTrailer.
>>      compiledMethod := methodAndNode method.
>>      compiledMethod 
>>              putSource: aString
>>              fromParseNode: methodAndNode node
>>              inFile: 2
>>              withPreamble: [ :file | 
>>                      aClass
>>                              printCategoryChunk: aSymbol asString
>>                              on: file priorMethod: (aClass compiledMethodAt: 
>> selector ifAbsent: [ nil ]).
>>                      file cr ].
>>      aClass 
>>              addSelectorSilently: selector
>>              withMethod: compiledMethod.
>>      self doSilently:  [
>>              aClass organization 
>>                      classify: selector
>>                      under: aSymbol ]
>> 
>> And after it breaks nicely….
>> 
>> Stef
>> 
>> 
>> 
>> On Jun 30, 2013, at 10:24 AM, Stéphane Ducasse <stephane.duca...@inria.fr> 
>> wrote:
>> 
>>> Hi esteban
>>> 
>>> In Seaside, I created a subclass of WAFileLibrary
>>> then 
>>> StefWAFileLibrary addAllFilesIn: 'foo'
>>>     my folder foo contained a simple sh file
>>> 
>>> I got a method created in the class side of StefWAFileLibrary
>>> 
>>> I created a separated package and I could not save (I could save) but the 
>>> method could be included.
>>> I added other methods by hand and they were saved but not the methods 
>>> created by the addAllFilesIn:
>>> 
>>> I suspect that the addAllFilesIn: did not raise a proper announcement. 
>>> When I put a halt in snapshot  packageSet does not get any methods.
>>> 
>>> Stef
>>> 
>>> 
>>> snapshot
>>>     | packageInfo definitions categories |
>>>     self halt.
>>>     packageInfo := self packageSet.
>>>     definitions := OrderedCollection new.
>>>     categories := (packageInfo packages collect: #packageName) asArray.
>>>     categories isEmpty 
>>>             ifFalse: [ definitions add: (MCOrganizationDefinition 
>>> categories: categories) ].
>>>             
>>>     packageInfo methods 
>>>             do: [:ea | definitions add: ea asMCMethodDefinition] 
>>>             displayingProgress: [ :ea| 'Snapshotting methods...' ].
>>>             
>>>     packageInfo overriddenMethods
>>>             do: [:ea | definitions add:
>>>                                     (packageInfo 
>>> changeRecordForOverriddenMethod: ea) asMCMethodDefinition]
>>>             displayingProgress: [ :ea| 'Searching for overrides in ', ea 
>>> asString ].
>>>             
>>>     packageInfo definedClasses 
>>>             do: [:ea | definitions addAll: ea classDefinitions] 
>>>             displayingProgress: [ :ea| 'Snapshotting class ', ea asString ].
>>>             
>>>     (packageInfo respondsTo: #hasPreamble) ifTrue: [
>>>             packageInfo hasPreamble 
>>>                     ifTrue: [definitions add: (MCPreambleDefinition from: 
>>> packageInfo)].
>>>             packageInfo hasPostscript 
>>>                     ifTrue: [definitions add: (MCPostscriptDefinition from: 
>>> packageInfo)].
>>>             packageInfo hasPreambleOfRemoval 
>>>                     ifTrue: [definitions add: (MCRemovalPreambleDefinition 
>>> from: packageInfo)].
>>>             packageInfo hasPostscriptOfRemoval 
>>>                     ifTrue: [definitions add: 
>>> (MCRemovalPostscriptDefinition from: packageInfo)]]. 
>>>     ^ MCSnapshot fromDefinitions: definitions
>>> 
>>> 
>>> Stef
>> 
>> 
> 
> 


Reply via email to