Timothy Flynn
3892b6e6ec
LibJS: Implement RegExp constructor according to the spec
...
This allows passing an existing RegExp object (or an object that is
sufficiently like a RegExp object) as the "pattern" argument of the
RegExp constructor.
2021-07-09 19:45:55 +01:00
Idan Horowitz
52aa777d49
LibJS: Add %TypedArray%.prototype.sort
2021-07-09 16:15:42 +01:00
Idan Horowitz
f98a98506f
LibJS: Add %TypedArray%.prototype.subarray
2021-07-09 16:15:42 +01:00
Idan Horowitz
ff052a3241
LibJS: Add %TypedArray%.prototype.slice
2021-07-09 16:15:42 +01:00
Linus Groh
ca71d99c66
LibJS: Implement Temporal.Instant.fromEpochNanoseconds()
2021-07-09 13:20:51 +01:00
Linus Groh
5872357b56
LibJS: Implement Temporal.Instant.fromEpochMicroseconds()
2021-07-09 13:20:51 +01:00
Linus Groh
66ff772254
LibJS: Implement Temporal.Instant.fromEpochMilliseconds()
2021-07-09 13:20:51 +01:00
Linus Groh
2401e45720
LibJS: Implement Temporal.Instant.fromEpochSeconds()
2021-07-09 13:20:51 +01:00
Linus Groh
3014e529be
LibJS: Tweak error message in the NumberToBigInt abstract operation
...
This is no longer specific to the BigInt() constructor, so it shouldn't
be mentioning an 'argument' that we might not have.
2021-07-09 13:20:51 +01:00
Linus Groh
9f2dd89446
LibJS/Tests: Add tests for Date.prototype.toTemporalInstant()
2021-07-09 13:20:51 +01:00
Luke
1da06f9dfd
LibJS: Add %TypedArray%.prototype.map
2021-07-09 10:15:45 +01:00
Luke
bc6f619344
LibJS: Add TypedArraySpeciesCreate and %TypedArray%.prototype.filter
...
I'm not too happy with how I get the default constructor in
typed_array_species_create, but it works for now.
2021-07-09 10:15:45 +01:00
Linus Groh
6531485251
LibJS/Tests: Add tests for Temporal.Instant() constructor
2021-07-08 23:08:27 +01:00
Linus Groh
117323f2d9
LibJS: Implement Temporal.Instant.prototype.epochNanoseconds
2021-07-08 23:08:27 +01:00
Linus Groh
b5d0cdc97e
LibJS: Implement Temporal.Instant.prototype.epochMicroseconds
2021-07-08 23:08:27 +01:00
Linus Groh
b157ab3f12
LibJS: Implement Temporal.Instant.prototype.epochMilliseconds
2021-07-08 23:08:27 +01:00
Linus Groh
5010e01223
LibJS: Implement Temporal.Instant.prototype.epochSeconds
2021-07-08 23:08:27 +01:00
Linus Groh
dad336c944
LibJS: Implement Temporal.Instant.prototype[@@toStringTag]
2021-07-08 23:08:27 +01:00
Linus Groh
439b35dc7d
LibJS/Tests: Add tests for Temporal.TimeZone() constructor
2021-07-08 23:08:27 +01:00
Linus Groh
51c581f604
LibJS: Implement Temporal.TimeZone.prototype.id
2021-07-08 23:08:27 +01:00
Linus Groh
7f0fe352e2
LibJS: Implement Temporal.TimeZone.prototype.toJSON()
2021-07-08 23:08:27 +01:00
Linus Groh
8d00504ff2
LibJS: Implement Temporal.TimeZone.prototype.toString()
2021-07-08 23:08:27 +01:00
Linus Groh
2e968700aa
LibJS: Implement Temporal.TimeZone.prototype[@@toStringTag]
2021-07-08 23:08:27 +01:00
Idan Horowitz
241f9f21d4
LibJS: Add %TypedArray%.prototype.reduceRight
2021-07-08 16:30:09 +01:00
Idan Horowitz
2356382938
LibJS: Add %TypedArray%.prototype.reduce
2021-07-08 16:30:09 +01:00
Idan Horowitz
f0abcde00c
LibJS: Add %TypedArray%.prototype.lastIndexOf
2021-07-08 16:30:09 +01:00
Idan Horowitz
6343bfa9d7
LibJS: Add %TypedArray%.prototype.indexOf
2021-07-08 16:30:09 +01:00
Idan Horowitz
da49a7a9f8
LibJS: Add %TypedArray%.prototype.includes
2021-07-08 16:30:09 +01:00
Idan Horowitz
3b9886949f
LibJS: Add %TypedArray%.prototype.fill
2021-07-08 16:30:09 +01:00
Luke
c7a839bb24
LibJS: Add %TypedArray%.prototype.copyWithin
...
This fixes 44 test262 cases.
2021-07-08 15:12:52 +01:00
Timothy Flynn
35a2ba8ed8
LibJS: Implement RegExp.prototype [ @@search ]
...
String.prototype.search is already implemented, but relies on the well-
known Symbol.search, which was not implemented.
2021-07-08 00:01:20 +01:00
Timothy Flynn
2d0589f93c
LibJS: Implement global RegExp.prototype.match
...
Also rename the 'rx' variable to 'regexp_object' to match other RegExp
methods.
2021-07-08 00:01:20 +01:00
Timothy Flynn
b6b5adb47d
LibJS: Implement RegExp.prototype.match with RegExpExec abstraction
2021-07-08 00:01:20 +01:00
Timothy Flynn
ec898a3370
LibJS: Implement RegExp.prototype.replace with RegExpExec abstraction
...
Also rename the 'rx' variable to 'regexp_object' to match other RegExp
methods.
2021-07-08 00:01:20 +01:00
Timothy Flynn
6c53475143
LibJS: Implement RegExp.prototype.test with RegExpExec abstraction
2021-07-08 00:01:20 +01:00
davidot
7310713d11
LibJS: Remove fast array paths in ArrayPrototype::{pop, push}
...
Unfortunately this fast path leads to problems if Array.prototype is
changed. We probably need to find out some way to optimize these methods
by detecting changes to the prototype or other mechanisms.
2021-07-07 21:24:26 +01:00
Timothy Flynn
e0d26fff8c
LibJS: Replace strings with the search value coerced to a string
...
This only causes 1 new test262 test to pass. Other tests that rely on
this coercion fail due to receiving an unexpected value for 'this' when
invoking a functional replacement. For example:
String/prototype/replaceAll/replaceValue-call-matching-empty.js
Receives 'undefined' for 'this' in the functional replacement invocation
but is expected to receive the global 'this'.
2021-07-06 22:33:17 +01:00
Timothy Flynn
81fec49ac3
LibJS: Evaluate replacement value before searching source string
...
The String.prototype.replace spec requires evaluating the replacement
value (if it is not a function) before searching the source string.
Fixes 4 test262 tests.
2021-07-06 22:33:17 +01:00
Timothy Flynn
65003241e4
LibRegex: Allow dollar signs in ECMA262 named capture groups
...
Fixes 1 test262 test.
2021-07-06 22:33:17 +01:00
Linus Groh
30fe0529bd
LibJS: Fix second argument passed to Proxy [[Call]] trap (thisArgument)
2021-07-06 17:29:12 +01:00
Timothy Flynn
8fcdc57ae1
LibJS: Coerce named captures to an object before calling GetSubstitution
...
Per the spec, before invoking the GetSubstitution abstraction, the named
capture groups (if not undefined) should be coerced to an object via the
ToObject abstraction.
2021-07-06 15:07:26 +01:00
Timothy Flynn
424c7eaa40
LibJS: Fix replaceAll crash for overlapping search string positions
...
The implementation of String.prototype.replaceAll cannot use AK's
implementation of String::find_all when finding the indices of the
search string in the source string. String::find_all will return indices
[0, 1] for String("aaa").find_all("aa") - i.e. it returns overlapping
results. This is not allowed by the JavaScript specification for
replaceAll.
2021-07-06 15:07:26 +01:00
Idan Horowitz
a6b8291a9b
LibJS: Add define_direct_property and remove the define_property helper
...
This removes all usages of the non-standard define_property helper
method and replaces all it's usages with the specification required
alternative or with define_direct_property where appropriate.
2021-07-06 14:20:30 +01:00
Luke
d89f539d16
LibJS: Add %TypedArray%.prototype.reverse
...
This fixes 13 test262 cases.
2021-07-06 13:40:27 +01:00
Luke
275092bb03
LibJS: Fix byteOffset copy-paste error in TypedArray buffer test
2021-07-06 13:40:19 +01:00
Luke
c8db607c00
LibJS: Fix byteOffset copy-paste error in TypedArray byteLength test
2021-07-06 13:40:19 +01:00
Luke
651becbfb1
LibJS: Use Number instead of parseInt in TypedArray forEach BigInt tests
...
The Number constructor previously didn't support converting BigInts to
regular numbers, so I used parseInt as a workaround.
Since it now supports this, this workaround is no longer needed.
2021-07-06 13:40:19 +01:00
Luke
8244d7916e
LibJS: Add Uint8ClampedArray to TypedArray tests
2021-07-06 13:40:19 +01:00
Hendi
793e1bf28a
LibJS: Fix variable scoping issues in two tests
2021-07-06 00:15:37 +01:00
Timothy Flynn
e0c9f58b0c
LibJS: Implement and use the GetSubstitution abstract operation
...
Used by String.prototype.replace, String.prototype.replaceAll, and
RegExp.prototype [ @@replace ].
2021-07-05 23:26:41 +01:00