diff options
Diffstat (limited to 'js')
-rw-r--r-- | js/repl.ts | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/js/repl.ts b/js/repl.ts index ac6700657..cbba2b791 100644 --- a/js/repl.ts +++ b/js/repl.ts @@ -25,6 +25,7 @@ function replError(...args: unknown[]): void { } const helpMsg = [ + "_ Print last execution output", "exit Exit the REPL", "help Print this help message" ].join("\n"); @@ -71,10 +72,15 @@ function isRecoverableError(e: Error): boolean { // Evaluate code. // Returns true if code is consumed (no error/irrecoverable error). +// Also attempts setting window._ to last valid execute output. // Returns false if error is recoverable function evaluate(code: string): boolean { const [result, errInfo] = core.evalContext(code); if (!errInfo) { + // Try setting `window._` to the returned result + try { + window._ = result; + } catch {} // Silently fail on error. replLog(result); } else if (errInfo.isCompileError && isRecoverableError(errInfo.thrown)) { // Recoverable compiler error @@ -107,6 +113,9 @@ export async function replLoop(): Promise<void> { exit(exitCode); }; + // Make _ a valid property on window to avoid confusing error. + window._ = undefined; + while (true) { let code = ""; // Top level read |