Linus Groh
25849f8a6d
LibJS: Replace GlobalObject with VM in common AOs [Part 18/19]
2022-08-23 13:58:30 +01:00
Linus Groh
ccdfa2320c
LibJS: Replace GlobalObject with VM in Iterator AOs [Part 7/19]
2022-08-23 13:58:30 +01:00
Linus Groh
a022e548b8
LibJS: Replace GlobalObject with VM in Value AOs [Part 4/19]
...
This is where the fun begins. :^)
2022-08-23 13:58:30 +01:00
Linus Groh
694f66b5ca
LibJS: Replace GlobalObject with VM in Temporal AOs [Part 2/19]
2022-08-23 13:58:30 +01:00
Linus Groh
f3117d46dc
LibJS: Remove GlobalObject from VM::throw_completion()
...
This is a continuation of the previous five commits.
A first big step into the direction of no longer having to pass a realm
(or currently, a global object) trough layers upon layers of AOs!
Unlike the create() APIs we can safely assume that this is only ever
called when a running execution context and therefore current realm
exists. If not, you can always manually allocate the Error and put it in
a Completion :^)
In the spec, throw exceptions implicitly use the current realm's
intrinsics as well: https://tc39.es/ecma262/#sec-throw-an-exception
2022-08-23 13:58:30 +01:00
Linus Groh
41791146fd
LibJS: Disallow out-of-range return from previous / next transition
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/f3c771f
2022-07-30 10:50:50 +01:00
Linus Groh
071b92e920
LibJS: Fix typos in Temporal spec comments
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/b0411b4
2022-07-10 01:29:28 +02:00
Linus Groh
fb2012dfc7
LibJS: Add Add IsValidISODate assertions
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/46f97ea
2022-07-10 01:22:34 +02:00
Linus Groh
3720f4bd8f
LibJS: Fix production for time zone name in time zone strings
...
This is a normative change in the Temporal spec.
See:
- https://github.com/tc39/proposal-temporal/commit/caf013a
- https://github.com/tc39/proposal-temporal/commit/fb7cfa6
2022-06-29 07:35:42 +01:00
Linus Groh
7138f10c30
LibJS: Check for invalid epoch ns in DisambiguatePossibleInstants
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/c12d20d
2022-06-24 22:12:03 +01:00
Linus Groh
9c31fee4b5
LibJS: Remove unnecessary modulo operation in GetISOPartsFromEpoch
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/fc3f80d
2022-06-24 22:12:03 +01:00
Linus Groh
9d2377ff60
LibJS: Only call CanonicalizeTimeZoneName on valid time zone IDs
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/30122e6
2022-06-15 17:49:20 +01:00
Linus Groh
cf61d01140
LibJS: Add a named alias for parseResult.[[Name]] in ToTemporalTimeZone
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/8ddcb07
2022-06-15 17:49:20 +01:00
Linus Groh
3bb94dd62e
LibJS: Refactor Temporal parse AOs
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/7fe29eb
2022-06-10 12:39:11 +02:00
Linus Groh
ae1fdf299d
LibJS: Use the rounding abstract operations from Intl.NumberFormat V3
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/75279e5
Co-Authored-By: Idan Horowitz <idan.horowitz@gmail.com>
2022-05-25 00:25:23 +01:00
Linus Groh
de0ea331cd
LibJS: Simplify BalanceISODate
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/9544573
2022-05-08 00:07:58 +02:00
Linus Groh
15fe6297bc
LibJS: Use "Completion" to emphasize completion record
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/31d9fc5
2022-05-08 00:07:58 +02:00
Linus Groh
c6f7214a60
LibJS: Replace magic nanosecond numbers with constants
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/3fdbfda
2022-05-08 00:07:58 +02:00
Linus Groh
27793bf76c
LibJS: Replace U+2212 MINUS SIGN with U+002D HYPHEN-MINUS
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/bbcd37b
2022-04-29 22:40:46 +02:00
Linus Groh
df1f81ba90
LibJS: Add notes about lifetime of surrounding agent
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/54e4abc
2022-04-29 22:40:46 +02:00
Linus Groh
76a6bd0e75
LibJS: Fix numeric type confusion in GetEpochFromISOParts return value
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/2a59eac
2022-04-29 22:40:46 +02:00
Linus Groh
70593b7448
LibJS: Update for structured headers added to various Temporal AOs
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/e6a15a5
2022-04-29 22:40:46 +02:00
Linus Groh
5397278bfc
LibJS: Update spec comments to use ToZeroPaddedDecimalString AO
...
This is an editorial change in the ECMA-262 and Temporal specs.
See:
- https://github.com/tc39/ecma262/commit/843d8b8
- https://github.com/tc39/proposal-temporal/commit/f9211d9
Note that we don't actually need to implement the AO as we already have
String::formatted() for this, and use unified format strings instead of
zero-padding in individual steps in many cases anyway.
2022-04-12 23:43:29 +01:00
Linus Groh
a5ea066693
LibJS: Fix number types in GetISOPartsFromEpoch
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/c5b645d
This means we now have to pass a global object and construct a BigInt
object just for the assertion, but oh well. We might want to have an
assertion macro that's optimized away in release builds at a later
point, however.
2022-03-25 18:33:55 +00:00
Linus Groh
9950f06623
LibJS: Update spec comment in BuiltinTimeZoneGetPlainDateTimeFor
...
This is an editorial change in the Temporal spec from a long time ago.
See: https://github.com/tc39/proposal-temporal/commit/e480d40
2022-03-25 18:30:33 +00:00
Linus Groh
619794dfa7
LibJS: Fix fraction substring in ParseTimeZoneOffsetString
...
This is a normative change in the Temporal spec.
See:
- https://github.com/tc39/proposal-temporal/commit/97d553c
- https://github.com/tc39/proposal-temporal/commit/d53af7f
Note that we already implemented this correctly, so the only change is
updating the spec comment.
2022-03-16 21:49:38 +00:00
Linus Groh
7f5b4842f2
LibJS: Replace dead code in ParseTimeZoneOffsetString with an assertion
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/a29c40b
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
17da627b4c
LibJS: Fix "set it to" language to be more explicit
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/de58241
2022-03-10 23:20:39 +01:00
Linus Groh
1d32ac7b8b
LibJS: Convert get_iana_time_zone_epoch_value() to MarkedVector<BigInt*>
2022-02-09 12:25:27 +00:00
Linus Groh
af7003ebd2
LibJS: Convert 'possible instants' AOs to MarkedVector<Instant*>
...
Resolve TODOs suggesting the use of a strongly typed MarkedValueList
(a.k.a. MarkedVector<T>) in the following AOs:
- get_possible_instants_for()
- disambiguate_possible_instants()
2022-02-09 12:25:27 +00:00
davidot
1c4c251be3
LibJS+Everywhere: Remove all VM::clear_exception() calls
...
Since VM::exception() no longer exists this is now useless. All of these
calls to clear_exception were just to clear the VM state after some
(potentially) failed evaluation and did not use the exception itself.
2022-02-08 09:12:42 +00:00
Linus Groh
96db8a061b
LibJS: Correct FormatTimeZoneOffsetString arg in CreateTemporalTimeZone
...
This is an editorial change in the Temporal spec (accidentally marked
normative).
See: https://github.com/tc39/proposal-temporal/commit/3039c98
2022-01-25 00:06:49 +00:00
Linus Groh
31283b5e64
LibJS: Pass valid offset string directly to CreateTemporalTimeZone
...
This is an editorial change in the Temporal spec.
See:
- https://github.com/tc39/proposal-temporal/commit/75490b9
- https://github.com/tc39/proposal-temporal/commit/8b70e4b
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
Timothy Flynn
70f49d0696
LibJS+LibTimeZone+LibUnicode: Indicate whether a time zone is in DST
...
Return whether the time zone is in DST during the provided time from
TimeZone::get_time_zone_offset,
2022-01-19 21:20:41 +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
cf6ceb956f
LibJS: Avoid js_string() allocation in parse_time_zone_offset_string()
...
No need to take the spec literally here since we know the input values
are guaranteed to be integral numbers. Use AK string to number parsing
functionality instead and save a couple of PrimitiveString allocations.
This matches what we already do in parse_temporal_time_zone_string().
2022-01-12 21:24:12 +01:00
Timothy Flynn
f6786881aa
LibJS: Implement the ECMA-402 definition of DefaultTimeZone
...
Simply defer to LibTimeZone to retrieve the system's current time zone.
Also update some Temporal tests to explicitly set the time zone to UTC.
2022-01-12 15:43:12 +01:00
Linus Groh
355fbcb702
LibJS: Actually implement get_iana_time_zone_offset_nanoseconds()
...
Instead of hard-coding an UTC offset of zero seconds, which worked for
the sole UTC time zone, we can now get the proper offset from the TZDB!
2022-01-11 22:17:39 +01:00
Linus Groh
d527eb62da
LibJS: Support non-UTC time zones in Temporal :^)
...
We can now recognize & normalize all time zones from the IANA time zone
database and not just 'UTC', which makes the LibJS Temporal
implementation a lot more useful! Thanks to the newly added LibTimeZone,
this was incredibly easy to implement :^)
This already includes these recent editorial changes in the Temporal
spec: https://github.com/tc39/proposal-temporal/commit/27bffe1
2022-01-11 22:17:39 +01:00
Linus Groh
f1276144ba
LibJS: Check if input was exhausted after parsing UTC offset fraction
...
Previously parse_time_zone_numeric_utc_offset_syntax() would return true
to indicate success when parsing a string with an invalid number of
digits in the fractional seconds part (e.g. 23:59:59.9999999999).
We need to check if the lexer has any characters remaining, and return
false if that's the case.
2022-01-11 21:16:33 +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
c56e5139f5
LibJS: Fix modulo in get_iso_parts_from_epoch() for negative epoch ns
...
This now matches the spec change from reminder() to modulo which was
done here: https://github.com/tc39/proposal-temporal/commit/bdf60f5
2021-12-22 11:27:31 +01:00
Linus Groh
9c209b8079
LibJS: Support modulo(x, y) with different types
...
It's a bit annoying having to add '.0' to y given that it's an integral
number in most cases.
This turns the single template parameter T into T and U to permit that.
2021-12-22 11:27:31 +01:00
Linus Groh
b70a55bd5a
LibJS: Update spec comment in get_iso_parts_from_epoch()
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/bdf60f5
2021-12-18 22:32:39 +00:00
Linus Groh
3f1af7c05f
LibJS: Update parse_temporal_time_zone() to match the spec again
2021-11-20 23:10:09 +00:00
Linus Groh
2ecb47c985
LibJS: Update spec comments in format_time_zone_offset_string()
...
This is an editorial change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/60c753a
2021-11-19 19:29:18 +00:00
Linus Groh
eaa3329573
LibJS: Fix incorrect use of "modulo" in get_iso_parts_from_epoch()
...
This would return incorrect results for negative inputs. It still does
to some extent, remainder() in step 2 might need to be replaced with
modulo (I opened an issue in tc39/proposal-temporal about that).
2021-11-17 22:31:28 +00:00
Luke Wilde
3666d2132b
LibJS: Remove fallback value for get_offset_nanoseconds_for
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/664f02d
Note that the tests are not comprehensive.
2021-11-17 11:30:13 +00:00