I have been beset by some trait strangeness. I am using damien's 3.9.1 images (via ramon).
A trait (T) method (tmA) 'inherited' by a class C usually shows up in italics in a class browser on C. Editing tmA on T itself correctly affects C.
Then, seemingly at random, a trait edit will not propagate to the class. When I look at C I now see tmA without italics. It has the old version of tmA. I did not put it there myself.
In between were some round trips to monticello, and some saves or exits or re-starts of the image.
Any ideas? I did a tiny experiment and predictably could not reproduce it.
Thanks - Sophie
Hi Sophie
I haven't seen this before. Maybe next time it happens, you get some more datapoints. Monticello could be the culprit (maybe from merging versions?). If you have any additional clues that may help to make the problem reproducible, I'm happy to take a look.
Adrian
On Aug 20, 2008, at 19:30 , itsme213 wrote:
I have been beset by some trait strangeness. I am using damien's 3.9.1 images (via ramon).
A trait (T) method (tmA) 'inherited' by a class C usually shows up in italics in a class browser on C. Editing tmA on T itself correctly affects C.
Then, seemingly at random, a trait edit will not propagate to the class. When I look at C I now see tmA without italics. It has the old version of tmA. I did not put it there myself.
In between were some round trips to monticello, and some saves or exits or re-starts of the image.
Any ideas? I did a tiny experiment and predictably could not reproduce it.
Thanks - Sophie
I have been beset by some trait strangeness. ... In between were some round trips to monticello ...
I started a fresh 3.9 dev image and tried to load my code with traits from monticello, got an error when monticello got to my trait.
Ideas?
Thanks - Sophie
==============
VM: Win32 - a SmalltalkImage Image: Squeak3.9.1 [latest update: #7075]
UndefinedObject(Object)>>doesNotUnderstand: #select:thenCollect: Receiver: nil Arguments and temporary variables: aMessage: select: [] in MCClassDefinition>>selectVariables: {[:v | v perform: a...etc... Receiver's instance variables: nil
MCClassDefinition>>selectVariables: Receiver: a MCClassDefinition(TMyTrait) Arguments and temporary variables: aSelector: #isPoolImport v: nil Receiver's instance variables: name: #TMyTrait superclassName: nil variables: nil category: 'MP-Views2' type: nil comment: '' commentStamp: '' traitComposition: nil classTraitComposition: nil
MCClassDefinition>>poolDictionaries Receiver: a MCClassDefinition(TMyTrait) Arguments and temporary variables:
Receiver's instance variables: name: #TMyTrait superclassName: nil variables: nil category: 'MP-Views2' type: nil comment: '' commentStamp: '' traitComposition: nil classTraitComposition: nil
MCClassDefinition>>requirements Receiver: a MCClassDefinition(TMyTrait) Arguments and temporary variables:
Receiver's instance variables: name: #TMyTrait superclassName: nil variables: nil category: 'MP-Views2' type: nil comment: '' commentStamp: '' traitComposition: nil classTraitComposition: nil
--- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #select:thenCollect: MCClassDefinition>>selectVariables: MCClassDefinition>>poolDictionaries MCClassDefinition>>requirements - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MCDependencySorter>>unresolvedRequirementsFor: MCDependencySorter>>add: [] in MCDependencySorter>>addAll: {[:ea | self add: ea]} Array(SequenceableCollection)>>do: MCDependencySorter>>addAll: MCDependencySorter class>>items: MCDependencySorter class>>sortItems: MCStWriter>>writeDefinitions: MCMczWriter>>serializeDefinitions: MCMczWriter>>writeSnapshot: MCMczWriter>>writeDefinitions: MCMczWriter>>writeVersion: MCMczWriter class>>fileOut:on: MCVersion>>fileOutOn: [] in MCCacheRepository(MCFileBasedRepository)>>basicStoreVersion: {[:s | aVersion fileOutOn: s]} MCCacheRepository(MCDirectoryRepository)>>writeStreamForFileNamed:replace:do: MCCacheRepository(MCFileBasedRepository)>>writeStreamForFileNamed:do: MCCacheRepository(MCFileBasedRepository)>>basicStoreVersion: MCCacheRepository>>basicStoreVersion: MCCacheRepository(MCRepository)>>storeVersion: MCVersion>>addToCache MCVersion>>initializeWithPackage:info:snapshot:dependencies: MCVersion class>>package:info:snapshot:dependencies: MCMczReader(MCVersionReader)>>basicVersion MCMczReader(MCVersionReader)>>version [] in MCDirectoryRepository(MCFileBasedRepository)>>loadVersionFromFileNamed: {[:r | r version]} [] in MCDirectoryRepository(MCFileBasedRepository)>>versionReaderForFileNamed:do: {[:class | aBlock value: (class on: s fileName: aString)]} MCMczReader class(Object)>>ifNotNilDo: [] in MCDirectoryRepository(MCFileBasedRepository)>>versionReaderForFileNamed:do: {[:s | (MCVersionReader readerClassForFileNamed: aString) ifNotNilDo: [:cla...]} MCDirectoryRepository>>readStreamForFileNamed:do: MCDirectoryRepository(MCFileBasedRepository)>>versionReaderForFileNamed:do: MCDirectoryRepository(MCFileBasedRepository)>>loadVersionFromFileNamed: [] in MCDirectoryRepository(MCFileBasedRepository)>>versionFromFileNamed: {[self loadVersionFromFileNamed: aString]} Dictionary>>at:ifAbsent: MCDirectoryRepository(MCFileBasedRepository)>>versionFromFileNamed: [] in MCFileRepositoryInspector>>version {[version := repository versionFromFileNamed: selectedVersion]} BlockContext>>ensure: CursorWithMask(Cursor)>>showWhile: MCFileRepositoryInspector>>version MCFileRepositoryInspector>>load PluggableButtonMorphPlus(PluggableButtonMorph)>>performAction PluggableButtonMorphPlus>>performAction [] in PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp: {[:m | (m containsPoint: evt cursorPoint) ifTrue: [m performAction]]} Array(SequenceableCollection)>>do: ...etc...
hm, some time ago somebody reported a problem which turned out to be caused by a version of MC 1.5 that did not properly support traits. Which version of MC have you used to store the package you cannot load anymore?
Adrian
On Aug 20, 2008, at 20:06 , itsme213 wrote:
I have been beset by some trait strangeness. ... In between were some round trips to monticello ...
I started a fresh 3.9 dev image and tried to load my code with traits from monticello, got an error when monticello got to my trait.
Ideas?
Thanks - Sophie
==============
VM: Win32 - a SmalltalkImage Image: Squeak3.9.1 [latest update: #7075]
UndefinedObject(Object)>>doesNotUnderstand: #select:thenCollect: Receiver: nil Arguments and temporary variables: aMessage: select: [] in MCClassDefinition>>selectVariables: {[:v | v perform: a...etc... Receiver's instance variables: nil
MCClassDefinition>>selectVariables: Receiver: a MCClassDefinition(TMyTrait) Arguments and temporary variables: aSelector: #isPoolImport v: nil Receiver's instance variables: name: #TMyTrait superclassName: nil variables: nil category: 'MP-Views2' type: nil comment: '' commentStamp: '' traitComposition: nil classTraitComposition: nil
MCClassDefinition>>poolDictionaries Receiver: a MCClassDefinition(TMyTrait) Arguments and temporary variables:
Receiver's instance variables: name: #TMyTrait superclassName: nil variables: nil category: 'MP-Views2' type: nil comment: '' commentStamp: '' traitComposition: nil classTraitComposition: nil
MCClassDefinition>>requirements Receiver: a MCClassDefinition(TMyTrait) Arguments and temporary variables:
Receiver's instance variables: name: #TMyTrait superclassName: nil variables: nil category: 'MP-Views2' type: nil comment: '' commentStamp: '' traitComposition: nil classTraitComposition: nil
--- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #select:thenCollect: MCClassDefinition>>selectVariables: MCClassDefinition>>poolDictionaries MCClassDefinition>>requirements
MCDependencySorter>>unresolvedRequirementsFor: MCDependencySorter>>add: [] in MCDependencySorter>>addAll: {[:ea | self add: ea]} Array(SequenceableCollection)>>do: MCDependencySorter>>addAll: MCDependencySorter class>>items: MCDependencySorter class>>sortItems: MCStWriter>>writeDefinitions: MCMczWriter>>serializeDefinitions: MCMczWriter>>writeSnapshot: MCMczWriter>>writeDefinitions: MCMczWriter>>writeVersion: MCMczWriter class>>fileOut:on: MCVersion>>fileOutOn: [] in MCCacheRepository(MCFileBasedRepository)>>basicStoreVersion: {[:s | aVersion fileOutOn: s]} MCCacheRepository (MCDirectoryRepository)>>writeStreamForFileNamed:replace:do: MCCacheRepository(MCFileBasedRepository)>>writeStreamForFileNamed:do: MCCacheRepository(MCFileBasedRepository)>>basicStoreVersion: MCCacheRepository>>basicStoreVersion: MCCacheRepository(MCRepository)>>storeVersion: MCVersion>>addToCache MCVersion>>initializeWithPackage:info:snapshot:dependencies: MCVersion class>>package:info:snapshot:dependencies: MCMczReader(MCVersionReader)>>basicVersion MCMczReader(MCVersionReader)>>version [] in MCDirectoryRepository (MCFileBasedRepository)>>loadVersionFromFileNamed: {[:r | r version]} [] in MCDirectoryRepository (MCFileBasedRepository)>>versionReaderForFileNamed:do: {[:class | aBlock value: (class on: s fileName: aString)]} MCMczReader class(Object)>>ifNotNilDo: [] in MCDirectoryRepository (MCFileBasedRepository)>>versionReaderForFileNamed:do: {[:s | (MCVersionReader readerClassForFileNamed: aString) ifNotNilDo: [:cla...]} MCDirectoryRepository>>readStreamForFileNamed:do: MCDirectoryRepository (MCFileBasedRepository)>>versionReaderForFileNamed:do: MCDirectoryRepository (MCFileBasedRepository)>>loadVersionFromFileNamed: [] in MCDirectoryRepository(MCFileBasedRepository)>>versionFromFileNamed: {[self loadVersionFromFileNamed: aString]} Dictionary>>at:ifAbsent: MCDirectoryRepository(MCFileBasedRepository)>>versionFromFileNamed: [] in MCFileRepositoryInspector>>version {[version := repository versionFromFileNamed: selectedVersion]} BlockContext>>ensure: CursorWithMask(Cursor)>>showWhile: MCFileRepositoryInspector>>version MCFileRepositoryInspector>>load PluggableButtonMorphPlus(PluggableButtonMorph)>>performAction PluggableButtonMorphPlus>>performAction [] in PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp: {[:m | (m containsPoint: evt cursorPoint) ifTrue: [m performAction]]} Array(SequenceableCollection)>>do: ...etc...
"Adrian Lienhard" adi@netstyle.ch wrote
Which version of MC have you used to store the package you cannot load anymore?
How do I tell? My base is Damien's 3.9 image.
- Sophie
On Wed, Aug 20, 2008 at 01:06:33PM -0500, itsme213 wrote:
I have been beset by some trait strangeness. ... In between were some round trips to monticello ...
I started a fresh 3.9 dev image and tried to load my code with traits from monticello, got an error when monticello got to my trait.
Did you do anything to Monticello in between starting the fresh image and installing your package?
If not, perhaps try upgrading to MC1.5, and see if that fixes it. Here's how: http://installer.pbwiki.org/LevelPlayingField
What package is this? How can I reproduce this problem? I'll try to fix it if you have a package that breaks.
Traits and Monticello are not well tested at all. We have already found several bugs in MC surrounding Traits and fixed them in 1.5
squeak-dev@lists.squeakfoundation.org