Huáng Jùnliàng
a387973821
Refactor private name tokenizing ( #13256 )
...
* add benchmark
* refactor: create tt.privateName token for private names
* add backward compat privateName = hash + name to Babel 7
* perf: get private name SV from token value
* chore: tweak benchmark file
* chore: update test fixtures
* convert tt.privateName to PrivateIdentifier
* perf: avoid most isPrivateName call
* Update packages/babel-parser/src/parser/expression.js
Co-authored-by: Justin Ridgewell <justin@ridgewell.name>
* perf: use inlinable codePointAtPos
* make prettier happy
Co-authored-by: Justin Ridgewell <justin@ridgewell.name>
2021-05-06 09:46:09 -04:00
Stuart Cook
fa01fbe052
Parse for await (async of ...) ( #13244 )
2021-05-01 18:00:21 +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
7484b51e56
Support TS 4.3 get/set type members ( #13089 )
...
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2021-04-28 18:21:31 +02:00
Pig Fang
bf14a106ad
Support TS 4.3 override syntax in class ( #13097 )
...
* support TS 4.3 `override` syntax in class
* fix types
* fix types
* tweak error message
* update TypeScript commit
* split tests
* add more tests
* update allowlist
* disallow `override` with `declare`
* disallow `override` in non-sub class
* update TypeScript allowlist
* rename error message key
* add more tests
2021-04-28 18:21:31 +02:00
Sosuke Suzuki
0ee98139a6
Introduce parser error codes ( #13033 )
2021-04-28 18:21:31 +02:00
Huáng Jùnliàng
8efbac4a5d
fix: the LHS in for-of loop should not start with let ( #13049 )
...
* fix: the LHS in for-of loop should not start with let
* Update packages/babel-parser/src/parser/statement.js
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2021-03-29 16:54:23 -04: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
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
Huáng Jùnliàng
a0c1a9a9e4
Disallow non octal decimal escape before use strict ( #12366 )
2020-12-15 12:24:32 +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
b564368d6e
refactor: reorder checkLVal parameters ( #12346 )
...
* refactor: reorder checkLVal parameters
* update allow list
* Apply suggestions from code review
2020-11-17 09:07:32 -05:00
Huáng Jùnliàng
5bbad8936b
fix: disallow all parenthesized pattern except parsing LHS ( #12327 )
...
* fix: disallow all parenthesized pattern except parsing LHS
* fix: forStatement requires LHS
* simplify toAssignable
* add more test cases
* fix: pass through isLHS on object property and assignment expression
* fix: record parenthesized identifier error for LHS
* remove duplicated skipped tests
* fix: do not record errors on ancestry arrow head
* Update packages/babel-parser/src/util/expression-scope.js
Co-authored-by: Brian Ng <bng412@gmail.com>
Co-authored-by: Brian Ng <bng412@gmail.com>
2020-11-10 14:42:37 -05: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
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
Sosuke Suzuki
45f0cc2ed9
Recover from error for missing initializer in const declaration ( #12120 )
2020-09-29 18:40:51 +02:00
Sosuke Suzuki
bbe0cf09fc
Throw a syntax error for a parameter properties in not constructor ( #12061 )
2020-09-14 16:28:06 -05: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
df9ee2c7cd
Simplify tokenizer update context ( #11944 )
...
* replace lineBreak.test by hasPrecedingLingBreak
* refactor: simplify updateContext
2020-08-11 13:43:03 -04:00
Huáng Jùnliàng
a3893129ec
chore: enable flowcheck on CI ( #11945 )
...
* chore: enable flowcheck on CI
* fix: flow errors
2020-08-10 16:57:29 -04:00
Huáng Jùnliàng
4bb1e164da
Refactor [In] production parameter tracking ( #11930 )
...
* refactor: track [In] parameter in prodParam
* Apply suggestions from code review
2020-08-10 07:32:38 -04:00
Brian Ng
c0f6f0394d
Support ConditionalExpressions in dry-error-messages rule ( #11917 )
...
* Support ConditionalExpressions in dry-error-messages rule
* tests
2020-08-05 16:28:35 -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
Brian Ng
8a1d7e41f2
Allow unknown/any in TS catch clause param ( #11755 )
2020-07-29 16:51:48 -04:00
Kai Cataldo
75c2300c28
Add @babel/eslint-plugin-development-internal ( #11376 )
...
* Add @babel/eslint-plugin-internal
* Add dry-error-messages rule
* Address feedback
* Enable new rule
* fix author field
* Fix errors
* Add readme
* Add example configuration
* Handle directories
* run make bootstrap
* More updates!
* Fix errors
* Update tests
* Fix CI race condition
2020-06-22 19:43:29 -04: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
Huáng Jùnliàng
b5c4a46a69
refactor: split locationParser into ParserErrors and error message ( #11653 )
2020-05-30 15:05:42 -04: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
lazytype
62e686af91
Fix comments for smartPipeline topic-forbidding contexts ( #11597 )
...
[skip ci]
2020-05-23 22:59:46 +02:00
Huáng Jùnliàng
a466f9c310
fix: report missing plugins on type exports ( #11417 )
...
* fix: report missing plugins on type exports
* nit refactors
* Update packages/babel-parser/src/parser/statement.js [skip ci]
2020-04-14 15:23:54 +02:00
Kai Cataldo
4e6c9c52ef
fix: token after strict mode block is evaluated in strict mode ( #11186 )
2020-03-24 08:38:02 +01:00
Nicolò Ribaudo
5c1a8210da
Implement support for declare on class fields with Flow ( #11178 )
...
* Add parser support for Flow declare fields
* Add generator test
* Add "allowDeclareFields" option to flow-strip-types
* Add test
* Update error messages
* More tests
2020-03-16 23:08:26 +01:00
Kai Cataldo
2057d2b159
fix: non-directive "use strict" should not enable parsing in strict mode ( #11188 )
...
* fix: non-directive "use strict" should not enable parsing in strict mode
* Remove dead code
* Add stricter type annotations
* set oldStrict explicitly to null
* Fix error
* label callback argument
* update comment
* Address feedback
* Remove this.state.octalPosition
* Add additional tests
* Revert "Remove this.state.octalPosition"
This reverts commit bcc78c9530f8c840f85e86053b75efce662f34d1.
* Remove containsOctal
* Report multiple octal literals in single token
* Fix comments
* remove Array.prototype.flat()
2020-03-05 17:34:27 -05:00
Huáng Jùnliàng
21c9141872
Refactor: add parser message template ( #11192 )
...
* refactor: add raiseWithData method
* refactor: error message template
* fix missing plugin error structure
* fix flow errors
* refactor: use error message template in eslint plugin
* refacotr: use error message template in flow plugin
* refactor: use error message template in typescript plugin
* refactor: use error message template in jsx plugin
* address review comments
* Update packages/babel-parser/src/parser/location.js
Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2020-03-03 14:06:05 -05:00
Huáng Jùnliàng
38529699d6
Refactor await/yield production parameter tracking ( #10956 )
...
* test: add test fixtures
* refactor: track AWAIT and YIELD in separate handler
* fix flow errors
* add flow type annotation to production-parameter
* address review comments
* refactor: track [Return] parameter
2020-02-09 15:31:29 +01:00
Huáng Jùnliàng
43b23e0869
refactor: simplify toAssignable routine ( #11032 )
...
* refactor: remove isBinding parameter
* remove unused contextDescription
* refactor: remove unnecessary nullish check
* refactor: simplify toAssignable on ParenthesizedExpression
* tests: categorize createParenthesizedExpression tests
2020-01-20 21:04:16 +01:00
Chunpeng Huo
9bc04baeb5
fix(babel-parser): avoid state.clone() to clone the whole token store ( #11029 )
...
* fix(babel-parser): avoid state.clone() to clone the whole token store
Fixed the performance issue on large input when turned on option {tokens: true} and typescript plugin which uses quite a few state.clone().
* test(babel-parser): turn on 2 typescript tests with tokens:true
The output.json is generated by old master to make sure no regression.
* fix(babel-parser): avoid duplicated tokens trapped by mainly typescript/flow plugins
* test(babel-parser): update output.json to latest master result
* chore(babel-parser): improve performance by storing tokensLength in state
2020-01-19 22:38:33 -05:00
Huáng Jùnliàng
9df70b4505
Duplicate __proto__ key should be allowed in object patterns ( #10987 )
...
* refactor: replace refShorthandDefaultPos by refExpressionErrors
* fix: duplicate __proto__ keys should be allowed in patterns
* docs: add comments for ExpressionErrors.doubleProto [ci-skip]
* test: add more test for coverage
2020-01-14 22:53:45 -05:00
Huáng Jùnliàng
81c5f1f22d
Disallow private name in object elements and TS type elements ( #10980 )
...
* fix: disallow private name in object member and TS type elements
* chore: update test262 whitelist
* chore: make flow happy
* Update packages/babel-parser/src/parser/expression.js
Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
* chore: update test fixtures
* Update packages/babel-parser/src/parser/expression.js
Co-Authored-By: Brian Ng <bng412@gmail.com>
* chore: update test fixtures
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
Co-authored-by: Brian Ng <bng412@gmail.com>
2020-01-11 11:26:10 -05:00
Nicolò Ribaudo
771c730fda
[parser] Disallow duplicate and undeclared private names ( #10456 )
...
* [parser] Add private names tracking to Scope
- Disallow duplicate private names
- Disallow undeclared private names
* Update tests
* Test all possible duplications
* Test undeclared private names
* Better error message for top-level private names
* Fix flow
* Update test262 whitelist
* Update fixtures
* Update flow whitelist
* Remove old output.json
* Move ClassScopeHandler to a separate class
* Make the code readable
2020-01-10 02:22:05 +01:00
Huáng Jùnliàng
a18166d2a9
refactor: remove inClassProperty parser state ( #10906 )
2019-12-24 11:43:39 +01:00
gr
10213655bc
[parser] Allow optional async methods ( #10582 )
...
* Add parsePostMemberNameModifiers to aync method
* Add test
2019-11-18 19:18:36 +01:00