diff --git a/src/engine/execute.js b/src/engine/execute.js index be35e31b5..a6958aabd 100644 --- a/src/engine/execute.js +++ b/src/engine/execute.js @@ -50,7 +50,7 @@ const isPromise = function (value) { */ // @todo move this to callback attached to the thread when we have performance // metrics (dd) -const handleReport = function (resolvedValue, sequencer, thread, blockCached) { +const handleReport = function (resolvedValue, sequencer, thread, blockCached, lastOperation) { const currentBlockId = blockCached.id; const opcode = blockCached.opcode; const isHat = blockCached._isHat; @@ -80,7 +80,7 @@ const handleReport = function (resolvedValue, sequencer, thread, blockCached) { } else { // In a non-hat, report the value visually if necessary if // at the top of the thread stack. - if (typeof resolvedValue !== 'undefined' && thread.atStackTop()) { + if (lastOperation && typeof resolvedValue !== 'undefined' && thread.atStackTop()) { if (thread.stackClick) { sequencer.runtime.visualReport(currentBlockId, resolvedValue); } @@ -109,7 +109,7 @@ const handlePromise = (primitiveReportedValue, sequencer, thread, blockCached, l } // Promise handlers primitiveReportedValue.then(resolvedValue => { - handleReport(resolvedValue, sequencer, thread, blockCached); + handleReport(resolvedValue, sequencer, thread, blockCached, lastOperation); // If its a command block. if (lastOperation && typeof resolvedValue === 'undefined') { let stackFrame; @@ -465,7 +465,7 @@ const execute = function (sequencer, thread) { } for (; i < length; i++) { - const last = i === length - 1; + const lastOperation = i === length - 1; const opCached = ops[i]; const blockFunction = opCached._blockFunction; @@ -501,7 +501,7 @@ const execute = function (sequencer, thread) { // If it's a promise, wait until promise resolves. if (isPromise(primitiveReportedValue)) { - handlePromise(primitiveReportedValue, sequencer, thread, opCached, last); + handlePromise(primitiveReportedValue, sequencer, thread, opCached, lastOperation); // Store the already reported values. They will be thawed into the // future versions of the same operations by block id. The reporting @@ -529,7 +529,7 @@ const execute = function (sequencer, thread) { // and continue them later after thawing the reported values. break; } else if (thread.status === Thread.STATUS_RUNNING) { - if (last) { + if (lastOperation) { if (typeof primitiveReportedValue === 'undefined') { // No value reported - potentially a command block. // Edge-activated hats don't request a glow; all @@ -537,7 +537,7 @@ const execute = function (sequencer, thread) { thread.requestScriptGlowInFrame = true; } - handleReport(primitiveReportedValue, sequencer, thread, opCached); + handleReport(primitiveReportedValue, sequencer, thread, opCached, lastOperation); } else { // By definition a block that is not last in the list has a // parent.