Linus Groh
28a3c064c5
LibJS/Tests: Disable one Array.prototype.toSpliced test for now
...
It keeps failing on i686, and will until we've updated a bunch of size_t
APIs in the codebase to u64.
2022-07-04 18:50:35 +02:00
Linus Groh
4b70ddf5a0
LibJS: Let Array.prototype.toSpliced throw RangeError for len <= 2^53-1
...
This aligns it with the spec again, it was clarified that the additional
range check before ArrayCreate is intentional:
https://github.com/tc39/proposal-change-array-by-copy/issues/94
Also cast the final variable to an u64 instead of size_t after we have
determined that it is safe to do so, as that's what Array::create()
takes now.
2022-07-04 10:10:11 +02:00
Obinna Ikeh
5f726ace53
LibJS: Add tests for %TypedArray%.prototype.toReversed
2022-07-03 01:12:32 +02:00
Idan Horowitz
1ebc5af2f0
LibJS: Set both {minimum, maximum}FractionDigits in Intl.DurationFormat
...
This is a normative change in the Intl.DurationFormat spec.
See: b293603e
2022-07-02 18:32:35 +03:00
Idan Horowitz
fb8c4a724e
LibJS: Disallow mixed-sign durations in Intl.DurationFormat
...
This is a normative change in the Intl.DurationFormat spec.
See: 89ab1855
2022-07-02 18:32:35 +03:00
Idan Horowitz
b6b8356c0c
LibJS: Implement Intl.DurationFormat.prototype.formatToParts
2022-07-01 01:00:05 +03:00
Idan Horowitz
706ff5ac83
LibJS: Implement Intl.DurationFormat.prototype.format
2022-07-01 01:00:05 +03:00
Idan Horowitz
d9a4b3e46a
LibJS: Implement Intl.DurationFormat.prototype.resolvedOptions
2022-07-01 01:00:05 +03:00
Idan Horowitz
b20ef7d640
LibJS: Implement Intl.DurationFormat.supportedLocalesOf
2022-07-01 01:00:05 +03:00
Idan Horowitz
97fe37bcc2
LibJS: Start implementing the stage 3 Intl.DurationFormat proposal
2022-07-01 01:00:05 +03:00
Obinna Ikeh
104330d1a0
LibJS: Add tests cases for %TypedArray%.prototype.toSorted function
2022-06-29 13:36:54 +01: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:
- caf013a
- fb7cfa6
2022-06-29 07:35:42 +01:00
Cyber Gsus
f97e664d8f
LibJS: Check for add overflow in DataViewConstructor
...
Use the Checked type from AK to verify that offset + view_byte_length
is buffer_byte_length at most.
2022-06-27 20:51:00 +01:00
Linus Groh
93b4c3bb82
LibJS: Infer file extensions when resolving module paths
...
This allows `import "./foo"` to succeed, even if the file is actually
called `foo.js`. IDEs commonly exclude file extensions in auto-imports.
Closes #14364 .
2022-06-26 22:03:53 +01:00
Linus Groh
3beb7fc42f
LibJS/Tests: Correct pluralSmallestPluralDisallowedOptions largestUnit
2022-06-24 22:12:03 +01:00
Idan Horowitz
a79796ea4a
LibJS: Implement stage 3 proposal FinalizationRegistry changes
...
Specifically the 'Symbol as WeakMap Keys Proposal'.
2022-06-23 10:57:52 +03:00
Idan Horowitz
53ed8decaf
LibJS: Implement WeakRef changes from 'Symbol as WeakMap Keys Proposal'
2022-06-23 10:57:52 +03:00
Idan Horowitz
dbd0110721
LibJS: Implement WeakSet changes from 'Symbol as WeakMap Keys Proposal'
2022-06-23 10:57:52 +03:00
Idan Horowitz
a80d3fdf49
LibJS: Implement WeakMap changes from 'Symbol as WeakMap Keys Proposal'
2022-06-23 10:57:52 +03:00
Linus Groh
d9fc09c6e5
LibJS/Tests: Remove outdated FIXME
2022-06-17 21:06:01 +01:00
Linus Groh
569c2dc1d0
LibJS: Adjust order of operations in ISO{Date,MonthDay}FromFields
...
This is a normative change in the Temporal spec.
See: 7dd90dc
2022-06-15 17:49:20 +01:00
Linus Groh
e96df3b7a7
LibJS: Leverage PrepareTemporalFields in ToTemporalTimeRecord
...
This is an editorial change in the Temporal spec.
See: b5ba981
2022-06-15 17:49:20 +01:00
Linus Groh
698062b831
LibJS: Implement Array.prototype.with()
2022-06-13 20:26:54 +01:00
Linus Groh
ae81793f20
LibJS: Implement Array.prototype.toSpliced()
2022-06-13 20:26:54 +01:00
Linus Groh
ce17c868c0
LibJS: Implement Array.prototype.toSorted()
2022-06-13 20:26:54 +01:00
Linus Groh
e4370b7d82
LibJS: Implement Array.prototype.toReversed()
2022-06-13 20:26:54 +01:00
Linus Groh
013e2df858
LibJS: Rename Array.prototype.groupBy{,ToMap} => group{,ToMap}
...
This is a normative change in the Array Grouping spec.
See: 0cf4077
2022-06-13 20:05:24 +01:00
Linus Groh
4c77575ec5
LibJS: Simplify Temporal unit AOs
...
This is an editorial change in the Temporal spec.
See: 1b3d018
2022-06-10 12:39:11 +02:00
stelar7
771e3b9868
LibJS: Stub out String.prototype.normalize
2022-06-02 23:04:27 +01:00
Luke Wilde
2b764b3594
LibJS: Remove faulty assertion in BalanceDurationRelative
...
This is an editorial change in the Temporal spec.
See: 66f7464
2022-05-16 20:48:41 +01:00
Linus Groh
51e01b5a80
LibJS: Remove redundant TemporalDateString production
...
This is an editorial change in the Temporal spec.
See: 41a8a5c
2022-05-16 20:28:26 +01:00
Linus Groh
b751f80166
LibJS: Change internal slots of Duration to store mathematical values
...
This is a normative change in the Temporal spec.
See: 1f3fba8
2022-05-08 01:01:32 +02:00
Idan Horowitz
9098257668
LibJS: Reject -00000 as extended year in Date parsing
2022-04-30 21:36:27 +02:00
Timothy Flynn
4d0315099f
LibJS: Allow TypeArray to become detached in TypedArray.prototype.set
...
This is a normative change in the ECMA-262 spec. See:
4d570c4
2022-04-13 16:02:01 +02:00
Linus Groh
00b8ce4a6d
LibJS: Pass this value to fallback func in Array.prototype.toString()
...
The existing code looks innocently correct, implementing the following
step:
3. If IsCallable(func) is false, set func to the intrinsic function
%Object.prototype.toString%.
as
return ObjectPrototype::to_string(vm, global_object);
However, this misses the fact that the next step calls the function with
the previously ToObject()'d this value (`array`):
4. Return ? Call(func, array).
This doesn't happen in the current implementation, which will use the
unaltered this value from the Array.prototype.toString() call, and make
another, unequal object in %Object.prototype.toString%. Since both that
and Array.prototype.toString() do a Get() call on said object, this
behavior is observable (see newly added test).
Fix this by actually doing what the spec says and calling the fallback
function the regular way.
2022-04-12 00:23:27 +01:00
Luke Wilde
7798821f5b
LibJS: Add tests for the new steps added to PerformEval
2022-04-11 21:23:36 +01:00
Timothy Flynn
84a81dd466
LibJS: Do not throw a TypeError when sorting a detached TypedArray
...
This is a normative change in the ECMA-262 spec. See:
e0c74e1
2022-04-08 11:15:16 +01:00
Idan Horowitz
59080f441e
LibJS: Normalize NaN values in Sets and Maps
...
This ensures that different NaN types (e.g. 0/0, 0 * Infinity, etc) are
mapped to the same Set/Map entry.
2022-04-02 14:15:43 +01:00
Linus Groh
8e175b4959
LibJS: Adjust ISO8601 representation for years between 1 BCE and 999 CE
...
This is a normative change in the Temporal spec.
See: 39eeecd
2022-03-31 17:09:10 +01:00
Linus Groh
b020b8eea2
LibJS: Handle Etc/GMT timezones properly in TimeZone{IANA,Bracketed}Name
...
This is a normative change in the Temporal spec.
See: 8c73780
2022-03-31 17:09:10 +01:00
Linus Groh
b5392f9e39
LibJS: Emit reference information for { calendarName: "always" } option
...
This is a normative change in the Temporal spec.
See: 4f7519a
2022-03-31 17:09:10 +01:00
Timothy Flynn
f8e7701cf3
LibJS: Disallow calendar display names which contain an underscore
...
This is a normative change in the Intl spec. See:
2703d06
2022-03-30 14:24:32 +01:00
Linus Groh
68ee193464
LibJS: Check type of ShadowRealm.prototype.importValue() 2nd argument
...
This is a normative change in the ShadowRealm spec.
See: 2b45a15
2022-03-29 23:48:25 +01:00
Idan Horowitz
02e97b3313
LibJS: Bring ForIn body evaluation closer to the specification
...
This fixes 2 bugs in our current implementation:
* Properties deleted during iteration were still being iterated
* Properties with the same name in both the object and it's prototype
were iterated twice
2022-03-29 14:34:08 +03:00
Luke Wilde
bd809b7787
LibJS: Add more delete operator tests
2022-03-28 14:05:33 +02:00
Ali Mohammad Pur
a5958b5f45
LibJS: Allow 'expect().fail("some random string")' in test-js
...
Previously fail() wanted the fail object to be a callable, allow it to
be a string also.
2022-03-20 10:44:32 +03:30
Simon Wanner
cc77bb5067
LibJS: Relax line and column number restrictions in Error stack tests
2022-03-16 18:55:55 +00:00
Ali Mohammad Pur
8b50009e9b
LibTest: Provide detailed per-file JSON output with --per-file
...
This makes test-js style runners dump out output in the same format as
libjs-test262's per-file output.
2022-03-16 15:44:52 +00:00
Linus Groh
fb60ada6ce
LibJS: Handle non-Error this object in Error.prototype.stack getter
...
This is taken from the abandoned error stacks proposal, which
already serves as the source of truth for the setter. It only requires
the this value to be an object - if it's not an Error object, the getter
returns undefined.
I have not compared this behavior to the non-standard implementations of
the stack property in other engines, but presumably the spec authors
already did that work.
This change gets the Sentry browser SDK working to a point where it can
actually send uncaught exceptions via the API :^)
2022-03-15 17:32:48 +01:00
Linus Groh
37e988675f
LibJS/Tests: Consolidate Error.prototype.stack tests
...
We don't usually separate tests for the getter and setter of a property,
and that error-stack.js (getter) test belongs in builtins/.
2022-03-15 17:32:48 +01:00