On 12.09.2011 23:11, Eliot Miranda wrote:
> Hi Phillipe,
>
> On Mon, Sep 12, 2011 at 11:06 AM, Philippe Marschall
> <[email protected] <mailto:[email protected]>> wrote:
>
> Hi
>
> While trying to debug the debugger in Seaside (hi Mike) I stumbled on
> something funny. Seaside the following code to work:
>
> Semaphore forMutualExclusion critical: [
> | sender |
> sender := thisContext sender.
> sender tempAt: sender tempScopedNames size ]
>
>
> This just won't work with the Closure compiler. This approach only
> worked with old blue-book blocks Squeak. Instead you need to look at
> DebuggerMethodMap, tempNamesForContext:, namedTempAt: et al.
Ok, I tried implementing it in terms of #tempNamesForContext: (through
#tempNames) and #namedTempAt: this works sometimes and in other times I
get 'Instances of UndefinedObject are not indexable'. See the attached
unit test.
Cheers
Philippe
'From Pharo1.3 of 16 June 2011 [Latest update: #13300] on 13 September 2011 at
6:40:43 pm'!
TestCase subclass: #TempsTest
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Temps-Test'!
!TempsTest methodsFor: 'private' stamp: 'pmm 9/13/2011 18:30'!
signalInterestingError
Semaphore forMutualExclusion critical: [
Error signal: 'foo' ]! !
!TempsTest methodsFor: 'testing' stamp: 'pmm 9/13/2011 18:40'!
testNamedTempAt
| frames |
frames := OrderedCollection new.
[ self signalInterestingError ]
on: Error
do: [ :error |
| context |
context := error signalerContext.
[ context isNil ] whileFalse: [
frames add: context.
context := context sender ]. ].
"self halt"
frames do: [ :each |
1 to: each tempNames size do: [ :i |
each namedTempAt: i ] ]! !