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
Timothy Flynn
ef94c73a01
LibJS: Implement Intl.ListFormat.prototype.resolvedOptions
2021-09-06 23:49:56 +01:00
Timothy Flynn
5c06a91dfa
LibJS: Implement Intl.ListFormat.prototype.formatToParts
2021-09-06 23:49:56 +01:00
Timothy Flynn
cdba40f7ea
LibJS: Implement Intl.ListFormat.prototype.format
2021-09-06 23:49:56 +01:00
Timothy Flynn
3b410742ab
LibJS: Implement Intl.ListFormat.supportedLocalesOf
2021-09-06 23:49:56 +01:00
Timothy Flynn
eacc8bef47
LibJS: Implement the Intl.ListFormat constructor
2021-09-06 23:49:56 +01:00
Timothy Flynn
8e75e5fabb
LibJS: Implement a nearly empty Intl.ListFormat object
...
This adds plumbing for the Intl.ListFormat object, constructor, and
prototype.
2021-09-06 23:49:56 +01: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
Timothy Flynn
207319ecf1
LibJS: Implement ECMA-402 String.prototype.toLocale{Lower,Upper}Case
2021-09-06 15:24:27 +01:00
Timothy Flynn
14086c69e7
LibJS: Only remove Unicode locale extensions during the LookupMatcher AO
...
This was one of the first AOs used for Intl, and I misinterpreted the
spec. Rather than removing all extensions, we must only remove Unicode
locale extensions.
Also use LocaleID::to_string() here instead of the heavier canonical
string method, because the locale is already canonical.
2021-09-06 15:24:27 +01:00
Ali Mohammad Pur
7589cc2494
LibJS: Handle possible allocation failure in ArrayBuffer(size_t)
...
...by replacing it with a ctor that takes the buffer instead, and
handling the allocation failure in ArrayBuffer::create(size_t) by
throwing a RangeError as specified by the spec.
2021-09-06 01:53:26 +02:00
Ali Mohammad Pur
97e97bccab
Everywhere: Make ByteBuffer::{create_*,copy}() OOM-safe
2021-09-06 01:53:26 +02:00
Linus Groh
6ffc8f389e
LibJS: Use different stack space limit values for with and without ASAN
...
Instead of having a single limit here, which we had to increase once to
work with ASAN enabled, check whether HAS_ADDRESS_SANITIZER is defined
and use 32 KiB, and 16 KiB otherwise (which is what we used previously).
This idea is shamelessly stolen from V8:
b2b44af/src/execution/isolate.cc (L1381-L1387)
2021-09-05 22:17:09 +01:00
Linus Groh
941ff0cf60
LibJS: Prevent stack overflow if Proxy handler's __proto__ is the Proxy
...
Fixes #9322 .
2021-09-05 22:17:09 +01:00
Linus Groh
9998a2c91e
LibJS: Add ErrorType::CallStackSizeExceeded
...
I'm about to add another use of this, so let's add an ErrorType for it
instead of hardcoding the message for a third time.
2021-09-05 22:17:09 +01:00
Linus Groh
0094259d72
LibJS: Implement Intl.DisplayNames.supportedLocalesOf()
2021-09-04 19:08:18 +01:00
Linus Groh
8f3a5ba5d8
LibJS: Add Array::create_from() for generic Vector<T>
...
It relies on a mapper function to convert each T& to a JS::Value. This
allows us to avoid awkward Vector<T> to MarkedValueList conversion at
the call site.
2021-09-04 19:08:18 +01:00
Timothy Flynn
90971673c7
LibJS: Implement Intl.Locale.prototype.minimize
2021-09-04 13:51:40 +01:00
Timothy Flynn
0b1f5118d5
LibJS: Implement Intl.Locale.prototype.maximize
2021-09-04 13:51:40 +01:00
Timothy Flynn
03d7f01e0c
LibJS: Add a constructor to create an Intl.Locale object from a LocaleID
2021-09-04 13:51:40 +01:00
Timothy Flynn
3abfe7f7db
LibJS: Add missing Intl.Locale initializer for plain boolean type
2021-09-04 13:51:40 +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
Luke Wilde
c20669328d
LibJS: Handle +Infinity, -Infinity, +0 and -0 in modulo operator
...
Fixes 11 test262 cases.
2021-09-02 18:26:42 +01:00
Timothy Flynn
32825107de
LibJS: Implement Intl.Locale.prototype.region
2021-09-02 17:56:42 +01:00
Timothy Flynn
349fd06b86
LibJS: Implement Intl.Locale.prototype.script
2021-09-02 17:56:42 +01:00
Timothy Flynn
c3b6f43641
LibJS: Implement Intl.Locale.prototype.language
2021-09-02 17:56:42 +01:00
Timothy Flynn
bdf36575c8
LibJS: Implement Intl.Locale.prototype.numeric
2021-09-02 17:56:42 +01:00
Timothy Flynn
d7825f3680
LibJS: Implement most Intl.Locale.Prototype.<<keyword>> properties
...
The keyword accessors all have the same function body in the spec,
except for the Intl.Locale method they invoke. This generates those
properties in the same manner as RegExp.prototype.
Intl.Locale.prototype.calendar
Intl.Locale.prototype.caseFirst
Intl.Locale.prototype.collation
Intl.Locale.prototype.hourCycle
Intl.Locale.prototype.numberingSystem
The exception is Intl.Locale.prototype.numeric, which will be defined
separately because it is a boolean value.
2021-09-02 17:56:42 +01:00
Timothy Flynn
21b3c5edba
LibJS: Implement Intl.Locale.prototype.baseName
2021-09-02 17:56:42 +01:00
Timothy Flynn
27fc3cfe75
LibJS: Handle existing Intl.Locale objects in CanonicalizeLocaleList
2021-09-02 17:56:42 +01:00
Timothy Flynn
17639a42ae
LibJS: Implement the Intl.Locale constructor
2021-09-02 17:56:42 +01:00
Timothy Flynn
990dd037d2
LibJS: Implement Intl.Locale.prototype.toString()
...
This isn't particularly testable yet without the Intl.Locale constructor
but having this defined will make testing the constructor possible. So
more specific tests for this prototype will come later.
2021-09-02 17:56:42 +01:00
Timothy Flynn
940c023e09
LibJS: Compare Unicode locale variants using case-insensitive matching
...
In the IsStructurallyValidLanguageTag AO, we of course cannot assume the
variants are canonicalized to lower-case yet, because canonicalization
hasn't happened yet.
2021-09-02 17:56:42 +01:00
Timothy Flynn
fdedb3ab33
LibJS: Remove duplicated error message from ErrorTypes.h
...
ErrorType::IntlInvalidCode has almost exactly the same message as
ErrorType::OptionIsNotValidValue. Remove it, as all uses of the former
are semantically interchangeable with the latter.
2021-09-02 17:56:42 +01:00
Timothy Flynn
2c10e9fdd3
LibJS: Implement a nearly empty Intl.Locale object
...
This adds plumbing for the Intl.Locale object, constructor, and
prototype.
2021-09-02 17:56:42 +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