Linus Groh
0e201fbb42
LibJS: Implement Temporal.PlainDate.prototype.toJSON()
2021-08-19 00:26:09 +01:00
Linus Groh
73d888e9e6
LibJS: Implement Temporal.PlainDate.prototype.toLocaleString()
2021-08-19 00:23:48 +01:00
Linus Groh
402f04c2fc
LibJS: Implement Temporal.PlainDate.prototype.toString()
2021-08-19 00:14:17 +02:00
Linus Groh
310192f918
LibJS: Make Temporal's get_option() take a PropertyName directly
...
Instead of constructing a String and converting that to a PropertyName
on the fly, we can just leverage CommonPropertyNames, add a couple more
and directly pass ready-to-use PropertyNames with pre-allocated Strings.
2021-08-19 00:14:17 +02:00
Linus Groh
092f924cfd
LibJS: Reflect naming consistency editorial changes in the Temporal spec
...
See:
- 2aa7dce
- 13daa33
- 8085873
2021-08-18 23:03:22 +01:00
Linus Groh
b2badd6333
LibJS: Update some Temporal spec section numbers
...
These shifted due to the addition of the ParseTemporalRelativeToString
AO in ad06578
.
2021-08-18 19:26:08 +01:00
Linus Groh
90f7e01179
LibJS/Tests: Add Temporal.Calendar.from() tests for more object types
2021-08-17 23:06:05 +01:00
Linus Groh
0cdad283c0
LibJS: Reflect Record wording editorial change in the Temporal spec
...
See: c8f14d0
2021-08-17 21:59:35 +01:00
Linus Groh
74ee1c9a8c
LibJS: Add PlainDateTime fast path to various Calendar.prototype getters
...
This is a recent editorial change in the Temporal spec.
See: c3880a3
2021-08-17 21:59:35 +01:00
Linus Groh
d46c531023
LibJS: Add and use newly introduced ToIntegerThrowOnInfinity Temporal AO
...
See: 2ed58f4
2021-08-17 21:59:35 +01:00
Linus Groh
1292d80b93
LibJS: Implement Temporal.Calendar.prototype.mergeFields()
2021-08-17 00:26:19 +01:00
davidot
47bc72bcf6
LibJS: Correctly handle Unicode characters in JS source text
...
Also recognize additional white space characters.
2021-08-16 23:20:04 +01:00
davidot
4d6502de42
LibJS: Disallow standalone super expression
2021-08-16 23:20:04 +01:00
davidot
a8b25d6c36
LibJS: Handle '++' and '--' more correctly within expression
2021-08-16 23:20:04 +01:00
davidot
5f344f7ca3
LibJS: Check that 'let' is followed by declaration before matching it
...
Since 'let' is a valid variable name (in non-strict mode) let may not be
the start of a declaration but just an identifier.
2021-08-16 23:20:04 +01:00
davidot
179c48e1a4
LibJS: Add optional extra strict checks in parse_binding_pattern
2021-08-16 23:20:04 +01:00
davidot
f1f338edcd
LibJS: Tighten default values in formal parameter parsing
...
Disallow default parameter for rest parameters.
Disallow yield expressions as default values.
2021-08-16 23:20:04 +01:00
davidot
4989e79c45
LibJS: Allow yielding a class
2021-08-16 23:20:04 +01:00
davidot
19582ccad8
LibJS: Treat yield as an identifier in more non-generator contexts
...
And disallow some cases where we are in a generator context.
2021-08-16 23:20:04 +01:00
davidot
26177b1826
LibJS: Add more duplicated declarations detection
...
This is a small step in the right direction although the amount of
different checks is becoming unsustainable. In the future we probably
want to have the current_scope handle all declarations.
2021-08-16 23:20:04 +01:00
davidot
085c7df895
LibJS: Be more strict about the lhs of a for in/of loop
...
This is not entirely correct as really Object- and ArrayExpressions are
not allowed but that requires a bigger refactoring of for statement
parsing.
2021-08-16 23:20:04 +01:00
davidot
106f9e30d7
LibJS: Force the lexer to parse a regex when expecting a statement
2021-08-16 23:20:04 +01:00
davidot
05444103e3
LibJS: Treat arrow expression as function and stop parsing after
2021-08-16 23:20:04 +01:00
davidot
e31b715808
LibJS: Make functions reset break and continue context
2021-08-16 23:20:04 +01:00
davidot
be3b4a68d2
LibJS: Allow class methods named "get", "set" or "static"
2021-08-16 23:20:04 +01:00
davidot
b16c02d6b4
LibJS: Allow labelled functions in certain contexts
...
Also disallow duplicated labels.
2021-08-16 23:20:04 +01:00
davidot
4cc95ae39d
LibJS: Fix that a windows-style new line was not escaped properly
2021-08-16 23:20:04 +01:00
Linus Groh
cbe7015c0c
LibJS: Add missing spec link to YearMonthFromFields
2021-08-16 20:40:21 +01:00
Linus Groh
795e077eb8
LibJS: Implement Temporal.PlainDate.prototype.toPlainMonthDay()
2021-08-16 20:40:21 +01:00
Linus Groh
31f65b8c50
LibJS: Implement Temporal.Calendar.prototype.monthDayFromFields()
2021-08-16 20:40:21 +01:00
Linus Groh
c1ffc17134
LibJS: Implement Temporal.Calendar.prototype.fields()
2021-08-16 20:02:02 +01:00
Linus Groh
6709c915aa
LibJS: Implement Temporal.PlainDate.prototype.toPlainYearMonth()
2021-08-16 14:10:41 +01:00
Linus Groh
ed9d37bd40
LibJS: Implement Temporal.Calendar.prototype.yearMonthFromFields()
2021-08-16 14:10:41 +01:00
davidot
020bfc9d93
LibJS: Parse and partially execute import and export statements
...
We produce the import and export entries as per the spec. However we do
not yet verify that named things that are exported are declared
somewhere.
2021-08-15 23:51:47 +01:00
davidot
7613c22b06
LibJS: Add a mode to parse JS as a module
...
In a module strict mode should be enabled at the start of parsing and we
allow import and export statements.
2021-08-15 23:51:47 +01:00
Linus Groh
fa8e9cb683
LibJS/Tests: Skip flaky FinalizationRegistry.prototype.cleanupSome test
2021-08-15 16:44:01 +01:00
Timothy Flynn
f1ce998d73
LibRegex+LibJS: Combine named and unnamed capture groups in MatchState
...
Combining these into one list helps reduce the size of MatchState, and
as a result, reduces the amount of memory consumed during execution of
very large regex matches.
Doing this also allows us to remove a few regex byte code instructions:
ClearNamedCaptureGroup, SaveLeftNamedCaptureGroup, and NamedReference.
Named groups now behave the same as unnamed groups for these operations.
Note that SaveRightNamedCaptureGroup still exists to cache the matched
group name.
This also removes the recursion level from the MatchState, as it can
exist as a local variable in Matcher::execute instead.
2021-08-15 11:43:45 +01:00
Robert Stefanic
e26cfd313e
LibJS: Prevent stack overflow in flatten_into_array()
...
The check for stack space in VM from push_execution_context has been
moved to a method on VM called did_reach_stack_space_limit. This
allows us to check the stack size in other places besides
push_execution_context.
We can now verify that we have enough space on the stack before calling
flatten_into_array to ensure that we don't cause a stack overflow error
when calling the function with a large depth.
2021-08-15 11:24:30 +01:00
Linus Groh
4520863c0e
LibJS/Tests: Add test for PlainMonthDay default reference year
2021-08-15 10:36:36 +01:00
Linus Groh
8f7a9e1e5c
LibJS/Tests: Add test for PlainYearMonth default reference day
2021-08-15 10:36:36 +01:00
Linus Groh
1549845389
LibJS: Implement Temporal.PlainMonthDay.prototype.getISOFields()
2021-08-15 10:36:36 +01:00
Linus Groh
7fb05eb878
LibJS: Implement Temporal.PlainMonthDay.prototype.valueOf()
2021-08-15 10:36:36 +01:00
Linus Groh
c2ed3ad66b
LibJS: Implement Temporal.PlainMonthDay.prototype.day
2021-08-15 10:36:36 +01:00
Linus Groh
9551aa17d3
LibJS: Implement Temporal.PlainMonthDay.prototype.monthCode
2021-08-15 10:36:36 +01:00
Linus Groh
1382be1707
LibJS: Implement Temporal.PlainMonthDay.prototype.calendar
2021-08-15 10:36:36 +01:00
Linus Groh
37b5a0715e
LibJS: Implement Temporal.PlainMonthDay.prototype[@@toStringTag]
2021-08-15 10:36:36 +01:00
Linus Groh
0cf526d0c4
LibJS: Handle PlainMonthDay in the Calendar.prototype getters
2021-08-15 10:36:36 +01:00
Linus Groh
b76bae13fd
LibJS: Handle PlainMonthDay in ISO{Year,Month,MonthCode,Day}
2021-08-15 10:36:36 +01:00
Linus Groh
ec00d4729a
LibJS: Handle PlainMonthDay in GetTemporalCalendarWithISODefault
2021-08-15 10:36:36 +01:00
Linus Groh
1e54e37228
LibJS: Handle PlainMonthDay in ToTemporalCalendar
2021-08-15 10:36:36 +01:00