Hendiadyoin1
b76d3f287f
LibJS: Make yy{/,-}mm{/,-}dd hh:mm
test timezone independent
...
Otherwise this will fail in non UTC timezones.
2023-03-23 13:33:03 -04:00
Luke Wilde
f0d0459c3e
LibJS: Support the yy{/,-}mm{/,-}dd hh:mm format for Date
...
Required by a UK news website for loading a Piano configuration.
This is presumably configuration for piano.io Analytics.
2023-03-23 13:38:08 +01:00
Timothy Flynn
24459a44b0
LibJS: Ensure Date tests can pass in any time zone by testing UTC values
...
When we create a Date object from a timestamp, or set its value by way
of Date.prototype.setTime, the timestamp is interpreted as UTC. Change
test expecatations against such instances to use UTC as well.
2023-03-21 18:05:22 +00:00
Luke Wilde
ddc7bedca6
LibJS: Make int_part a double in StringPrototype::to_string
...
u64 is not big enough to hold extremely large numbers, such as
4.192938423e+54. This would cause an integer underflow on the radix
index when performing something like `toString(36)` and thus cause an
OOB Array read.
2023-03-01 10:53:31 +01:00
Ali Mohammad Pur
bcfbe0fbf7
LibJS: Manually loop over escaped regex pattern instead of ::replace()
...
This makes it ever-so-slightly faster, but more importantly, it fixes
the bug where a `/\//` regex's `source` property would return `\\/`
("\\\\/") instead of `\/` due to the existing '/' -> '\/' replace()
call.
2023-02-16 21:03:19 +01:00
Timothy Flynn
5cbf054651
LibUnicode: Fix typos causing text segmentation on mid-word punctuation
...
For example the words "can't" and "32.3" should not have boundaries
detected on the "'" and "." code points, respectively.
The String test cases fixed here are because "b'ar" is now considered
one word.
2023-02-15 12:36:47 +01:00
Luke Wilde
588dae8aa6
LibJS/Temporal: Allow annotations after YYYY-MM and MM-DD
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/160e836
2023-02-11 18:42:32 +00:00
Timothy Flynn
bb4fda3b97
LibJS: Format the era of ISO year 0 as BC
...
This is a normative change in the ECMA-402 spec. See:
https://github.com/tc39/ecma402/commit/2034315
2023-02-02 12:12:26 +00:00
Timothy Flynn
e74e8381d5
LibJS: Allow "approximately" results to differ in plural form
...
This is a normative change in the Intl.NumberFormat V3 spec. See:
https://github.com/tc39/proposal-intl-numberformat-v3/commit/08f599b
Note that this didn't seem to actually affect our implementation. The
Unicode spec states:
https://www.unicode.org/reports/tr35/tr35-53/tr35-numbers.html#Plural_Ranges
"If there is no value for a <start,end> pair, the default result is end"
Therefore, our implementation did not have the behavior noted by the
issue this normative change addressed:
const pr = new Intl.PluralRules("en-US");
pr.selectRange(1, 1); // Is "other", should be "one"
Our implementation already returned "one" here because there is no such
<start=one, end=one> value in the CLDR for en-US. Thus, we already
returned the end value of "one".
2023-01-30 14:10:07 -05:00
Timothy Flynn
5b3b14be0a
LibJS: Move resolution of some Intl.NumberFormat options to a common AO
...
This is a normative change in the Intl.NumberFormat V3 spec. See:
https://github.com/tc39/proposal-intl-numberformat-v3/commit/29acfc6
This is to allow Intl.PluralRules to use these options, as they were in-
effect required by later AOs anyways.
2023-01-30 12:19:14 -05:00
davidot
6255ca4a42
LibJS: Add DisposableStack{, Prototype, Constructor}
...
Since the async parts of the spec are not stage 3 at this point we don't
add AsyncDisposableStack.
2023-01-23 09:56:50 +00:00
davidot
2c87ff2218
LibJS: Add Symbol.dispose
2023-01-23 09:56:50 +00:00
davidot
3353cf68f1
LibJS: Add SuppressedError{, Prototype, Constructor}
2023-01-23 09:56:50 +00:00
Timothy Flynn
d1881da2be
LibJS: Set approximate number range format result's "source" to "shared"
...
This is a normative change in the Intl.NumberFormat v3 spec. See:
https://github.com/tc39/proposal-intl-numberformat-v3/commit/7510e7f
2023-01-14 19:12:48 +00:00
Luke Wilde
fa1416987a
LibJS: Add yearOfWeek calendar methods and properties
...
This is a normative change in the Temporal spec.
See:
- https://github.com/tc39/proposal-temporal/commit/7fa4d18
- https://github.com/tc39/proposal-temporal/commit/caa941d
2022-12-26 09:30:36 +01:00
Timothy Flynn
a2cf026b30
LibJS: Throw a RangeError when when formatting strings in DurationFormat
...
This is a normative change in the Intl.DurationFormat proposal. See:
https://github.com/tc39/proposal-intl-duration-format/commit/2546080
2022-12-15 09:40:09 +00:00
davidot
2bbea62176
LibJS: Don't update names of resulting functions in object expression
...
The only cases where the name should be set is if the function comes
from a direct anonymous function expression.
2022-12-14 15:27:08 +00:00
Luke Wilde
ce39c907fd
LibJS: Support MM/DD/YYYY HH:MM <timezone-offset> format for Date
...
Required by Discord to determine if it should show Christmas themed
loading tips on the loading screen.
Fixes #16473 .
2022-12-13 21:42:28 +00:00
Timothy Flynn
d37d6b3479
LibJS: Protect CanonicalIndex against double-to-integer overflow
...
Explicitly disallow constructing a CanonicalIndex from a floating point
type without going through a factory method that will throw when the
provided index cannot fit in a u32.
2022-12-07 16:43:19 +00:00
davidot
cf0d30add6
LibJS: Add a function to ensure calls are made within the same second
...
Before these tests could be flaky if they happened to be called around
the edge of a second. Now we try up to 5 times to execute the tests
while staying within the same second.
2022-12-03 23:04:08 +00:00
Idan Horowitz
2e806dab07
LibJS: Implement Set.prototype.isDisjointFrom
2022-12-02 13:09:15 +01:00
Idan Horowitz
3470f33a0f
LibJS: Implement Set.prototype.isSupersetOf
2022-12-02 13:09:15 +01:00
Idan Horowitz
e29be4eaa8
LibJS: Implement Set.prototype.isSubsetOf
2022-12-02 13:09:15 +01:00
Idan Horowitz
e359eeabe8
LibJS: Implement Set.prototype.symmetricDifference
2022-12-02 13:09:15 +01:00
Idan Horowitz
be8329d5f6
LibJS: Implement Set.prototype.difference
2022-12-02 13:09:15 +01:00
Idan Horowitz
9e693304ff
LibJS: Implement Set.prototype.intersection
2022-12-02 13:09:15 +01:00
Idan Horowitz
fee65f6453
LibJS: Implement Set.prototype.union
2022-12-02 13:09:15 +01:00
Linus Groh
b0e7d59b8b
LibJS: Throw on conversion from TimeZone to Calendar and vice versa
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/2084e77
2022-12-02 02:04:13 +01:00
Timothy Flynn
3ee5217adc
LibJS: Implement String.prototype.toWellFormed
2022-12-01 17:03:55 +01:00
Timothy Flynn
0bb46235a7
LibJS: Implement String.prototype.isWellFormed
2022-12-01 17:03:55 +01:00
Timothy Flynn
34e328e580
LibJS: Allow TypedArrays to become detached while sorting
...
This is a normative change in the Change Array by Copy proposal. See:
https://github.com/tc39/proposal-change-array-by-copy/commit/17d8b54
2022-11-30 23:27:51 +01:00
Timothy Flynn
675e5bfdce
LibJS: Allow specifying only roundingIncrement in NumberFormat options
...
This is a normative change in the Intl.NumberFormat v3 spec. See:
https://github.com/tc39/proposal-intl-numberformat-v3/commit/a260aa3
2022-11-29 10:24:44 +01:00
davidot
ab19d7c99d
LibJS: Enable commented out tests in Math.asin
2022-11-28 13:10:21 +01:00
davidot
bf1b2d63c6
LibJS: Add spec comments and check for edge cases in Math.tanh
2022-11-28 13:10:21 +01:00
davidot
8de8742b7c
LibJS: Add spec comments and check for edge cases in Math.sinh
2022-11-28 13:10:21 +01:00
davidot
4306462a95
LibJS: Add spec comments and check for edge cases in Math.log10
2022-11-28 13:10:21 +01:00
davidot
eda90b54d4
LibJS: Add spec comments and check for edge cases in Math.log2
2022-11-28 13:10:21 +01:00
davidot
4813385c9a
LibJS: Add spec comments and check for edge cases in Math.log
2022-11-28 13:10:21 +01:00
davidot
d4e5644df8
LibJS: Add spec comments and check for edge cases in Math.atanh
2022-11-28 13:10:21 +01:00
davidot
c565cbd30c
LibJS: Add spec comments and check for edge cases in Math.atanh
2022-11-28 13:10:21 +01:00
davidot
68aeeea5d2
LibJS: Add spec comments and check for edge cases in Math.asinh
2022-11-28 13:10:21 +01:00
davidot
6bdf021b0c
LibJS: Add spec comments and check for edge cases in Math.asin
2022-11-28 13:10:21 +01:00
davidot
cf4daa3941
LibJS: Add spec comments and check for edge cases in Math.acosh
2022-11-28 13:10:21 +01:00
Andreas Kling
f7a252ae85
LibJS: Fix UTF-16 corruption in String.prototype.replace()
...
We were mistakenly trying to append UTF-16 code units to a StringBuilder
via the append(char) API. This patch fixes that by accumulating the
result in a Vector<u16> instead.
This'll be a bit worse for performance, since we're now doing additional
UTF-16 string conversions, but we're going for correctness at this stage
and can worry about performance later.
2022-11-19 11:30:06 -07:00
Timothy Flynn
8eec25b7ae
LibJS: Use more accurate number-to-string method in Number toExponential
2022-11-04 21:12:10 +00:00
Timothy Flynn
5898db8c0f
LibJS: Use more accurate number-to-string method in Number toPrecision
2022-11-04 21:12:10 +00:00
Timothy Flynn
d56205f991
LibJS: Use more accurate number-to-string method in Intl.NumberFormat
...
Intl.NumberFormat only ever wants literal number-to-digits here, without
extra exponential formatting.
2022-11-04 21:12:10 +00:00
Luke Wilde
ac67077b57
LibJS: Fix length of PlainDateTime.withPlainTime
...
withPlainTime's argument is optional, so the length of the function is
actually 0.
2022-11-03 21:09:58 +00:00
Luke Wilde
b26b18a0bc
LibJS: Add timeZoneName: "critical" option to ZonedDateTime.toString()
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/d84937f
2022-11-03 19:15:50 +00:00
Luke Wilde
4a167cfbec
LibJS: Add calendarName: "critical" option to toString() methods
...
This is a normative change in the Temporal spec.
See: https://github.com/tc39/proposal-temporal/commit/e715a50
2022-11-03 19:15:50 +00:00