Age | Commit message (Collapse) | Author | |
---|---|---|---|
2021-07-23 | LibJS: Add missing PlainDateTime case in ToTemporalDate | Idan Horowitz | |
2021-07-23 | LibJS: Implement Temporal.PlainDateTime.prototype.getISOFields() | Linus Groh | |
2021-07-23 | LibJS: Implement Temporal.PlainDateTime.prototype.toPlainDate() | Linus Groh | |
2021-07-23 | LibJS: Fix return type of PlainDateTime::iso_{milli,micro,nano}second() | Linus Groh | |
2021-07-22 | LibJS/Tests: Fix this value error test description in a PlainDate test | Linus Groh | |
2021-07-22 | LibJS/Tests: Replace snake_case with pascalCase in two PlainDate tests | Linus Groh | |
2021-07-22 | LibJS: Add missing step number in PlainDatePrototype | Linus Groh | |
2021-07-22 | LibJS: Implement Temporal.PlainDateTime.prototype.calendar | Linus Groh | |
2021-07-22 | LibJS: Implement Temporal.PlainDateTime.prototype.valueOf() | Linus Groh | |
2021-07-22 | LibJS: Implement Temporal.PlainDateTime.prototype[@@toStringTag] | Linus Groh | |
2021-07-22 | LibJS: Start implementing Temporal.PlainDateTime | Linus Groh | |
This commit adds the PlainDateTime object itself, its constructor and prototype (currently empty), and the CreateTemporalDateTime abstract operation. | |||
2021-07-22 | LibJS: Add missing spec links to System{Instant,UTCEpochNanoseconds} | Linus Groh | |
2021-07-22 | LibJS: Remove pointless 'explicit' from a couple of constructors | Linus Groh | |
2021-07-22 | LibJS: Fix value of Temporal.PlainDate.length | Linus Groh | |
Should be 3 (year, month, day, optional calendar-like), not 0. | |||
2021-07-22 | LibJS: Implement String.prototype.split with UTF-16 code units | Timothy Flynn | |
Also required implementing the SplitMatch abstract operation with UTF-16 code units. | |||
2021-07-22 | LibJS: Implement String.prototype.replaceAll with UTF-16 code units | Timothy Flynn | |
2021-07-22 | LibJS: Implement String.prototype.replace with UTF-16 code units | Timothy Flynn | |
2021-07-22 | LibJS: Implement String.prototype.endsWith with UTF-16 code units | Timothy Flynn | |
2021-07-22 | LibJS: Implement String.prototype.startsWith with UTF-16 code units | Timothy Flynn | |
2021-07-22 | LibJS: Implement String.prototype.lastIndexOf with UTF-16 code units | Timothy Flynn | |
2021-07-22 | LibJS: Implement String.prototype.slice with UTF-16 code units | Timothy Flynn | |
This also implements String.prototype.slice more closely to the spec (such as handling indices equivalent to Infinity). | |||
2021-07-22 | LibJS: Implement StringPad abstract operation with UTF-16 code units | Timothy Flynn | |
Affects String.prototype.padStart and String.prototype.padEnd. | |||
2021-07-22 | LibJS: Implement String.prototype.at with UTF-16 code units | Timothy Flynn | |
2021-07-22 | LibJS: Implement String.prototype.substr with UTF-16 code units | Timothy Flynn | |
2021-07-22 | LibJS: Implement String.prototype.substring with UTF-16 code units | Timothy Flynn | |
2021-07-22 | LibJS: Implement String.prototype.indexOf with UTF-16 code units | Timothy Flynn | |
2021-07-22 | LibJS: Implement String.prototype.includes with UTF-16 code units | Timothy Flynn | |
This also implements String.prototype.includes more closely to the spec (such as returning false when the search string is a RegExp object). | |||
2021-07-22 | LibJS: Implement String.prototype.codePointAt with UTF-16 code units | Timothy Flynn | |
This also implements the CodePointAt abstract operation. This is needed to handle invalid code units specific to the JavaScript spec, rather than e.g. inserting replacement code units. This abstraction is public because RegExp.prototype will also need it. | |||
2021-07-22 | LibJS: Implement String.prototype.charCodeAt with UTF-16 code units | Timothy Flynn | |
2021-07-22 | LibJS: Implement String.prototype.charAt with UTF-16 code units | Timothy Flynn | |
2021-07-22 | LibJS: Report string properties using UTF-16 code units | Timothy Flynn | |
String length is reported as the number of UTF-16 code units, and string indices are reported as the UTF-16 code units themselves. | |||
2021-07-22 | LibJS: Transcode UTF-8 strings to UTF-16 and add UTF-16 accessors | Timothy Flynn | |
LibJS parses JavaScript as UTF-8, so when creating a string, we must transcode it to UTF-16 to handle encoded surrogate pairs. For example, consider the following string: "\ud83d\ude00" The UTF-8 encoding of this surrogate pair is: 0xf0 0x9f 0x98 0x80 However, LibJS will currently store the two surrogates individually as UTF-8 encoded bytes, rather than combining the pair: 0xed 0xa0 0xb8, 0xed 0xb8 0x80 These are not equivalent. So, as String.prototype becomes UTF-16 aware, this encoding will no longer work for abstractions like strict equality. | |||
2021-07-22 | LibJS: Add UTF-16 tests to String.prototype methods that already work | Timothy Flynn | |
These methods did not require UTF-16 views, so just add test cases to ensure they remain correct. This also adds a couple of FIXME comments on tests that will fail even with UTF-16 String.prototype support (for reasons such as lack of UTF-16 support in RegExp.prototype and Unicode case folding). | |||
2021-07-21 | LibJS: Implement Temporal.PlainDate.prototype.equals & Required AO | Idan Horowitz | |
2021-07-21 | LibJS: Implement the ToTemporalDate Abstract Operation | Idan Horowitz | |
This is required by most Temporal.PlainDate.prototype methods. | |||
2021-07-21 | LibJS: Add Temporal.Calendar.prototype.dateFromFields & required AOs | Idan Horowitz | |
This is required for implementing the DateFromFields PlainDate AO. | |||
2021-07-21 | LibJS: Use trunc instead of a static_cast<i64> in is_integral_number | Idan Horowitz | |
This ensures we return true for integers that do not fit in an i64 aka, above 9223372036854775807. (2**63 - 1) | |||
2021-07-21 | LibJS: Remove usages of String's null state in Temporal AOs | Idan Horowitz | |
2021-07-21 | LibJS: Implement Temporal.PlainDate.prototype.valueOf | Idan Horowitz | |
2021-07-21 | LibJS: Use IntrusiveList for keeping track of WeakContainers | Andreas Kling | |
2021-07-21 | LibJS: Use IntrusiveList for keeping track of MarkedValueLists | Andreas Kling | |
2021-07-21 | LibJS: Use IntrusiveList for keeping track of HandleImpls | Andreas Kling | |
This allows us to remove a HashTable from heap and cuts down on some of the malloc traffic when creating handles. | |||
2021-07-20 | LibJS: Add tests for strict mode and strict mode propagation | davidot | |
2021-07-20 | LibJS: Fix that non-existent references are unresolvable in strict mode | davidot | |
2021-07-20 | LibJS: Fix tests that expected wrong this values | davidot | |
2021-07-20 | LibJS: Follow the spec more closely when determining the this value | Timothy Flynn | |
Co-authored-by: davidot <david.tuin@gmail.com> | |||
2021-07-20 | LibJS: Fix that vm.in_strict_mode was propagated to eval and functions | davidot | |
For eval it depends on the CallerMode and for a created function it depends on the function itself. | |||
2021-07-20 | LibJS: Disallow unqualified deletes in strict mode | davidot | |
2021-07-20 | LibJS: Disallow multiple __proto__ keys in object expression | davidot | |
2021-07-20 | LibJS: Disallow static methods named prototype in classes | davidot | |