Skip to content

Commit be10c79

Browse files
committed
Preserve interactive eval context as an attribute of the compiler
1 parent 5cc28f9 commit be10c79

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/HLL/Compiler.nqp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class HLL::Compiler does HLL::Backend::Default {
1111
has @!cli-arguments;
1212
has %!cli-options;
1313
has $!backend;
14+
has $!save_ctx;
1415

1516
method BUILD() {
1617
# Backend is set to the default one, by default.
@@ -56,6 +57,10 @@ class HLL::Compiler does HLL::Backend::Default {
5657
return nqp::readlinefh($stdin);
5758
}
5859

60+
method context() {
61+
$!save_ctx # XXX starting value?
62+
}
63+
5964
method interactive(*%adverbs) {
6065
nqp::printfh(nqp::getstderr(), self.interactive_banner);
6166

@@ -67,7 +72,6 @@ class HLL::Compiler does HLL::Backend::Default {
6772
}
6873

6974
my $target := nqp::lc(%adverbs<target>);
70-
my $save_ctx;
7175
my $prompt := self.interactive_prompt // '> ';
7276
my $code;
7377
while 1 {
@@ -100,13 +104,13 @@ class HLL::Compiler does HLL::Backend::Default {
100104
$code := $code ~ "\n";
101105
my $output;
102106
{
103-
$output := self.eval($code, :outer_ctx($save_ctx), |%adverbs);
107+
$output := self.eval($code, :outer_ctx($!save_ctx), |%adverbs);
104108
CATCH {
105109
self.interactive_exception($!);
106110
}
107111
};
108112
if nqp::defined($*MAIN_CTX) {
109-
$save_ctx := $*MAIN_CTX;
113+
$!save_ctx := $*MAIN_CTX;
110114
}
111115

112116
$code := "";

0 commit comments

Comments
 (0)