Linus Groh
7314d05ca7
LibJS: Convert Temporal.Instant.prototype to be a PrototypeObject
2021-09-13 19:07:26 +01:00
Linus Groh
a5f559f38a
LibJS: Convert Temporal.Duration.prototype to be a PrototypeObject
2021-09-13 19:07:26 +01:00
Linus Groh
47bbdd157f
LibJS: Convert Temporal.Calendar.prototype to be a PrototypeObject
2021-09-13 19:07:26 +01:00
Brian Gianforcaro
fc1b9288bc
LibJS: Extract exception check duplication in iso_month_day_from_fields
...
Flagged by sonarcloud.
2021-09-13 14:05:22 +00:00
Timothy Flynn
470262c8ab
LibJS: Use ErrorType::NotAnObjectOfType instead of NotA
2021-09-12 00:16:39 +02:00
Luke Wilde
3548b08de2
LibJS: Implement Temporal.PlainMonthDay.prototype.equals
2021-09-10 23:10:18 +01:00
Luke Wilde
2d5b15295a
LibJS: Implement Temporal.PlainMonthDay.from
2021-09-10 23:10:18 +01:00
Luke Wilde
d9d1e25db3
LibJS: Implement ToTemporalMonthDay AO
2021-09-10 23:10:18 +01:00
Linus Groh
4e5becf36e
LibJS: Make default_merge_fields() {additional_,}fields Object a const&
...
This only calls Object::{get,enumerable_own_property_names}() on the
fields and additional_fields Objects, both of which are const-qualified.
2021-09-09 23:46:45 +01:00
Linus Groh
4bba61fd59
LibJS: Make resolve_iso_month() fields Object a const&
...
This only calls Object::get() on the fields Object, which is
const-qualified.
2021-09-09 23:46:45 +01:00
Linus Groh
1f99538185
LibJS: Make Temporal foo_from_fields() AO field/options Object a const*
...
This is a bit of a lie as the Value(Object const*) ctor will const_cast
them in invoke(), but at least it ensures that nothing else in the
function relies on getting non-const Objects.
Perhaps we can have an actual Object const* Value in the future as well.
2021-09-09 23:46:45 +01:00
Linus Groh
4be2aeca00
LibJS: Make prepare_temporal_fields() fields Object a const&
...
This only calls Object::get() on the fields Object, which is
const-qualified.
2021-09-09 23:46:45 +01:00
Linus Groh
c9951ad26b
LibJS: Make to_temporal_time_record() time like Object a const&
...
This only calls Object::get() on the temporal_time_like Object, which is
const-qualified.
2021-09-09 23:46:45 +01:00
Linus Groh
77a18392ff
LibJS: Make to_temporal_duration_record() time like Object a const&
...
This only calls Object::get() or some Duration getters on the
temporal_duration_like Object, both of which are const-qualified.
2021-09-09 23:46:45 +01:00
Linus Groh
1d24699ca8
LibJS: Make Temporal to_foo() AO normalized_options Object a const&
...
These only pass the normalized_options Object directly or indirectly to
get_option(), which now takes a const reference.
2021-09-09 23:46:45 +01:00
Linus Groh
a422ea8792
LibJS: Make get_string_or_number_option() options Object a const&
...
This only passes the options Object to get_option(), which now takes a
const reference.
2021-09-09 23:46:45 +01:00
Linus Groh
c099b1b8a5
LibJS: Make get_option() options Object a const&
...
This only calls Object::get() on the options Object, which is
const-qualified.
2021-09-09 23:46:45 +01:00
Linus Groh
5ae6ad8557
LibJS: Store Instant's and ZonedDateTime's m_nanoseconds as a const&
...
There's no need for these to be non-const. Suggested by @IdanHo in
https://github.com/SerenityOS/serenity/pull/9904#discussion_r704960184 .
Perhaps we can make more internal slots of these and other objects const
references as well, but that's a bit more involved as they are used by
various functions expecting non-const references.
2021-09-09 23:46:45 +01:00
Linus Groh
e4c07c5b8f
LibJS: Make new_target parameter of all Temporal AOs a const*
...
These are passed to ordinary_create_from_constructor() in each case,
which takes the parameter as a const&, so these can also be const.
2021-09-09 23:46:45 +01:00
Linus Groh
92363a4ef8
LibJS: Mark TemporalTimeToString as infallible
...
This is an editorial change in the Temporal spec.
See: 899cc24
2021-09-09 18:24:18 +01:00
Luke Wilde
90ada407db
LibJS: Implement Temporal.PlainYearMonth.compare
2021-09-09 09:06:23 +01:00
Luke Wilde
092ec0cecf
LibJS: Implement Temporal.PlainYearMonth.from
2021-09-09 09:06:23 +01:00
Luke Wilde
58e2597dc2
LibJS: Implement Temporal.PlainYearMonth.prototype.equals
2021-09-09 09:06:23 +01:00
Luke Wilde
ff0b01a505
LibJS: Implement ToTemporalYearMonth AO
2021-09-09 09:06:23 +01:00
Linus Groh
d3fcf5a570
LibJS: Implement Temporal.Instant.prototype.toZonedDateTimeISO()
2021-09-09 08:52:48 +01:00
Linus Groh
6607d1dfb1
LibJS: Implement Temporal.Instant.prototype.toZonedDateTime()
2021-09-09 08:52:48 +01:00
Linus Groh
9661d15fe2
LibJS: Implement Temporal.PlainTime.prototype.toJSON()
2021-09-08 23:42:26 +01:00
Linus Groh
6987e326d8
LibJS: Implement Temporal.PlainTime.prototype.toLocaleString()
2021-09-08 23:42:26 +01:00
Linus Groh
9f78a957d5
LibJS: Implement Temporal.PlainTime.prototype.toString()
2021-09-08 23:42:26 +01:00
Linus Groh
81aaa9ccd5
LibJS: Replace String const& with StringView in various Temporal AOs
...
This is especially helpful where we already pass StringView literals
and only compare them with others, e.g. overflow and largest/smallest
unit, in which case there's no need to actually allocate a string.
2021-09-08 23:42:26 +01:00
Luke Wilde
d943b8f100
LibJS: Implement Temporal.PlainTime.prototype.with
...
Ticks off one box in #8982 and fixes one test262 case.
2021-09-08 19:57:29 +01:00
Linus Groh
33f76f88bb
LibJS: Add and use the CreateNegatedTemporalDuration AO
...
This is a normative change in the Temporal spec.
See: 6178ed3
2021-09-08 00:07:18 +01:00
Linus Groh
f046a4a75d
LibJS: Make implementation-defined language more concise
...
This is a normative change in the Temporal spec. No behavioral change,
just a clarification.
See: 42c964e
2021-09-08 00:07:18 +01:00
Linus Groh
86a7c795f6
LibJS: Use the newly added remainder operation in GetISOPartsFromEpoch
...
This is a normative change in the Temporal spec. No behavioral change,
just a clarification.
See: b7bdc65
2021-09-08 00:07:18 +01:00
Linus Groh
97cc8f4613
LibJS: Validate Calendar.prototype.fields() values more strictly
...
This is a normative change in the Temporal spec.
See:
- 75b66d8
- 9c2262b
2021-09-08 00:07:18 +01:00
Andreas Kling
6ad427993a
Everywhere: Behaviour => Behavior
2021-09-07 13:53:14 +02:00
Idan Horowitz
456938add0
LibJS: Use StringViews in Round{NumberToIncrement, TemporalInstant}
2021-09-06 22:15:39 +01:00
Idan Horowitz
4b5aa2102c
LibJS: Implement Temporal.Instant.prototype.since
2021-09-06 22:15:39 +01:00
Idan Horowitz
470499b2a8
LibJS: Implement Temporal.Instant.prototype.until
2021-09-06 22:15:39 +01:00
Idan Horowitz
24b78fff7d
LibJS: Add a bunch of Temporal Abstract Operations
...
These will allow us to (partially) implement
Temporal.Instant.prototype.{until, since}
2021-09-06 22:15:39 +01:00
Linus Groh
3492fbf9cf
LibJS: Account for negative numbers in ToTemporalDurationRecord
...
This is a normative change in the Temporal spec.
See: fa9d547
2021-09-02 20:16:44 +01:00
Linus Groh
0e6d503317
LibJS: Throw RangeError for non-integral values in ToPartialDuration
...
This is a normative change in the Temporal spec.
See: 895c8e5
2021-09-02 20:16:44 +01:00
Linus Groh
7acd174c85
LibJS: Reflect normative changes in ParseTemporalInstantString
...
Most of it doesn't affect us yet as the parsing code and additional AOs
are not implemented yet.
See: f6ac475
2021-09-02 20:16:44 +01:00
Linus Groh
8105d3f3d6
LibJS: Change offset in ISODateTimeWithinLimits to actually 24h
...
This is a normative change in the Temporal spec.
See: 1d61d6f
2021-09-01 15:11:35 +01:00
Linus Groh
59df50a950
LibJS: Throw RangeError for +/-∞ argument values in Temporal.Duration()
...
This is a normative change in the Temporal spec.
See: ababe1b
2021-09-01 15:11:35 +01:00
Linus Groh
f169ad61a4
LibJS: Make 'options' argument of Calendar prototype functions optional
...
This is a normative change in the Temporal spec.
See: 9cc913e
2021-09-01 15:11:35 +01:00
Linus Groh
ed98c1afc7
LibJS: Throw RangeError in PrepareTemporalFields for +/-∞
...
This is a normative change in the Temporal spec.
See: 499282a
2021-09-01 15:11:35 +01:00
Linus Groh
e845e7c814
LibJS: Throw TypeError if Instant.prototype.round() options is undefined
...
This is a normative change in the Temporal spec.
See: 943018f
2021-09-01 15:11:35 +01:00
Linus Groh
38bef3e28e
LibJS: Handle undefined, NaN, and Infinity in ToTemporalDurationRecord
...
This is a normative change in the Temporal spec.
See: d4b9bcf
2021-09-01 15:11:35 +01:00
Linus Groh
c171aa40a8
LibJS: Implement Temporal.Instant.prototype.toJSON()
2021-08-31 16:35:51 +02:00