diff --git a/Libraries/LibJS/Runtime/Temporal/PlainTimePrototype.cpp b/Libraries/LibJS/Runtime/Temporal/PlainTimePrototype.cpp index 8466178f6cb..f51d6f9addd 100644 --- a/Libraries/LibJS/Runtime/Temporal/PlainTimePrototype.cpp +++ b/Libraries/LibJS/Runtime/Temporal/PlainTimePrototype.cpp @@ -46,6 +46,7 @@ void PlainTimePrototype::initialize(Realm& realm) define_native_function(realm, vm.names.toString, to_string, 0, attr); define_native_function(realm, vm.names.toLocaleString, to_locale_string, 0, attr); define_native_function(realm, vm.names.toJSON, to_json, 0, attr); + define_native_function(realm, vm.names.valueOf, value_of, 0, attr); } // 4.3.3 get Temporal.PlainTime.prototype.hour, https://tc39.es/proposal-temporal/#sec-get-temporal.plaintime.prototype.hour @@ -336,4 +337,11 @@ JS_DEFINE_NATIVE_FUNCTION(PlainTimePrototype::to_json) return PrimitiveString::create(vm, time_record_to_string(temporal_time->time(), Auto {})); } +// 4.3.19 Temporal.PlainTime.prototype.valueOf ( ), https://tc39.es/proposal-temporal/#sec-temporal.plaintime.prototype.valueof +JS_DEFINE_NATIVE_FUNCTION(PlainTimePrototype::value_of) +{ + // 1. Throw a TypeError exception. + return vm.throw_completion(ErrorType::Convert, "Temporal.PlainTime", "a primitive value"); +} + } diff --git a/Libraries/LibJS/Runtime/Temporal/PlainTimePrototype.h b/Libraries/LibJS/Runtime/Temporal/PlainTimePrototype.h index ef940aa6749..7e680726507 100644 --- a/Libraries/LibJS/Runtime/Temporal/PlainTimePrototype.h +++ b/Libraries/LibJS/Runtime/Temporal/PlainTimePrototype.h @@ -39,6 +39,7 @@ private: JS_DECLARE_NATIVE_FUNCTION(to_string); JS_DECLARE_NATIVE_FUNCTION(to_locale_string); JS_DECLARE_NATIVE_FUNCTION(to_json); + JS_DECLARE_NATIVE_FUNCTION(value_of); }; } diff --git a/Libraries/LibJS/Tests/builtins/Temporal/PlainTime/PlainTime.prototype.valueOf.js b/Libraries/LibJS/Tests/builtins/Temporal/PlainTime/PlainTime.prototype.valueOf.js new file mode 100644 index 00000000000..71a1988d106 --- /dev/null +++ b/Libraries/LibJS/Tests/builtins/Temporal/PlainTime/PlainTime.prototype.valueOf.js @@ -0,0 +1,7 @@ +describe("errors", () => { + test("throws TypeError", () => { + expect(() => { + new Temporal.PlainTime(19, 54, 38).valueOf(); + }).toThrowWithMessage(TypeError, "Cannot convert Temporal.PlainTime to a primitive value"); + }); +});