Summary
numberList() with non-finite or fractional bounds throws a raw RangeError: Invalid array length instead of an ExpressionExtensionError. Inside an expression the raw error is swallowed and the expression silently evaluates to undefined/null — wrong data with no error trigger.
Real runs (extendedFunctions.numberList):
numberList(1, 5) → length 5
numberList(NaN, 5) → RangeError: Invalid array length
numberList(Infinity, 5) → RangeError: Invalid array length
numberList(1.5, 5.7) → RangeError: Invalid array length (size 5.2 is not a valid array length)
Root cause
size = Math.abs(start - end) + 1 flows unvalidated into new Array(size). Sibling validators in the same expression family raise ExpressionExtensionError for bad input; this one lets the engine error escape.
Expected
Non-finite or non-integer bounds raise a clear ExpressionExtensionError like every other input validation in the expression extensions.
Summary
numberList()with non-finite or fractional bounds throws a rawRangeError: Invalid array lengthinstead of anExpressionExtensionError. Inside an expression the raw error is swallowed and the expression silently evaluates toundefined/null— wrong data with no error trigger.Real runs (
extendedFunctions.numberList):numberList(1, 5)→ length 5numberList(NaN, 5)→RangeError: Invalid array lengthnumberList(Infinity, 5)→RangeError: Invalid array lengthnumberList(1.5, 5.7)→RangeError: Invalid array length(size 5.2 is not a valid array length)Root cause
size = Math.abs(start - end) + 1flows unvalidated intonew Array(size). Sibling validators in the same expression family raiseExpressionExtensionErrorfor bad input; this one lets the engine error escape.Expected
Non-finite or non-integer bounds raise a clear
ExpressionExtensionErrorlike every other input validation in the expression extensions.