Linus Groh
969aee2022
LibJS: Add missing builtin calendar check to ParseTemporalCalendarString
...
See: 48b11d6
2021-08-22 21:20:00 +01:00
Timothy Flynn
dee3b7b8c9
LibJS: Implement Promise.all on the Promise constructor
2021-08-21 23:08:49 +01:00
Timothy Flynn
cdf2854fdf
LibJS: Fix copy-paste mistake in GetCapabilitiesExecutor
2021-08-21 23:08:49 +01:00
Timothy Flynn
6337eb52d8
LibJS: Implement RegExp.prototype.compile
...
This is an Annex B extension to RegExp.prototype.
2021-08-20 19:16:33 +02:00
Timothy Flynn
7c54b6bd45
LibJS: Separate RegExpCreate into RegExpAlloc and RegExpInitialize
...
RegExp.prototype.compile will require invoking RegExpInitialize on an
already-existing RegExpObject. Break up RegExpCreate into RegExpAlloc
and RegExpInitialize to support this.
2021-08-20 19:16:33 +02:00
Linus Groh
5d116372a8
LibJS: Implement Temporal.PlainMonthDay.prototype.toJSON()
2021-08-20 18:12:15 +01:00
Linus Groh
5904c6bf18
LibJS: Implement Temporal.PlainMonthDay.prototype.toLocaleString()
2021-08-20 18:12:15 +01:00
Linus Groh
ea44f33d5b
LibJS: Implement Temporal.PlainMonthDay.prototype.toString()
2021-08-20 18:12:15 +01:00
Linus Groh
c1c8d7861c
LibJS: Implement Temporal.PlainYearMonth.prototype.toJSON()
2021-08-20 18:12:15 +01:00
Linus Groh
70fb7bf57e
LibJS: Implement Temporal.PlainYearMonth.prototype.toLocaleString()
2021-08-20 18:12:15 +01:00
Linus Groh
421ad73b4f
LibJS: Implement Temporal.PlainYearMonth.prototype.toString()
2021-08-20 18:12:15 +01:00
Timothy Flynn
1259dc3623
LibJS: Allow Unicode escape sequences in identifiers
...
For example, "property.br\u{64}wn" should resolve to "property.brown".
To support this behavior, this commit changes the Token class to hold
both the evaluated identifier name and a view into the original source
for the unevaluated name. There are some contexts in which identifiers
are not allowed to contain Unicode escape sequences; for example, export
statements of the form "export {} from foo.js" forbid escapes in the
identifier "from".
The test file is added to .prettierignore because prettier will replace
all escaped Unicode sequences with their unescaped value.
2021-08-19 23:49:25 +02:00
Timothy Flynn
c5b5c779ff
LibRegex+LibJS: Change capture group names from a String to a FlyString
...
The parser now stores this as a FlyString everywhere, so consumers can
also use it as a FlyString.
2021-08-19 23:49:25 +02:00
Timothy Flynn
4f2cbe119b
LibRegex: Allow Unicode escape sequences in capture group names
...
Unfortunately, this requires a slight divergence in the way the capture
group names are stored. Previously, the generated byte code would simply
store a view into the regex pattern string, so no string copying was
required.
Now, the escape sequences are decoded into a new string, and a vector
of all parsed capture group names are stored in a vector in the parser
result structure. The byte code then stores a view into the
corresponding string in that vector.
2021-08-19 23:49:25 +02:00
Timothy Flynn
dd44a5e948
LibJS: Use GenericLexer to consume escaped code points
2021-08-19 23:49:25 +02:00
Idan Horowitz
ee608f58ee
LibJS: Add type range checks to the Date make_day AO
...
As the specification says "but if this is not possible (because some
argument is out of range), return NaN."
2021-08-19 19:15:00 +01:00
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