diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.cpp b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.cpp index 4b2795d5dc..3ce7d3785d 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.cpp +++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.cpp @@ -23,6 +23,17 @@ void PlainDateTimePrototype::initialize(GlobalObject& global_object) // 5.3.2 Temporal.PlainDateTime.prototype[ @@toStringTag ], https://tc39.es/proposal-temporal/#sec-temporal.plaindatetime.prototype-@@tostringtag define_direct_property(*vm.well_known_symbol_to_string_tag(), js_string(vm.heap(), "Temporal.PlainDateTime"), Attribute::Configurable); + + u8 attr = Attribute::Writable | Attribute::Configurable; + define_native_function(vm.names.valueOf, value_of, 0, attr); +} + +// 5.3.35 Temporal.PlainDateTime.prototype.valueOf ( ), https://tc39.es/proposal-temporal/#sec-temporal.plaindatetime.prototype.valueof +JS_DEFINE_NATIVE_FUNCTION(PlainDateTimePrototype::value_of) +{ + // 1. Throw a TypeError exception. + vm.throw_exception(global_object, ErrorType::Convert, "Temporal.PlainDateTime", "a primitive value"); + return {}; } } diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.h b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.h index 434d542324..0b9ba502e3 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.h +++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDateTimePrototype.h @@ -17,6 +17,9 @@ public: explicit PlainDateTimePrototype(GlobalObject&); virtual void initialize(GlobalObject&) override; virtual ~PlainDateTimePrototype() override = default; + +private: + JS_DECLARE_NATIVE_FUNCTION(value_of); }; } diff --git a/Userland/Libraries/LibJS/Tests/builtins/Temporal/PlainDateTime/PlainDateTime.prototype.valueOf.js b/Userland/Libraries/LibJS/Tests/builtins/Temporal/PlainDateTime/PlainDateTime.prototype.valueOf.js new file mode 100644 index 0000000000..48a3812334 --- /dev/null +++ b/Userland/Libraries/LibJS/Tests/builtins/Temporal/PlainDateTime/PlainDateTime.prototype.valueOf.js @@ -0,0 +1,10 @@ +test("errors", () => { + test("throws TypeError", () => { + expect(() => { + new Temporal.PlainDateTime(2021, 7, 22, 19, 54, 38).valueOf(); + }).toThrowWithMessage( + TypeError, + "Cannot convert Temporal.PlainDateTime to a primitive value" + ); + }); +});