1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-22 19:05:07 +00:00
Commit graph

1002 commits

Author SHA1 Message Date
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