TestTookTooMuchTime
[:err |
"Handle a drawing error"
| errCtx errMorph |
errCtx := thisContext.
[
errCtx := errCtx sender.
"Search the sender chain to find the morph causing the problem"
[errCtx isNotNil and:[(errCtx receiver isMorph) not]]
whileTrue:[errCtx := errCtx sender].
"If we're at the root of the context chain then we have a fatal drawing problem"
errCtx ifNil:[^self handleFatalDrawingError: err description].
errMorph := errCtx receiver.
"If the morph causing the problem has already the #drawError flag set,
then search for the next morph above in the caller chain."
errMorph hasProperty: #errorOnDraw
] whileTrue.
errMorph setProperty: #errorOnDraw toValue: true.
"Install the old error handler, so we can re-raise the error"
err signal.
] in WorldState>>displayWorldSafely:
FullBlockClosure(BlockClosure)>>cull:
[:ex | errorHandlerBlock cull: ex] in FullBlockClosure(BlockClosure)>>onErrorDo:
FullBlockClosure(BlockClosure)>>cull:
Context>>evaluateSignal:
Context>>handleSignal:
TestTookTooMuchTime(Exception)>>signal
Process>>pvtSignal:list:
Array(SequenceableCollection)>>do:
WorldState>>checkIfUpdateNeeded
NullWorldRenderer(AbstractWorldRenderer)>>displayWorldState:ofWorld:
WorldState>>displayWorld:
WorldMorph>>displayWorld
[aWorld displayWorld] in WorldState>>displayWorldSafely:
FullBlockClosure(BlockClosure)>>on:do:
FullBlockClosure(BlockClosure)>>onErrorDo:
WorldState>>displayWorldSafely:
WorldState>>doOneCycleFor:
WorldMorph>>doOneCycleNow
WorldMorph>>doOneCycle
[ WorldMorph currentWorld doOneCycle ] in StDebuggerActionModelTest>>testEventAfterRecompileMethod
FullBlockClosure(BlockClosure)>>whileNil:
StDebuggerActionModelTest>>testEventAfterRecompileMethod
StDebuggerActionModelTest(TestCase)>>performTest