LibWeb: Add builtin Float16Array type and remove related FIXME

This commit is contained in:
rmg-x 2024-11-09 14:27:57 -06:00 committed by Andrew Kaster
parent ea20545853
commit 9ee7d4d90a
Notes: github-actions[bot] 2024-11-10 21:49:14 +00:00
3 changed files with 3 additions and 2 deletions

View file

@ -51,7 +51,6 @@ WebIDL::ExceptionOr<JS::Handle<WebIDL::ArrayBufferView>> Crypto::get_random_valu
return WebIDL::TypeMismatchError::create(realm(), "array must be one of Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, or BigUint64Array"_string); return WebIDL::TypeMismatchError::create(realm(), "array must be one of Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, or BigUint64Array"_string);
auto const& typed_array = *array->bufferable_object().get<JS::NonnullGCPtr<JS::TypedArrayBase>>(); auto const& typed_array = *array->bufferable_object().get<JS::NonnullGCPtr<JS::TypedArrayBase>>();
// Still need to exclude Float32Array, and potential future siblings like Float16Array:
if (!typed_array.element_name().is_one_of("Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "BigInt64Array", "BigUint64Array")) if (!typed_array.element_name().is_one_of("Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "BigInt64Array", "BigUint64Array"))
return WebIDL::TypeMismatchError::create(realm(), "array must be one of Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, or BigUint64Array"_string); return WebIDL::TypeMismatchError::create(realm(), "array must be one of Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, or BigUint64Array"_string);

View file

@ -121,6 +121,7 @@ static bool is_javascript_builtin(Type const& type)
// might simply need to add another type here. // might simply need to add another type here.
static constexpr Array types = { static constexpr Array types = {
"ArrayBuffer"sv, "ArrayBuffer"sv,
"Float16Array"sv,
"Float32Array"sv, "Float32Array"sv,
"Float64Array"sv, "Float64Array"sv,
"Uint8Array"sv, "Uint8Array"sv,
@ -1256,7 +1257,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
// 1. If types includes a typed array type whose name is the value of Vs [[TypedArrayName]] internal slot, then return the result of converting V to that type. // 1. If types includes a typed array type whose name is the value of Vs [[TypedArrayName]] internal slot, then return the result of converting V to that type.
// 2. If types includes object, then return the IDL value that is a reference to the object V. // 2. If types includes object, then return the IDL value that is a reference to the object V.
auto has_typed_array_name = any_of(types, [](auto const& type) { auto has_typed_array_name = any_of(types, [](auto const& type) {
return type->name().is_one_of("Int8Array"sv, "Int16Array"sv, "Int32Array"sv, "Uint8Array"sv, "Uint16Array"sv, "Uint32Array"sv, "Uint8ClampedArray"sv, "BigInt64Array"sv, "BigUint64Array", "Float32Array"sv, "Float64Array"sv); return type->name().is_one_of("Int8Array"sv, "Int16Array"sv, "Int32Array"sv, "Uint8Array"sv, "Uint16Array"sv, "Uint32Array"sv, "Uint8ClampedArray"sv, "BigInt64Array"sv, "BigUint64Array", "Float16Array"sv, "Float32Array"sv, "Float64Array"sv);
}); });
if (has_typed_array_name || includes_object) { if (has_typed_array_name || includes_object) {

View file

@ -107,6 +107,7 @@ FileList
FileReader FileReader
FileSystemEntry FileSystemEntry
FinalizationRegistry FinalizationRegistry
Float16Array
Float32Array Float32Array
Float64Array Float64Array
FocusEvent FocusEvent