diff --git a/Libraries/LibJS/Runtime/Array.cpp b/Libraries/LibJS/Runtime/Array.cpp index f881139f62..6e1f5f5300 100644 --- a/Libraries/LibJS/Runtime/Array.cpp +++ b/Libraries/LibJS/Runtime/Array.cpp @@ -77,7 +77,7 @@ JS_DEFINE_NATIVE_SETTER(Array::length_setter) if (vm.exception()) return; if (length.is_nan() || length.is_infinity() || length.as_double() < 0) { - vm.throw_exception(global_object, ErrorType::ArrayInvalidLength); + vm.throw_exception(global_object, ErrorType::InvalidLength, "array"); return; } array->indexed_properties().set_array_like_size(length.as_double()); diff --git a/Libraries/LibJS/Runtime/ArrayConstructor.cpp b/Libraries/LibJS/Runtime/ArrayConstructor.cpp index 3eb3407cbc..153e2a4fe2 100644 --- a/Libraries/LibJS/Runtime/ArrayConstructor.cpp +++ b/Libraries/LibJS/Runtime/ArrayConstructor.cpp @@ -67,7 +67,7 @@ Value ArrayConstructor::call() if (vm().argument_count() == 1 && vm().argument(0).is_number()) { auto array_length_value = vm().argument(0); if (!array_length_value.is_integer() || array_length_value.as_i32() < 0) { - vm().throw_exception(global_object(), ErrorType::ArrayInvalidLength); + vm().throw_exception(global_object(), ErrorType::InvalidLength, "array"); return {}; } auto* array = Array::create(global_object()); diff --git a/Libraries/LibJS/Runtime/ErrorTypes.h b/Libraries/LibJS/Runtime/ErrorTypes.h index dd83ac3058..a345d1bd4e 100644 --- a/Libraries/LibJS/Runtime/ErrorTypes.h +++ b/Libraries/LibJS/Runtime/ErrorTypes.h @@ -27,7 +27,6 @@ #pragma once #define JS_ENUMERATE_ERROR_TYPES(M) \ - M(ArrayInvalidLength, "Invalid array length") \ M(ArrayMaxSize, "Maximum array size exceeded") \ M(ArrayPrototypeOneArg, "Array.prototype.{}() requires at least one argument") \ M(AccessorBadField, "Accessor descriptor's '{}' field must be a function or undefined") \ @@ -48,6 +47,7 @@ M(InstanceOfOperatorBadPrototype, "'prototype' property of {} is not an object") \ M(InvalidAssignToConst, "Invalid assignment to const variable") \ M(InvalidLeftHandAssignment, "Invalid left-hand side in assignment") \ + M(InvalidLength, "Invalid {} length") \ M(InvalidRadix, "Radix must be an integer no less than 2, and no greater than 36") \ M(IsNotA, "{} is not a {}") \ M(IsNotAEvaluatedFrom, "{} is not a {} (evaluated from '{}')") \ diff --git a/Libraries/LibJS/Tests/builtins/Array/Array.js b/Libraries/LibJS/Tests/builtins/Array/Array.js index 1ba2c400b1..652e366d2f 100644 --- a/Libraries/LibJS/Tests/builtins/Array/Array.js +++ b/Libraries/LibJS/Tests/builtins/Array/Array.js @@ -9,7 +9,7 @@ describe("errors", () => { [-1, -100, -0.1, 0.1, 1.23, Infinity, -Infinity, NaN].forEach(value => { expect(() => { new Array(value); - }).toThrowWithMessage(TypeError, "Invalid array length"); + }).toThrowWithMessage(RangeError, "Invalid array length"); }); }); });