Linus Groh
151eb8606d
LibJS: Consistently call observable Temporal AOs with undefined options
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/6fa5b9d
2022-04-07 12:58:39 +01:00
Linus Groh
e4fe60b972
LibJS: Update incorrect spec comment in ToRelativeTemporalObject
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/4cb192d
2022-03-29 22:56:03 +01:00
Linus Groh
2ad69d789b
LibJS: Remove the ConstrainToRange AO
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/537b3e6
2022-03-16 21:49:38 +00:00
Linus Groh
1521c5f55c
LibJS: Remove argument type assertion from ParseTemporalDurationString
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/8615b41
2022-03-16 21:49:38 +00:00
Linus Groh
54af3a5396
LibJS: Adjust grammar for DateExtendedYear to exclude -000000
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/fb3e656
We lose the custom error message, but it's not the end of the world.
2022-03-10 23:20:39 +01:00
Linus Groh
68af8649fb
LibJS: Follow rules for consuming completion records
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/1c19b96
2022-03-10 23:20:39 +01:00
Linus Groh
2bae040bc9
LibJS: Remove Sign abstract operation
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/bbc1ebc
2022-03-10 23:20:39 +01:00
Linus Groh
34371b9b61
LibJS: Fix numeric type confusion in ToTemporalRoundingIncrement
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/6e59366
2022-03-10 23:20:39 +01:00
Linus Groh
a496868ee5
LibJS: Create Duration Records with their own abstract operations
...
This is an editorial change in the Temporal spec.
See:
- https://github.com/tc39/proposal-temporal/commit/387c405
- https://github.com/tc39/proposal-temporal/commit/b203e26
- https://github.com/tc39/proposal-temporal/commit/387c405
2022-03-10 23:20:39 +01:00
Linus Groh
bdb13a74b0
LibJS: Describe various kinds of "Duration Records"
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/983902e
We already had these defined as structs, but now they're properly
defined in the spec (opposed to the previous anonymous records), and we
don't have to make up our own names anymore :^)
Note that while we're usually not including 'record' in the name, in
this case the 'Duration Record' has a name clash with the Duration
object. Additionally, later editorial changes introduce CreateFooRecord
AOs, so let's just go with FooRecord structs here.
2022-03-10 23:20:39 +01:00
Linus Groh
bc183dbbcb
LibJS: Replace uses of MarkedValueList with MarkedVector<Value>
...
This is effectively a drop-in replacement.
2022-02-09 12:25:27 +00:00
Linus Groh
c48f695b90
LibJS: Remove '-000000' check from ParseTemporalYearMonthString
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/3be4b5d
2022-02-04 20:00:34 +00:00
Linus Groh
28ac5a1333
LibJS: Update fallibility of ParseISODateTime in spec comments
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/bc79069
2022-02-04 20:00:34 +00:00
Linus Groh
40ba12aa7d
LibJS: Consider calls of parse_iso_date_time() fallible
...
See: https://github.com/tc39/proposal-temporal/pull/2027
2022-02-02 18:55:00 +00:00
Linus Groh
19a2b32065
LibJS: Reject '-000000' as extended year
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/e60ef9e
2022-02-02 14:46:52 +00:00
Idan Horowitz
ace36681ff
LibJS+LibIMAP: Use the new Optional<U>(Optional<T>) constructor
...
These look much nicer than these repeated ternaries :^)
2022-01-23 18:53:42 +02:00
Linus Groh
0e3def1d0b
LibJS: Don't parse/re-format offset in parse_temporal_time_zone_string()
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/6abe146
2022-01-23 00:22:10 +00:00
Linus Groh
6d744eb4a7
LibJS: Use consistent name for offset strings
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/17f8cdb
2022-01-23 00:22:10 +00:00
Linus Groh
b9093dd0ab
LibJS: Don't validate time zone name when parsing Instant string
...
This is normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/2a81fbc
2022-01-13 10:08:34 +01:00
Linus Groh
392f5bfebd
LibJS: Fix fraction substring range in parse_temporal_time_zone_string()
...
Two issues:
- The intended range was 9 characters starting from index 1. Since the
second argument to String::substring() is the length, 10 is
potentially reading further than the string's length (when only
providing one fraction digit), causing an assertion failure crash.
- The spec's intention to skip the decimal separator by starting at
index 1 is incorrect, no decimal separator is present in the result of
parsing TimeZoneUTCOffsetFractionalPart. I filed a spec fix for this,
see: https://github.com/tc39/proposal-temporal/pull/1999
2022-01-12 21:24:12 +01:00
Linus Groh
027e4bd439
LibJS: Fix calculation overflow in parse_temporal_time_zone_string()
...
As all variables and numeric literals in the expression have an integral
data type, it would evaluate to an int and could easily overflow as
we're multiplying seconds with 10^9.
Introduce a floating point literal into the expression to make it result
in a double.
2022-01-12 21:24:12 +01:00
Linus Groh
323e1e17cf
LibJS: Fix sign data type in parse_temporal_time_zone_string()
...
A sign that's either the value 1 or -1 should obviously not have an
unsigned data type :^)
This would cause it to become 255 for the negative offset case, which
would then completely screw up the offset_nanoseconds calculation as it
serves as a multiplier.
2022-01-12 21:24:12 +01:00
Linus Groh
09a11fa6ea
LibJS: Implement proper Iterator records
...
Instead of using plain objects as Iterator records, causes confusion
about the object itself actually being its [[Iterator]] slot, and
requires non-standard type conversion shenanigans fpr the [[NextValue]]
and [[Done]] internal slots, implement a proper Iterator record struct
and use it throughout.
Also annotate the remaining Iterator AOs with spec comments while we're
here.
2022-01-09 22:02:43 +01:00
Linus Groh
3301b0b33d
LibJS: Remove duplicate assignment step from parse_iso_date_time()
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/eb68de2
2022-01-08 00:31:28 +01:00
Linus Groh
d42336312c
LibJS: Include time zone name in TemporalInvalidTimeZoneName error
2022-01-06 21:49:50 +01:00
Linus Groh
29e96eceeb
LibJS: Convert PropertyKey::from_value() to ThrowCompletionOr
...
Lots of MUST() - perhaps we'll eventually come up with a better API for
the common case where it can't fail.
2022-01-04 23:37:26 +00:00
Linus Groh
3ab1c52e2b
LibJS: Require 'T' prefix for ambiguous time-only strings
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/514ede3
2021-12-24 00:07:52 +01:00
Linus Groh
9271005357
LibJS: Fix typo in spec comment
2021-12-19 09:35:02 +00:00
Linus Groh
f7fe7f8c77
LibJS: Capture TimeFraction parse result instead of Fraction
...
Not much of a difference as TimeFraction just parses Fraction, but let's
do it correctly. Small mistake I did in 4b7f716 .
Thanks to YouTube user gla3dr for noticing this :^)
2021-12-19 09:29:46 +00:00
Linus Groh
4b7f716f21
LibJS: Fix ambiguity in FractionalPart grammar
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/0f11bd6
2021-12-18 22:32:39 +00:00
Linus Groh
006bea5d31
LibJS: Remove outdated comment in prepare_partial_temporal_fields()
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/bf066ea
2021-12-18 22:32:39 +00:00
Linus Groh
7270bbb255
LibJS: Remove outdated comment from parse_temporal_duration_string()
...
This is a normative change in the Temporal spec.
See:
- https://github.com/tc39/proposal-temporal/commit/e7182d3
- https://github.com/tc39/proposal-temporal/commit/6dae066
2021-12-18 22:32:39 +00:00
Luke Wilde
4f3c283f24
LibJS: Move calendar validation out of parse_temporal_calendar_string
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/7207a1c
2021-12-08 19:11:50 +00:00
Luke Wilde
80dcddacea
LibJS: Simplify return in parse_temporal_date_time_string
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/1f7e486
2021-12-08 19:11:50 +00:00
Luke Wilde
6244969ae2
LibJS: Remove duplicated spec step in parse_iso_date_time
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/516bf24
2021-12-08 19:11:50 +00:00
Timothy Flynn
1039159a6c
LibJS: Change LargerOfTwoTemporalUnits AO to return a StringView
2021-11-30 00:01:07 +00:00
Linus Groh
f7ba81ac52
LibJS: Implement parsing of TemporalDurationString
2021-11-28 10:32:28 +00:00
Linus Groh
1e41a8668d
LibJS: Add sign(Crypto::SignedBigInteger const&) overload
2021-11-24 17:53:00 +00:00
Linus Groh
78724fdd33
LibJS: Don't accept UTC designators in strings for plain Temporal types
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/cd2dc7d
2021-11-24 08:56:03 +00:00
Linus Groh
836ce8ee5d
LibJS: Fix parse ErrorType used in parse_temporal_date_string()
...
TemporalInvalidDateString, not TemporalInvalidDateTimeString.
2021-11-24 08:38:50 +00:00
Linus Groh
55dbd19a16
LibJS: Update to_largest_temporal_unit() to allow undefined fallback
...
This is required for Temporal.Duration.prototype.round(). Subsequently,
this now returns ThrowCompletionOr<Optional<String>>, which brings the
signature in line with that of to_smallest_temporal_unit().
Much nicer! :^)
2021-11-23 21:03:05 +00:00
Linus Groh
783222f87a
LibJS: Implement parsing of TemporalInstantString
2021-11-20 23:10:09 +00:00
Linus Groh
79a18b058f
LibJS: Implement parsing of TemporalCalendarString
2021-11-20 23:10:09 +00:00
Linus Groh
1583c7257c
LibJS: Implement parsing of TemporalRelativeToString
2021-11-20 23:10:09 +00:00
Linus Groh
98b876ad3f
LibJS: Implement parsing of TemporalZonedDateTimeString
2021-11-20 23:10:09 +00:00
Linus Groh
3b1de431cc
LibJS: Implement parsing of TemporalYearMonthString
2021-11-20 23:10:09 +00:00
Linus Groh
3ddab2f4fe
LibJS: Implement parsing of TemporalMonthDayString
2021-11-20 23:10:09 +00:00
Linus Groh
453c78215c
LibJS: Implement parsing of TemporalTimeString
2021-11-20 23:10:09 +00:00
Linus Groh
b42b7d5f16
LibJS: Implement parsing of TemporalDateTimeString
2021-11-20 23:10:09 +00:00
Linus Groh
02e7de2cba
LibJS: Implement parsing of TemporalDateString
2021-11-20 23:10:09 +00:00
Linus Groh
9628452550
LibJS: Fix fallback of hour, minute, second in parse_iso_date_time()
...
It's not the `to_uint<u8>()` call that would fail, if we have a value
for these productions they will always be valid numbers. We do need to
provide a fallback for when that's not the case and any of them is
undefined, i.e. an empty Optional.
2021-11-20 23:10:09 +00:00
Linus Groh
de23f0b68c
LibJS: Start fleshing out an ISO 8601 parser for Temporal
...
This is the start of a parser for the ISO 8601 grammar used in the
Temporal spec:
https://tc39.es/proposal-temporal/#sec-temporal-iso8601grammar
We will, on purpose, not use a generic ISO 8601 parser from AK or
similar for two reasons:
- Many AOs make specific assumptions about which productions exist and
access them directly, even when they're part of a larger production.
- The spec says "The grammar deviates from the standard given in ISO
8601 in the following ways:" and then lists 17 of such deviations.
Making that work with a general purpose parser is not worth it.
The public API is not being used anywhere yet, but will be in the next
couple of commits. Likewise, the Production enum will be populated with
all the productions accessed directly (e.g. TemporalDateString).
Many thanks to Ali for showing me how to improve my initial approach
full of macros with a nice RAII helper - it's much nicer :^)
Co-Authored-By: Ali Mohammad Pur <mpfard@serenityos.org>
2021-11-20 23:10:09 +00:00
Linus Groh
8d6d39e07c
LibJS: Treat relativeTo parameters as PlainDate or ZonedDateTime
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/c822e14
2021-11-19 19:59:13 +00:00
Linus Groh
ec1e1f4f12
LibJS: Disallow Temporal.Duration input values to be non-integers
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/8c85450
2021-11-17 22:20:59 +00:00
Luke Wilde
ac65fb40d9
LibJS: Implement Temporal.PlainDate.prototype.since
2021-11-16 01:06:07 +00:00
Linus Groh
dbe70e7c55
LibJS: Implement Temporal.Duration.prototype.total()
2021-11-13 18:50:54 +00:00
Linus Groh
0d9defdad8
LibJS: Rename MatchBehavior members back to their old names
...
I changed this in 6ef1a27 to "match the spec", but the spec calls it
`match exactly` and `match minutes` - so what we had before was correct
and the change made no sense whatsoever.
2021-11-13 00:25:40 +00:00
Luke Wilde
29072f4b09
LibJS: Implement the required AOs for Temporal.Duration.compare
2021-11-11 21:06:54 +00:00
Linus Groh
fdffdc43fa
LibJS: Implement the rest of to_temporal_month_day()
...
Always throws at the moment, because parse_temporal_month_day_string()
is basically a stub, and parse_iso_date_time() isn't functional either.
The spec issue has been resolved though, so I figured we might as well
get one small step further :^)
2021-11-10 22:28:27 +00:00
Luke Wilde
dc72d416b2
LibJS: Implement the required AOs for ZonedDateTime stringifiers
2021-11-10 12:56:56 +00:00
Linus Groh
c3c9ac93d0
LibJS: Implement Temporal.PlainDate.prototype.with()
...
With one caveat: in the PreparePartialTemporalFields AO I made a change
to fix a spec issue that would require the input object to always have a
month or monthCode property.
This is tracked in https://github.com/tc39/proposal-temporal/issues/1910
and may get accepted as-is, in which case we simply need to remove the
NOTE comment.
2021-11-08 22:19:45 +00:00
Linus Groh
46d7c34028
LibJS: Use StringView literals in prepare_temporal_fields()
2021-11-08 19:12:47 +00:00
Linus Groh
b2548393d2
LibJS: Implement Temporal.Duration.prototype.toString()
...
I hereby claim "implemented largest AO in LibJS ever" (450 lines). :^)
2021-11-07 15:31:28 +01:00
Luke Wilde
2b89d2a360
LibJS: Implement ToTemporalZonedDateTime and the required AOs
2021-11-07 15:35:16 +02:00
Linus Groh
0dae7c9420
LibJS: Replace a couple of TODO()'s in Temporal with InternalError
...
This helps us to distinguish between crashes because of incomplete code
paths and crashes because of genuine bugs more easily when running
test262.
2021-11-04 23:59:40 +01:00
Linus Groh
d129e1ff29
LibJS: Move common code into RejectObjectWithCalendarOrTimeZone
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/5654fe0
2021-11-04 16:17:26 +01:00
Luke Wilde
d1a5254e41
LibJS: Implement Temporal.PlainDateTime.prototype.round
2021-11-03 19:48:08 +01:00
Linus Groh
d49bbb1da3
LibJS: Implement TODO()'d parts of balance_duration()
...
Massive :yakstack:, so I understand why it was skipped in the first
place :^)
2021-11-02 09:24:35 +01:00
Linus Groh
97f6c6029f
LibJS: Implement Temporal.TimeZone.prototype.getInstantFor()
2021-11-01 21:39:45 +01:00
Linus Groh
2cbcb99ec7
LibJS: Update spec comment in parse_temporal_time_zone_string()
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/19b693c
2021-10-30 23:15:18 +02:00
Linus Groh
5da8ae0020
LibJS: Update parse_temporal_time_zone_string() substring bounds
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/73b9fe3
2021-10-30 23:14:43 +02:00
Linus Groh
09d1db5afd
LibJS: Clarify mathematical types in Temporal AOs and functions
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/e480d40
2021-10-26 23:10:11 +02:00
Andreas Kling
398c181c79
LibJS: Rename PropertyName to PropertyKey
...
Let's use the same name as the spec. :^)
2021-10-24 17:18:07 +02:00
Linus Groh
0881f8160f
LibJS: Use implicit ThrowCompletionOr<T> constructor where possible
...
Luckily this is not very widespread yet as most of it would happen in
the various JS functions instead of AOs.
2021-10-21 09:02:23 +01:00
Timothy Flynn
ec54a7b5b0
LibJS: Implement IteratorClose with Completions and align to the spec
2021-10-21 00:26:45 +01:00
Timothy Flynn
7b4814f74c
LibJS: Convert IteratorValue AO to ThrowCompletionOr
2021-10-21 00:26:45 +01:00
Timothy Flynn
8be1caa05d
LibJS: Convert IteratorStep AO to ThrowCompletionOr
2021-10-21 00:26:45 +01:00
Timothy Flynn
860a37640b
LibJS: Convert GetIterator AO to ThrowCompletionOr
2021-10-21 00:26:45 +01:00
Linus Groh
ca09f20dcf
LibJS: Add ErrorType for IterableToListOfType value type mismatch
2021-10-20 18:46:24 +01:00
Linus Groh
be28a6142b
LibJS: Convert to_integer_or_infinity() to ThrowCompletionOr
2021-10-18 21:24:30 +01:00
Idan Horowitz
20d990563c
LibJS: Convert to_number() to ThrowCompletionOr
2021-10-18 08:01:38 +03:00
Linus Groh
96ab116f0d
LibJS: Convert to_primitive_string() to ThrowCompletionOr
2021-10-13 09:55:10 +01:00
Linus Groh
8b07453bce
LibJS: Add non-BigInt overload of round_number_to_increment()
...
Unlike the spec we chose BigInt for the input and output types here as
it was being used with ℝ(ns), ns being of type BigInt, in one place and
a conversion to double would not be safe.
Since in many places we'll have double input values, let's add a double
overload of this function to avoid awkward conversions and expensive
allocations.
2021-10-07 13:00:24 +01:00
Linus Groh
364dd42fc8
LibJS: Convert create_data_property_or_throw() to ThrowCompletionOr
2021-10-03 20:14:03 +01:00
Linus Groh
b7e5f08e56
LibJS: Convert Object::get() to ThrowCompletionOr
...
To no one's surprise, this patch is pretty big - this is possibly the
most used AO of all of them. Definitely worth it though.
2021-10-03 20:14:03 +01:00
Linus Groh
4d5bd092ea
LibJS: Use MUST() where applicable
2021-10-03 20:14:03 +01:00
Nico Weber
de72332920
Libraries: Fix typos
2021-10-01 01:06:40 +01:00
Idan Horowitz
5ce468338e
LibJS: Drop the Temporal prefix from TemporalMissingRequiredProperty
...
This allows us to use it for other exposed JS APIs that accept options
objects.
2021-09-29 10:09:33 +03:00
Linus Groh
6b4777c558
LibJS: Convert prepare_temporal_fields() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
9ac426c906
LibJS: Convert to_positive_integer() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
2f56fd48ca
LibJS: Convert parse_temporal_year_month_string() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
14f16d9ed4
LibJS: Convert parse_temporal_time_zone_string() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
0ccd11ba5f
LibJS: Convert parse_temporal_time_string() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
f86fa12deb
LibJS: Convert parse_temporal_duration_string() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
3c530dec5a
LibJS: Convert parse_temporal_date_time_string() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
4cb6eaf588
LibJS: Convert parse_temporal_date_string() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
2e28f0b371
LibJS: Convert parse_temporal_calendar_string() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
4f487266b4
LibJS: Convert parse_temporal_instant_string() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
3112de6f35
LibJS: Convert parse_iso_date_time() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
8792fdfdf6
LibJS: Convert reject_temporal_calendar_type() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
8dd45a1ba2
LibJS: Convert validate_temporal_unit_range() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
448a364210
LibJS: Convert to_smallest_temporal_unit() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
92187591dd
LibJS: Convert to_largest_temporal_unit() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
dd483d84f8
LibJS: Convert to_seconds_string_precision() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
f8f074f8a9
LibJS: Convert to_temporal_rounding_increment() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
65d26dd25e
LibJS: Convert to_show_calendar_option() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
509d13cf67
LibJS: Convert to_temporal_rounding_mode() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
9f03647f1f
LibJS: Convert to_temporal_overflow() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
b1e7e62657
LibJS: Convert get_string_or_number_option() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
8d6ac267dc
LibJS: Convert Temporal::get_option() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
08dd1c3e2d
LibJS: Convert get_options_object() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
f2b5ddd167
LibJS: Convert iterable_to_list_of_type() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
683e31e1ff
LibJS: Convert to_integer_throw_on_infinity() to ThrowCompletionOr
2021-09-16 22:34:24 +01:00
Linus Groh
88a31f3bac
LibJS: Fix [[TimeZoneOffsetString]] value in ParseTemporalInstantString
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/78c3b8b
2021-09-15 00:23:11 +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
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
Luke Wilde
ff0b01a505
LibJS: Implement ToTemporalYearMonth AO
2021-09-09 09:06:23 +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
Idan Horowitz
456938add0
LibJS: Use StringViews in Round{NumberToIncrement, TemporalInstant}
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
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: https://github.com/tc39/proposal-temporal/commit/f6ac475
2021-09-02 20:16:44 +01:00
Linus Groh
ed98c1afc7
LibJS: Throw RangeError in PrepareTemporalFields for +/-∞
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/499282a
2021-09-01 15:11:35 +01:00
Linus Groh
576be0f8e7
LibJS: Implement Temporal.Instant.prototype.toString()
2021-08-31 16:35:51 +02:00
Idan Horowitz
f6370fe3f7
LibJS: Add the ToTemporalTime AO and stub the ParseTemporalTimeString AO
...
This AO is required for a bunch of PlainTime related methods.
As part of this change the `TemporalTime` record was renamed to
`UnregulatedTemporalTime` and a new `TemporalTime` record that matches
the other Temporal parse result records was added. This also has the
added benefit of getting rid of a would be round-trip cast from integer
to double and back in `ParseTemporalTimeString`.
2021-08-27 19:01:30 +01:00
Linus Groh
ad427f85ca
LibJS: Implement Temporal.PlainDateTime.from()
2021-08-23 20:54:52 +01:00
Linus Groh
969aee2022
LibJS: Add missing builtin calendar check to ParseTemporalCalendarString
...
See: https://github.com/tc39/proposal-temporal/commit/48b11d6
2021-08-22 21:20:00 +01:00
Linus Groh
402f04c2fc
LibJS: Implement Temporal.PlainDate.prototype.toString()
2021-08-19 00:14:17 +02:00
Linus Groh
310192f918
LibJS: Make Temporal's get_option() take a PropertyName directly
...
Instead of constructing a String and converting that to a PropertyName
on the fly, we can just leverage CommonPropertyNames, add a couple more
and directly pass ready-to-use PropertyNames with pre-allocated Strings.
2021-08-19 00:14:17 +02:00
Linus Groh
b2badd6333
LibJS: Update some Temporal spec section numbers
...
These shifted due to the addition of the ParseTemporalRelativeToString
AO in https://github.com/tc39/proposal-temporal/commit/ad06578 .
2021-08-18 19:26:08 +01:00
Linus Groh
0cdad283c0
LibJS: Reflect Record wording editorial change in the Temporal spec
...
See: https://github.com/tc39/proposal-temporal/commit/c8f14d0
2021-08-17 21:59:35 +01:00
Linus Groh
d46c531023
LibJS: Add and use newly introduced ToIntegerThrowOnInfinity Temporal AO
...
See: https://github.com/tc39/proposal-temporal/commit/2ed58f4
2021-08-17 21:59:35 +01:00
Linus Groh
16c38788c3
LibJS: Add missing spec links
2021-08-08 11:04:30 +01:00
Linus Groh
116c45d668
LibJS: Take prepare_temporal_fields() Vector arguments by const&
2021-07-30 20:52:39 +01:00
Idan Horowitz
2c6bd3a61b
LibJS: Use narrower types in Temporal PlainDate/PlainDateTime/Calendar
...
These are bounds-checked during construction of PlainDate/PlainDateTime
and as such theres no need to widen them in these internal AO calls.
2021-07-26 16:15:31 +01:00
Linus Groh
7915994dfc
LibJS: Use more narrow types in Temporal ISODateTime struct
2021-07-25 23:44:36 +01:00
Idan Horowitz
cf78efaef5
LibJS: Implement the ToTemporalDate Abstract Operation
...
This is required by most Temporal.PlainDate.prototype methods.
2021-07-21 22:49:37 +01:00
Idan Horowitz
1e471e2e2f
LibJS: Add Temporal.Calendar.prototype.dateFromFields & required AOs
...
This is required for implementing the DateFromFields PlainDate AO.
2021-07-21 22:49:37 +01:00
Idan Horowitz
44c8e158c1
LibJS: Remove usages of String's null state in Temporal AOs
2021-07-21 22:49:37 +01:00
Idan Horowitz
cc00ccec41
LibJS: Start implementing Temporal.PlainDate
...
This commit adds the PlainDate object itself, its constructor and
prototype (currently empty), and several required abstract operations.
2021-07-19 09:11:20 +01:00
Linus Groh
5c77885873
LibJS: Implement Temporal.Duration.from()
...
...with ParseTemporalDurationString currently TODO()'d.
2021-07-19 00:34:28 +01:00
Idan Horowitz
84b028bd71
LibJS: Add Temporal.Instant.prototype.round()
...
As well as the required Abstract Operations.
2021-07-12 19:05:17 +01:00
Idan Horowitz
01c731aa59
LibJS: Add the GetOptionsObject & GetOption Temporal AbstractOperations
...
These are used by any Temporal method that accepts an options object.
2021-07-12 19:05:17 +01:00
Idan Horowitz
b816037739
LibJS: Add the ToTemporalInstant Abstract Operation & its requirements
...
This is Abstract Operation is required for the majority of
InstantConstructor's and InstantPrototype's methods.
The implementation is not entirely complete, (specifically 2 of the
underlying required abstract operations, ParseTemporalTimeZoneString
and ParseISODateTime are missing the required lexing, and as such are
TODO()-ed) but the majority of it is done.
2021-07-12 19:05:17 +01:00