Nicolò Ribaudo
ddaf0d4296
Enable top-level await parsing by default ( #13387 )
2021-08-04 00:00:04 +02:00
J. S. Choi
35e4e1f067
Hack-pipe proposal with % topic token ( #13416 )
...
Co-authored-by: Federico Ciardi <fed.ciardi@gmail.com>
2021-08-03 23:30:16 +02:00
J. S. Choi
cd4b3fbffe
parser: Fix Hack/smart-pipe error positions ( #13426 )
2021-08-03 23:30:16 +02:00
J. S. Choi
6276853eb9
Add support for the "Hack" pipeline proposal ( #13191 )
...
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2021-08-03 23:30:16 +02:00
Nicolò Ribaudo
a254ea38a4
Enable ergonomic brand checks (#priv in) by default ( #13554 )
...
* Enable ergonomic brand checks by default in `@babel/parser`
* Enable ergonomic brand checks by default in `preset-env`
* Fix error position
* Update Babel 8 tests
2021-08-03 23:02:17 +02:00
Nicholas Eveland
2c6db56696
Allow module block to start a member expression ( #13573 )
...
* Accept module in primaryExpression
* Add module blocks to primaryExpression
* Fix package.json
* Fix yarn.lock
* Fix yarn.lock
* Remove package.tgz file
2021-07-19 17:29:23 -04:00
Huáng Jùnliàng
6e57617138
Fix await binding error within static block ( #13088 )
...
* fix: allow await within SCOPE_FUNCTION under static block
* perf: scan scopeStack for once
* add new test case
* chore: update allowlist
2021-07-16 10:35:19 -04:00
Huáng Jùnliàng
79d3276f61
Overhaul comment attachment ( #13521 )
...
* refactor: inline pushComment
* chore: add benchmark cases
* perf: overhaul comment attachment
* cleanup
* update test fixtures
They are all bugfixes.
* fix: merge HTMLComment parsing to skipSpace
* perf: remove unattachedCommentStack
baseline 128 nested leading comments: 11_034 ops/sec ±50.64% (0.091ms)
baseline 256 nested leading comments: 6_037 ops/sec ±11.46% (0.166ms)
baseline 512 nested leading comments: 3_077 ops/sec ±2.31% (0.325ms)
baseline 1024 nested leading comments: 1_374 ops/sec ±3.22% (0.728ms)
current 128 nested leading comments: 11_027 ops/sec ±37.41% (0.091ms)
current 256 nested leading comments: 6_736 ops/sec ±1.39% (0.148ms)
current 512 nested leading comments: 3_306 ops/sec ±0.69% (0.302ms)
current 1024 nested leading comments: 1_579 ops/sec ±2.09% (0.633ms)
baseline 128 nested trailing comments: 10_073 ops/sec ±42.95% (0.099ms)
baseline 256 nested trailing comments: 6_294 ops/sec ±2.19% (0.159ms)
baseline 512 nested trailing comments: 3_041 ops/sec ±0.8% (0.329ms)
baseline 1024 nested trailing comments: 1_530 ops/sec ±1.18% (0.654ms)
current 128 nested trailing comments: 11_461 ops/sec ±44.89% (0.087ms)
current 256 nested trailing comments: 7_212 ops/sec ±1.6% (0.139ms)
current 512 nested trailing comments: 3_403 ops/sec ±1% (0.294ms)
current 1024 nested trailing comments: 1_539 ops/sec ±1.49% (0.65ms)
* fix: do not expose CommentWhitespace type
* add comments on CommentWhitespace
* add test case for #11576
* fix: mark containerNode be the innermost node containing commentWS
* fix: adjust trailing comma comments for Record/Tuple/OptionalCall
* fix: drain comment stacks in parseExpression
* docs: update comments
* add a new benchmark
* chore: containerNode => containingNode
* add more benchmark cases
* fix: avoid finishNodeAt in stmtToDirective
* finalize comment right after containerNode is set
* add testcase about directive
* fix: finish SequenceExpression at current pos and adjust later
* chore: rename test cases
* add new test case on switch statement
* fix: adjust comments after trailing comma of function params
* add comment attachment design doc
* misc fix
* fix: reset previous trailing comments when parsing async method/accessor
* chore: add more comment testcases
* fix flow errors
* fix: handle comments when parsing async arrow
* fix: handle comments when "static" is a class modifier
* fix flow errors
* fix: handle comments when parsing async function/do
* refactor: simplify resetPreviousNodeTrailingComments
* update test fixtures
2021-07-07 11:51:40 -04:00
Huáng Jùnliàng
8a3e0fd960
Async do expression should start at async ( #13534 )
2021-07-07 00:09:34 -04:00
Huáng Jùnliàng
b9c1884a58
Reduce exprAllowed usage ( #13431 )
2021-06-09 16:36:09 +02:00
Huáng Jùnliàng
b8175ec060
Relax import assertion key-is-type constraint ( #13409 )
2021-06-02 07:51:56 -04:00
Huáng Jùnliàng
b3d35cd412
[Babel 8]: remove module attributes parser/generator support ( #13308 )
...
* breaking: remove support of moduleAttributes
* Update packages/babel-parser/src/plugin-utils.js
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
* chore: remove todo comments
* make prettier happy
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2021-05-14 09:55:40 -04:00
Nicolò Ribaudo
a2ac2f39b5
Update @babel/parser fixtures
2021-04-28 18:41:10 +02:00
Huáng Jùnliàng
28d7442aae
Parse async do expressions ( #13043 )
...
* parse async do expressions
* add test cases
* update test fixtures
* chore: add syntax-async-do-expressions
* generater support
* fix: do not transform async do expressions
* chore: add asyncDoExpressions to missing plugin helpers
* update ast types
* add more test cases
* throw when asyncDoExpressions is enabled but not doExpressions
* avoid add parentheses for async do expressions
* address review comments
* chore: update parser typings
2021-04-28 18:26:01 +02:00
Nicolò Ribaudo
57daba85aa
Parse string export names by default (moduleStringNames) ( #13195 )
...
* Parse string epxort names by default (`moduleStringNames`)
* Remove remaining references
2021-04-28 18:21:31 +02:00
Huáng Jùnliàng
ceaab0bae7
Parse class fields and private methods by default ( #13175 )
...
* feat: materialize class features
* chore: move testcases to es2022
* chore: update test fixtures
* chore: remove classPr\w+ from options.json
* chore: remove empty options.json
* update flow test allowlist
* update typescript allowlist
2021-04-28 18:21:31 +02:00
Sosuke Suzuki
2521c666f7
Add internal ESLint rule for consistent parser error messages ( #13130 )
2021-04-28 18:21:31 +02:00
Huáng Jùnliàng
1a05b81387
Support multiple static blocks ( #12738 )
2021-03-12 23:29:55 +01:00
Sosuke Suzuki
9c567baa9b
Parse JS Module Blocks proposal ( #12469 )
2021-02-21 20:08:20 +01:00
Huáng Jùnliàng
ecfe20395b
spec: disable await binding identifier within static block ( #12661 )
2021-02-01 21:55:43 +01:00
Huáng Jùnliàng
108564fdad
refactor: raise AwaitNotInAsyncContext when an AwaitExpression will be parsed ( #12716 )
...
* refactor: raise AwaitNotInAsyncContext when an AwaitExpression will be parsed
* tweak logic
* early exit when errors are before thrown error position
* fix: always return true in assert.throws callback
See https://nodejs.org/api/assert.html#assert_assert_throws_fn_error_message
* update test fixtures
* fix flow error
2021-02-01 10:46:43 -05:00
Nicolò Ribaudo
8cf0a757d5
Recover from "missing semicolon" errors ( #12437 )
...
* Recover from "missing semicolon" errors
* Update other tests
* Fix flow
* Fix windows test
* Add back deleted test
2021-02-01 10:08:43 +01:00
Sosuke Suzuki
8fcba6eb55
Raise recoverable error for await expressions in sync functions ( #12520 )
2021-01-24 01:45:27 +01:00
Huáng Jùnliàng
8478027d1a
Make sure babel parser throws exactly same recoverable errors when estree plugin is enabled ( #12375 )
...
* refactor: introduce isPrivateName and getPrivateNameSV
* feat: check recoverable errors on estree-throw
* fix: pass through all params of parseBlockBody
* fix: set bigInt to null when invalid bigInt value is parsed
e.g. 0.1n
* fix: use string literal value in error message
When estree plugin is enabled, stringLiteral#extra.raw is not accessible. Use StringLiteral#value instead.
* refactor: introduce hasPropertyAsPrivateName
* fix: adapt to ChainExpression
* fix: port checkLVal early return for method in object pattern
* fix: throw new a?.() on estree
* fix: early return for __proto__ in accessors
* fix: test record element via isObjectProperty
* fix: pass through isLHS in toAssignable
* refactor: introduce isObjectMethod methods
2020-12-03 08:36:54 +00:00
Huáng Jùnliàng
766df9c369
fix: support string assertion key in assert entries ( #12281 )
...
* fix: support string assertion key in assert entries
* Update packages/babel-parser/src/parser/statement.js
Co-authored-by: Sosuke Suzuki <aosukeke@gmail.com>
Co-authored-by: Sosuke Suzuki <aosukeke@gmail.com>
2020-10-29 15:10:20 -04:00
Huáng Jùnliàng
b7754d3c82
fix: disallow import assertionts in export without from ( #12264 )
2020-10-28 07:07:20 +01:00
Huáng Jùnliàng
5b48f40a08
Polish parser errors ( #12258 )
...
* polish: update AwaitNotInAsyncFunction message
* polish: update YieldInParameter error message
* Apply suggestions from code review
Co-authored-by: Brian Ng <bng412@gmail.com>
* update test fixtures
Co-authored-by: Brian Ng <bng412@gmail.com>
2020-10-26 20:55:04 -04:00
Huáng Jùnliàng
2782a549e9
Refactor yield await classification ( #12230 )
...
* fix: incomplete ParamKind declaration
* refactor: add expression scope handler
* test: update test262 allowlist
* chore: cleanup
* fix: push expression scope for function body
* fix: push new expression scope for initializer and static block
* test: add more test cases
* fix flow error
* refactor: remove unecessary expression scope
* fix: parameter initializer error should not cross expression scope boundary
* chore: cleanup outdated comments
* fix: do not record async arrow error on ParameterDeclaration
* Update packages/babel-parser/src/util/expression-scope.js
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
* polish: clear ancestry declaration error on validate
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2020-10-26 11:42:02 -04:00
Sosuke Suzuki
faaebfe91f
Support Import Assertions for re-export statement ( #12249 )
2020-10-26 15:18:45 +01:00
Sven Sauleau
af8e0facc1
Parse import-assertions ( #12139 )
...
Co-authored-by: Huáng Jùnliàng <jlhwung@gmail.com>
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2020-10-14 21:18:16 +02:00
Huáng Jùnliàng
3ccca88178
Parse class static block ( #12079 )
...
Co-authored-by: Brian Ng <bng412@gmail.com>
2020-10-14 21:16:24 +02:00
Huáng Jùnliàng
21d7ee2610
String import/export specifier ( #12091 )
...
* feat: parse moduleExportName
* feat: add validators
* Support string specifier name in commonjs transform
* Support string specifier name in export-ns-from
* test: add loose testcases
* test: add testcases for amd and umd
* feat: support systemjs
* test: update fixtures fixed in #12110
* add plugin name typings
* test: rename test layout
* feat: implement under moduleStringNames flag
* chore: add plugin syntax module string names
* feat: support ModuleExportName as ModuleExportName
* test: update test fixtures
* fix flow errors
* docs: update AST spec
* feat: support { "some imports" as "some exports" }
* feat: support { "some imports" as "some exports" } in systemjs
* test: add test on `import { "foo" }`
* Address review comments
* add moduleStringNames to missing plugin helpers
* Apply suggestions from code review
* update test fixtures
* Update packages/babel-parser/src/parser/error-message.js
* update test fixtures
Co-Authored-By: Kai Cataldo <kai@kaicataldo.com>
Co-authored-by: Brian Ng <bng412@gmail.com>
2020-10-14 20:01:37 +02:00
Huáng Jùnliàng
66c6b3b949
Add more parser test cases ( #11923 )
...
* remove unused codes
* refactor: remove unused parseAccessModifier
* refactor: remove redundant async function checks
* refactor: remove redundant class check in checkExport
* add more parser test cases
* Update packages/babel-parser/src/parser/statement.js
Co-authored-by: Brian Ng <bng412@gmail.com>
* chore: add sourceType: unambiguous test
Co-authored-by: Brian Ng <bng412@gmail.com>
2020-08-14 11:53:17 -04:00
Huáng Jùnliàng
3995160fc7
fix: push new token context when braceHashL is seen ( #11941 )
...
* fix: push new token context when braceHashL is seen
* Update packages/babel-parser/src/tokenizer/context.js
2020-08-11 09:55:13 -04:00
Huáng Jùnliàng
a4ebe29b3f
Parser refactoring ( #11871 )
...
* refactor: parseMaybeUnary => parseUnary
* refactor: extract shouldExitDescending method
* refactor: add parseUpdate
* refactor: avoid comparing with hardcoded token value
* refactor: add ParseNewOrNewTarget
* refactor: add parseCoverCallAndAsyncArrowHead
* add parseBind
* refactor: polish parseTaggedTemplateExpression interface
* refactor: add parseMember method
* refactor: add parseSuper method
* refactor: add parseAsyncArrowUnaryFunction method
* fix: disallow line break before async binding arrow
* refactor: simplify tt.name logic
* refactor: add parseDo method
* refactor: misc
* refactor: rename parseObjectMember by parsePropertyDefinition
* refactor: unify set/get/async keyword parsing in ObjectMethod
* refactor: misc
* refactor: add parseArrayLike method
* refactor: move fsharp epilogure and prologue inside parseObjectLike
* fixup
* refactor: rename parseFunctionExpression to parseFunctionOrFunctionSent
* refactor: remove redundant logic
* refactor: rename parseClassPropertyName by parseClassElementName
* refactor: avoid unecessary lookahead when parsing tt._export
* fix: export-default-from should support escaped async as export binding
* address review comments
* parseUnary -> parseMaybeUnary
2020-07-31 20:36:04 -04:00
Vahagn Aharonian
b651a6f6ab
Enable logical assignment by default in @babel/parser ( #11860 ) ( #11869 )
2020-07-29 18:32:12 -04:00
Huáng Jùnliàng
0e985fb287
feat: enable numericSeparator parsing support ( #11863 )
2020-07-29 18:32:12 -04:00
Huáng Jùnliàng
059e9124ff
Add decimal parsing support ( #11640 )
...
* docs: add DecimalLiteral to AST spec
* add decimal support
* fix: throw invalid decimal on start
* add DecimalLiteral type definitions
* update parser typings
* add generator support
* add syntax-decimal plugin
* Add syntax-decimal to babel-standalone
* add syntax-decimal to missing plugin helpers
* fix incorrect test macro
2020-07-29 16:43:15 -04:00
Huáng Jùnliàng
3680f019d7
fix: allow 09.1_1 and 09e1_1 in sloppy mode ( #11854 )
...
* fix: allow 09.1_1 and 09e1_1 in sloppy mode
* polish: avoid extra input source scanning
* chore: move comment [skip ci]
2020-07-21 09:44:28 -04:00
Huáng Jùnliàng
02c8fd92bd
fix: add optional: false to chained optional call expression ( #11814 )
2020-07-09 20:33:50 -04:00
Huáng Jùnliàng
30835f14db
fix: implement early errors for record and tuple ( #11652 )
2020-06-20 02:35:27 +02:00
Huáng Jùnliàng
71d3527ef5
Properly parse export default from when exportDefaultFrom is not enabled ( #11676 )
...
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2020-06-05 09:08:21 -05:00
Justin Ridgewell
bda759ac3d
Handle private access chained on an optional chain ( #11248 )
...
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
Co-authored-by: Huáng Jùnliàng <jlhwung@gmail.com>
2020-05-26 22:18:17 +02:00
Justin Ridgewell
7459038db8
Add private-property-in-object support ( #11372 )
...
https://github.com/tc39/proposal-private-fields-in-in
Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
Co-Authored-By: Huáng Jùnliàng <jlhwung@gmail.com>
2020-05-26 22:18:17 +02:00
Vivek Nayyar
66b86e088c
added basic support for module attributes and tests updated ( #10962 )
...
Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2020-05-25 01:26:28 +02:00
Kiko Estrada
5dd7f438c9
Enable import.meta by default in @babel/parser ( #11406 )
2020-05-24 22:57:34 +02:00
Huáng Jùnliàng
2e4f18ac92
Add some parser missing plugins errors ( #11478 )
...
* fix: do not throw invalid hash in tokenizer
* refactor: bigint has been enabled by default
* polish: add numeric separator missing plugin error
* fix: forward expectPlugin declaration
2020-04-25 10:26:39 +02:00
Huáng Jùnliàng
dc7c5640e9
Compact parser fixture loc info ( #11322 )
...
* chore: compact loc information in parser fixtures
* chore: update test fixtures
2020-03-23 20:10:29 -04:00
Huáng Jùnliàng
841f4428e8
Rephrase parser error message ( #11208 )
...
* refactor: rephrase some parser error messages
* update test fixtures
* Update packages/babel-parser/src/parser/location.js
Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
* address review comments
* Update packages/babel-parser/src/parser/location.js
Co-Authored-By: Brian Ng <bng412@gmail.com>
* update test fixtures
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
Co-authored-by: Brian Ng <bng412@gmail.com>
2020-03-16 21:48:32 -04:00
Rick Button
3ce7c2e394
Added support for record and tuple syntax. ( #10865 )
...
* Added support for record and tuple syntax.
This commit adds support for both the hash #{} and bar {||}
syntaxes to babel-parser, as well as adds the supporting
babel-plugin-syntax-record-and-tuple plugin to enable support
for the syntax. Does not include any transform for records and
tuples.
* typo
* added check to ensure recordAndTuple in babel-parser
* switched to syntaxType option instead of explicit entries for each record and tuple type
* switched to using recordAndTupleSyntaxType for generator options instead of adding to node
* added tests for generator option recordAndTupleSyntaxType
* added test for record and tuple bar syntax with flow typings
* added tests for invalid/missing recordAndTuple syntaxType parser option
* fixed flowcheck errors
* fix merge with class privates in tokenizer
* Update packages/babel-parser/src/types.js
Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
* improved recordAndTuple generator error message, added tests for invalid,missing options
* updated error messages for invalid parser syntaxType option
* updated error message
* added better error messages for when the recordAndTuple syntaxType is doesn't match the syntax used
* updated record and tuple support to use new error message templates
* added recordAndTuple to missing plugin helpers
* Fix linting
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2020-03-16 23:57:44 +01:00