From 0297eb726aa26a350d67eae238f7fcbaeda65bf6 Mon Sep 17 00:00:00 2001 From: jberg Date: Mon, 19 Aug 2019 09:10:46 -0700 Subject: [PATCH] Convert null MAKI objects to global NULL value (#866) * Coerce null MAKI objects to 0 * use global NULL value --- modern/src/maki-interpreter/interpreter.js | 10 ++++++++-- modern/src/maki-interpreter/variable.js | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/modern/src/maki-interpreter/interpreter.js b/modern/src/maki-interpreter/interpreter.js index f458e724..af99cb6f 100644 --- a/modern/src/maki-interpreter/interpreter.js +++ b/modern/src/maki-interpreter/interpreter.js @@ -161,11 +161,17 @@ export function* interpret(start, program, stack = []) { } const obj = popStackValue(); const ret = obj[methodName](...methodArgs); + let value; if (isPromise(ret)) { - stack.push(yield ret); + value = yield ret; } else { - stack.push(ret); + value = ret; } + if (value === null) { + // variables[1] holds global NULL value + value = variables[1]; + } + stack.push(value); break; } // callGlobal diff --git a/modern/src/maki-interpreter/variable.js b/modern/src/maki-interpreter/variable.js index 27c70a40..b52d5481 100644 --- a/modern/src/maki-interpreter/variable.js +++ b/modern/src/maki-interpreter/variable.js @@ -17,7 +17,7 @@ class Variable { if (this._unsubscribeFromValue != null) { this._unsubscribeFromValue(); } - if (this.global && this.typeName === "OBJECT" && value !== null) { + if (this.global && this.typeName === "OBJECT" && value !== 0) { this._unsubscribeFromValue = value.js_listenToAll( (eventName, ...args) => { this._emitter.trigger(eventName.toLowerCase(), ...args);