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!
Nicolas Cellier uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-nice.448.mcz
==================== Summary ====================
Name: Tools-nice.448
Author: nice
Time: 24 February 2013, 9:20:11.082 pm
UUID: 6d5eb1d5-ae18-44eb-95a8-4fbdf02a2e66
Ancestors: Tools-nice.447
FakeClassPool is obsolete in Squeak, remove recent reference to it.
Note: we should deprecate this class
=============== Diff against Tools-nice.447 ===============
Item was changed:
----- Method: Debugger>>runUntil (in category 'code pane menu') -----
runUntil
"Step until an expression evaluates to other than false, reporting an erroer if it doesn't evaluate to true.
Remember the expression in an inst var. If shift is pressed when the expression is supplied, don't update the UI.
If shift is pressed while stepping, stop stepping. Using a user interrupt to break out would be more natural
but Squeak currently doesn't provide a UserInterrupt expection. It should do."
| expression receiver context method value lastUpdate updateUI breakOnShift |
expression := UIManager default
request: 'run until expression is true (shift to disable ui update; shift to break).'
initialAnswer: (untilExpression ifNil: 'boolean expression').
(expression isNil or: [expression isEmpty]) ifTrue:
[^self].
updateUI := breakOnShift := Sensor shiftPressed not.
untilExpression := expression.
context := self selectedContext.
receiver := context receiver.
- FakeClassPool adopt: receiver class.
method := receiver class evaluatorClass new
compiledMethodFor: untilExpression
in: context
to: receiver
notifying: nil
+ ifFail: [^ #failedDoit]
- ifFail: [FakeClassPool adopt: nil. ^ #failedDoit]
logged: false.
lastUpdate := Time millisecondClockValue.
- FakeClassPool adopt: nil.
[self selectedContext == context
and: [(value := receiver with: context executeMethod: method) == false]] whileTrue:
[self doStep.
Time millisecondClockValue - lastUpdate > 50 ifTrue:
[updateUI ifTrue: [World displayWorldSafely].
breakOnShift
ifTrue: [Sensor shiftPressed ifTrue: [^self]]
ifFalse: [Sensor shiftPressed ifFalse: [breakOnShift := true]].
lastUpdate := Time millisecondClockValue]].
(value ~~ false and: [value ~~ true]) ifTrue:
[UIManager default inform: 'expression ', (untilExpression contractTo: 40), ' answered ', (value printString contractTo: 20), '!!!!']!
Nicolas Cellier uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-nice.448.mcz
==================== Summary ====================
Name: Tools-nice.448
Author: nice
Time: 24 February 2013, 9:20:11.082 pm
UUID: 6d5eb1d5-ae18-44eb-95a8-4fbdf02a2e66
Ancestors: Tools-nice.447
FakeClassPool is obsolete in Squeak, remove recent reference to it.
Note: we should deprecate this class
=============== Diff against Tools-nice.447 ===============
Item was changed:
----- Method: Debugger>>runUntil (in category 'code pane menu') -----
runUntil
"Step until an expression evaluates to other than false, reporting an erroer if it doesn't evaluate to true.
Remember the expression in an inst var. If shift is pressed when the expression is supplied, don't update the UI.
If shift is pressed while stepping, stop stepping. Using a user interrupt to break out would be more natural
but Squeak currently doesn't provide a UserInterrupt expection. It should do."
| expression receiver context method value lastUpdate updateUI breakOnShift |
expression := UIManager default
request: 'run until expression is true (shift to disable ui update; shift to break).'
initialAnswer: (untilExpression ifNil: 'boolean expression').
(expression isNil or: [expression isEmpty]) ifTrue:
[^self].
updateUI := breakOnShift := Sensor shiftPressed not.
untilExpression := expression.
context := self selectedContext.
receiver := context receiver.
- FakeClassPool adopt: receiver class.
method := receiver class evaluatorClass new
compiledMethodFor: untilExpression
in: context
to: receiver
notifying: nil
+ ifFail: [^ #failedDoit]
- ifFail: [FakeClassPool adopt: nil. ^ #failedDoit]
logged: false.
lastUpdate := Time millisecondClockValue.
- FakeClassPool adopt: nil.
[self selectedContext == context
and: [(value := receiver with: context executeMethod: method) == false]] whileTrue:
[self doStep.
Time millisecondClockValue - lastUpdate > 50 ifTrue:
[updateUI ifTrue: [World displayWorldSafely].
breakOnShift
ifTrue: [Sensor shiftPressed ifTrue: [^self]]
ifFalse: [Sensor shiftPressed ifFalse: [breakOnShift := true]].
lastUpdate := Time millisecondClockValue]].
(value ~~ false and: [value ~~ true]) ifTrue:
[UIManager default inform: 'expression ', (untilExpression contractTo: 40), ' answered ', (value printString contractTo: 20), '!!!!']!
Nicolas Cellier uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-nice.448.mcz
==================== Summary ====================
Name: Tools-nice.448
Author: nice
Time: 24 February 2013, 9:20:11.082 pm
UUID: 6d5eb1d5-ae18-44eb-95a8-4fbdf02a2e66
Ancestors: Tools-nice.447
FakeClassPool is obsolete in Squeak, remove recent reference to it.
Note: we should deprecate this class
=============== Diff against Tools-nice.447 ===============
Item was changed:
----- Method: Debugger>>runUntil (in category 'code pane menu') -----
runUntil
"Step until an expression evaluates to other than false, reporting an erroer if it doesn't evaluate to true.
Remember the expression in an inst var. If shift is pressed when the expression is supplied, don't update the UI.
If shift is pressed while stepping, stop stepping. Using a user interrupt to break out would be more natural
but Squeak currently doesn't provide a UserInterrupt expection. It should do."
| expression receiver context method value lastUpdate updateUI breakOnShift |
expression := UIManager default
request: 'run until expression is true (shift to disable ui update; shift to break).'
initialAnswer: (untilExpression ifNil: 'boolean expression').
(expression isNil or: [expression isEmpty]) ifTrue:
[^self].
updateUI := breakOnShift := Sensor shiftPressed not.
untilExpression := expression.
context := self selectedContext.
receiver := context receiver.
- FakeClassPool adopt: receiver class.
method := receiver class evaluatorClass new
compiledMethodFor: untilExpression
in: context
to: receiver
notifying: nil
+ ifFail: [^ #failedDoit]
- ifFail: [FakeClassPool adopt: nil. ^ #failedDoit]
logged: false.
lastUpdate := Time millisecondClockValue.
- FakeClassPool adopt: nil.
[self selectedContext == context
and: [(value := receiver with: context executeMethod: method) == false]] whileTrue:
[self doStep.
Time millisecondClockValue - lastUpdate > 50 ifTrue:
[updateUI ifTrue: [World displayWorldSafely].
breakOnShift
ifTrue: [Sensor shiftPressed ifTrue: [^self]]
ifFalse: [Sensor shiftPressed ifFalse: [breakOnShift := true]].
lastUpdate := Time millisecondClockValue]].
(value ~~ false and: [value ~~ true]) ifTrue:
[UIManager default inform: 'expression ', (untilExpression contractTo: 40), ' answered ', (value printString contractTo: 20), '!!!!']!