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