diff --git a/packages/runner/src/PortugolExecutor.ts b/packages/runner/src/PortugolExecutor.ts index f481adaa..6fe9b9ab 100644 --- a/packages/runner/src/PortugolExecutor.ts +++ b/packages/runner/src/PortugolExecutor.ts @@ -168,7 +168,12 @@ export class PortugolExecutor { next: event => { switch (event.type) { case "finish": { - this.stdOut += `\nPrograma finalizado. Tempo de execução: ${event.time} milissegundos\n`; + if (event.stopped) { + this.stdOut += `\nO programa foi interrompido! Tempo de execução: ${event.time} milissegundos\n`; + } else { + this.stdOut += `\nPrograma finalizado. Tempo de execução: ${event.time} milissegundos\n`; + } + this.#printTimes({ ...times, execution: event.time }); this.stdOut$.next(this.stdOut); break; @@ -186,12 +191,6 @@ export class PortugolExecutor { break; } - /*case "message": { - this.stdOut += `\nℹ️ ${JSON.stringify(event.message)}\n`; - this.stdOut$.next(this.stdOut); - break; - }*/ - default: { break; } @@ -217,7 +216,7 @@ export class PortugolExecutor { } stop() { - this.reset(); + this.reset(false); } private reset(clearStdOut = true) { @@ -233,7 +232,7 @@ export class PortugolExecutor { this.running = false; this._running$?.unsubscribe(); - this._runner?.destroy(); + this._runner?.destroy(true); } postMessage(message: PortugolMessage) { diff --git a/packages/runner/src/runners/IPortugolRunner.ts b/packages/runner/src/runners/IPortugolRunner.ts index cecba0fd..10e0e36e 100644 --- a/packages/runner/src/runners/IPortugolRunner.ts +++ b/packages/runner/src/runners/IPortugolRunner.ts @@ -7,7 +7,7 @@ export type PortugolEvent = | { type: "stdIn" } | { type: "error"; error: Error } | { type: "parseError"; errors: PortugolCodeError[] } - | { type: "finish"; time: number } + | { type: "finish"; stopped: boolean; time: number } | { type: "message"; message: PortugolMessage }; export type PortugolMessage = { @@ -29,7 +29,7 @@ export abstract class IPortugolRunner { abstract running$: Observable; abstract run(): Observable; - abstract destroy(): void; + abstract destroy(stopped?: boolean): void; abstract postMessage(message: PortugolMessage): void; abstract replyMessage(message: PortugolMessage, result: unknown, transferable?: Transferable[]): void; diff --git a/packages/runner/src/runners/PortugolWebWorkersRunner.ts b/packages/runner/src/runners/PortugolWebWorkersRunner.ts index 49d6910c..89054ff2 100644 --- a/packages/runner/src/runners/PortugolWebWorkersRunner.ts +++ b/packages/runner/src/runners/PortugolWebWorkersRunner.ts @@ -213,12 +213,13 @@ export class PortugolWebWorkersRunner extends IPortugolRunner { return this._run; } - destroy() { + destroy(stopped = false) { this.worker.terminate(); this._run.next({ type: "finish", time: Date.now() - (this.startedAt?.getTime() ?? 0), + stopped, }); this._run.complete();