diff --git a/src/compiler/jsgen.js b/src/compiler/jsgen.js index 387f4038..0b3146df 100644 --- a/src/compiler/jsgen.js +++ b/src/compiler/jsgen.js @@ -324,10 +324,9 @@ class JSGenerator { if (left.isNeverNumber() || right.isNeverNumber()) { return new TypedInput(`(${left.asString()}.toLowerCase() < ${right.asString()}.toLowerCase())`, TYPE_BOOLEAN); } - // When the right hand side is known to be a number, we can use > - // NaN always returns false in JS's < when compared against a number, just like Scratch. - if (right.isAlwaysNumber()) { - return new TypedInput(`(${left.asNumberOrNaN()} < ${right.asNumber()})`, TYPE_BOOLEAN); + // When both operands are known to be numbers, we can use > + if (left.isAlwaysNumber() && right.isAlwaysNumber()) { + return new TypedInput(`(${left.asNumber()} < ${right.asNumber()})`, TYPE_BOOLEAN); } // No compile-time optimizations possible - use fallback method. return new TypedInput(`compareLessThan(${left.asUnknown()}, ${right.asUnknown()})`, TYPE_BOOLEAN);