'From Croquet1.0beta of 11 April 2006 [latest update: #1] on 6 August 2008 at 12:53:05 pm'! !ClosureCompilerTest methodsFor: 'tests' stamp: 'eem 6/24/2008 12:28'! doTestDebuggerTempAccessWith: one with: two "Test debugger access for temps" | outerContext local1 remote1 | outerContext := thisContext. local1 := 3. remote1 := 1/2. self assert: (Compiler new evaluate: 'one' in: thisContext to: self) == one. self assert: (Compiler new evaluate: 'two' in: thisContext to: self) == two. self assert: (Compiler new evaluate: 'local1' in: thisContext to: self) == local1. self assert: (Compiler new evaluate: 'remote1' in: thisContext to: self) == remote1. Compiler new evaluate: 'local1 := -3.0' in: thisContext to: self. self assert: local1 = -3.0. (1 to: 2) do: [:i| | local2 r1 r2 r3 r4 | local2 := i * 3. remote1 := local2 / 7. self assert: thisContext ~~ outerContext. self assert: (r1 := Compiler new evaluate: 'one' in: thisContext to: self) == one. self assert: (r2 := Compiler new evaluate: 'two' in: thisContext to: self) == two. self assert: (r3 := Compiler new evaluate: 'i' in: thisContext to: self) == i. self assert: (r4 := Compiler new evaluate: 'local2' in: thisContext to: self) == local2. self assert: (r4 := Compiler new evaluate: 'remote1' in: thisContext to: self) == remote1. self assert: (r4 := Compiler new evaluate: 'remote1' in: outerContext to: self) == remote1. Compiler new evaluate: 'local2 := 15' in: thisContext to: self. self assert: local2 = 15. Compiler new evaluate: 'local1 := 25' in: thisContext to: self. self assert: local1 = 25. { r1. r2. r3. r4 } "placate the compiler"]. self assert: local1 = 25. self assert: remote1 = (6/7)! ! !ClosureCompilerTest methodsFor: 'tests' stamp: 'eem 6/24/2008 11:03'! testDebuggerTempAccess self doTestDebuggerTempAccessWith: 1 with: 2! ! !MessageAsTempNode methodsFor: 'access to remote temps' stamp: 'eem 6/24/2008 11:50'! store: expr from: encoder "ctxt tempAt: n -> ctxt tempAt: n put: expr (see Assignment). For assigning into temps of a context being debugged." selector key ~= #namedTempAt: ifTrue: [^self error: 'cant transform this message']. ^ MessageAsTempNode new receiver: receiver selector: #namedTempAt:put: arguments: (arguments copyWith: expr) precedence: precedence from: encoder! ! MessageAsTempNode removeSelector: #isTemp! MessageAsTempNode removeSelector: #nowHasDef! MessageAsTempNode removeSelector: #nowHasRef! MessageAsTempNode removeSelector: #scope! MessageAsTempNode removeSelector: #scope:!