* Correctly transpile export bindings for some for-of loops
* Correctly transform non-destructured for of loops to update exported variables
* Add tests
* Don't replace entire for of loop
* Correctly transform destructured for-of/for-in exports
* Update exported variables in array pattern and more fixes
* Refresh test output
* Update tests and rebase on master
* Refactor ForOf|ForIn visitor
* Don't transform re-declared exported vars
* Generate better name for loop id
Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
* Idiomatically generate UidIdentifier
* Update scope after replacing loop declaration
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
* Change isReferenced to return false for object/class method parameter names.
* use indexOf instead of for-of loop
* replace `.indexOf` check with `.includes` and assume `parent.params` exists
Co-Authored-By: Justin Ridgewell <justin@ridgewell.name>
* check .params within case block for ClassMethod/ClassPrivateMethod/ObjectMethod only
* add comment clarifying that case clause fall-through is intentional
Co-authored-by: Justin Ridgewell <justin@ridgewell.name>
* chore: map mobile browser data to their desktop version
* chore: skip android until upstream support is resolved
* Revert "chore: skip android until upstream support is resolved"
This reverts commit 436e9af8297b284a426b5a3240e2a550a20fca86.
* Update fixtures
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
* 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
* Bug replication test
* Simplify test
* Fixes#10896
* Merge path.crawl `ClassDeclaration` and `Declaration` visitors
Merged to avoid subtle assumption that `Declaration` is called before `ClassDeclaration`
* Move registartion of class id in crawl to BlockScoped
* Add some assertions to crawl test
Fixes issue 10989 where the only the identifier in a member expression that is the value of an object property would be parsed. Removing checkExpressionErrors in parseExprSubscripts results in the subscript also being parsed.
* Fix rest parameters indexing with TypeScript 'this parameter'
The TypeScript [this parameter][0] is a fake parameter and should not be
taken into account when counting the function parameters. This patch
skips it by using the condition taken from the `transform-typescript`
plugin.
Note: since the `transform-typescript` plugin is removing this kind of
parameter, including it before the `transform-parameters` plugin solves
the issue. This patch fixes the issue in other cases.
[0]: https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters
* nit: improve the 'this parameter' detection condition
* improve performance by checking the parameter list length before
accessing it
* simplify the test a bit by using the `isIdentifier` second
parameter