Status: Accepted
Owner:
[hidden email]
Labels: Type-Defect Priority-Medium GLASS-Server Version-3.0.x Version-2.4.x
New issue 356 by
[hidden email]: variableSubclasses incorrectly
handled for Monticello
http://code.google.com/p/glassdb/issues/detail?id=356In GemStone/S classes inherit the indexable property from their
superclasses, so if a subclass of Array is created using the following:
Array subclass: 'MetacelloMethodSectionPath'
instVarNames: #()
classVars: #()
classInstVars: #()
poolDictionaries: #[]
inDictionary: ''
category: 'Metacello-Core-Constructors'
The MetacelloMethodSectionPath is still indexable. However, using the
#subclass... style to create the same class in Pharo results in a
NON-indexable class ... one MUST use the #variableSubclass... variant to
create indexable subclasses.
This has an impact on how Monticello class definitions are created (the
type must be #variable).
For years, GemStone has used the #normal type in this case.
I discovered the problem, when I save the package containing
MetacelloMethodSectionPath from GemStone and then loaded the package into
Pharo where certain tests started failing[1].
It is legal in GemStone to use the #indexableSubclass... variant of class
creation (equivalent of #variableSubclass... in Pharo):
Array indexableSubclass: 'MetacelloMethodSectionPath'
instVarNames: #()
classVars: #()
classInstVars: #()
poolDictionaries: #[]
inDictionary: ''
category: 'Metacello-Core-Constructors'
But (and there is always a but) doing so exposes even more implementation
differences between GemStone and Pharo (AbstractException and all
subclasses are technically indexable classes) so I've introduced
CLASS>>_portableIsIndexable to judicially filter out the classes that I am
currently aware of that are exposed to this problem.
[1]
https://travis-ci.org/dalehenrich/metacello-work/builds/5117074--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings