Okay, I think I may have made some progress, at least in diagnosing
the problem. Fixing it is still slightly beyond my familiarity with
Loop at the moment :(
Here's some annotated output:
ii = 1; Evaluating 'class SimpleClass ->' with whereBlock:
[]
ii = 2; Evaluating ' a' with whereBlock:
[]
ii = 3; Evaluating '' with whereBlock:
[]
ok
ii = 4; Evaluating 't = new SimpleClass()' with whereBlock:
[]
{}
ii = 5; Evaluating 't.a = 10' with whereBlock:
[Assignment{[Variable{name='t'},
Computation{[CallChain{[JavaLiteral{[]},
Call{shellObtainCallArguments{[Computation{[CallChain{[String{''t''}]}]}]}}]}]}]}]
10
ii = 6; Evaluating 't' with whereBlock:
[Assignment{[Variable{name='t'}, CallChain{[JavaLiteral{[]},
Call{shellObtainCallArguments{[String{''t''}]}}]}]},
Assignment{[CallChain{[Variable{name='t'}, Call{a}]},
IntLiteral{value=10}]}]
{a=10}
ii = 7; Evaluating 't' with whereBlock:
[Assignment{[Variable{name='t'}, CallChain{[JavaLiteral{[]},
Call{shellObtainCallArguments{[String{''t''}]}}]}]},
Assignment{[CallChain{[Variable{name='t'}]}, IntLiteral{value=10}]}]
10
ii = 8; Evaluating ':quit' with whereBlock:
[Assignment{[Variable{name='t'}, CallChain{[JavaLiteral{[]},
Call{shellObtainCallArguments{[String{''t''}]}}]}]},
Assignment{[Variable{name='t'}, IntLiteral{value=10}]}]
Looks like the REPL is losing the "Call{a}" part from the whereBlock
and leaving just 't = 10'. I can't figure out why this is happening
though.
On Jul 28, 10:51 pm, "Dhanji R. Prasanna" <
dha...@gmail.com> wrote:
> Good to hear.
>
> Check out LoopShell.java it's all in there.
>
> We basically "fake" a shell context by remembering each evaluation and
> adding it to the "where" block of a throwaway function that is compiled and
> evaluated every time you press enter. So I think there's some error in
> here, stepping through with a debugger should reveal the flaw quickly.
>
> Thanks!
>
> On Sun, Jul 29, 2012 at 7:47 AM, kfb
> <
kaleidoscopicfilmstripbl...@gmail.com>wrote: