1. sometimes the debugger can not inspect a single tempvar (list of all temps is working) 2. number of temp vars (in method header) is wrong:
| a b c | a := 1. b := 2. c := 3. [[a asString] on: Error do: [:ex | a value: a value: b value: c]. c < 0] whileTrue.
method header numtemps 1
| a b c | a := 1. b := 2. c := 3. c < 0 ifTrue: [ [ a asString ] on: Error do: [ :ex | a value: a value: b value: c ]. c < 0 ]. ^ a
method header numtemps 3
both methods define a block with a nested block. In the first method it is the receiver of #whileTrue: the second method it is the argument to #ifTrue: I think both blocks are optimized, but somehow the block receiving the whileTrue: message makes the computation for the number of tempvars wronng
What is happening is that the variables are wrongly put in a temp vector... in the case of loops. the one temp is this vector. this should be fixed.