The Trunk: Monticello-nice.533.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Monticello-nice.533.mcz

commits-2
Nicolas Cellier uploaded a new version of Monticello to project The Trunk:
http://source.squeak.org/trunk/Monticello-nice.533.mcz

==================== Summary ====================

Name: Monticello-nice.533
Author: nice
Time: 24 February 2013, 11:19:26.177 pm
UUID: 082a31a2-8e19-4d30-9661-6fa84dfc436e
Ancestors: Monticello-fbs.532

Correct this bug: it was impossible to remove an instance variable from Compiler/Parser and probably a few other classes, because Compiler was invoked during its own modification.
The fix will work as long as those class won't be Trait's composed...

=============== Diff against Monticello-fbs.532 ===============

Item was changed:
  ----- Method: MCClassDefinition>>createClass (in category 'installing') -----
  createClass
  | superClass class composition |
  superClass := superclassName == #nil ifFalse:
  [Smalltalk at: superclassName].
  [class := (ClassBuilder new)
  name: name
  inEnvironment: superClass environment
  subclassOf: superClass
  type: type
  instanceVariableNames: self instanceVariablesString
  classVariableNames: self classVariablesString
  poolDictionaries: self sharedPoolsString
  category: category.
  ] on: Warning, DuplicateVariableError do:[:ex| ex resume].
 
  "The following is written to support traits unloading"
+ composition := self traitComposition ifNil: [Array new] ifNotNil: [:traitComposition | Compiler evaluate: traitComposition].
- composition := Compiler evaluate: (self traitComposition ifNil:['{}']).
  (composition isCollection and:[composition isEmpty and:[class traitComposition isEmpty]]) ifFalse:[
  class setTraitComposition: composition asTraitComposition.
  ].
 
+ composition := self classTraitComposition ifNil: [Array new] ifNotNil: [:traitComposition | Compiler evaluate: traitComposition].
- composition := Compiler evaluate: (self classTraitComposition ifNil:['{}']).
  (composition isCollection and:[composition isEmpty and:[class class traitComposition isEmpty]]) ifFalse:[
  class class setTraitComposition: composition asTraitComposition.
  ].
 
  ^class!