* fix: fix static private field shadowed by local variable
currently throw an error, maybe we could generate correct code
fix#12960
* feat: rename local variable and add test cases
* feat: add unshadow to privateIn visitor
also add test cases
* test: add reference to shadowed variable
* refactor: apply suggested changes
simplify logic and add comments
* Lint against CJS globals in modules
* Use `import.meta.url` instead of `__filename` in `src` files
* Prepare fixtures runner for `import.meta.url`
* Use `import.meta.url` instead of `__filename` in `test/index` files
* Remove `__dirname` from remaining test files
dirname
* Avoid using `module` in `src` files
* Avoid using `require` in `src` files
* Avoid using `require` in `test` files
* Update `@types/node`
* Compile dynamic import in `@babel/node`
* Fix windows
* Use `@babel/plugin-proposal-dynamic-import` from npm
* fix: support static private field destructure set ([C.#p] = [0])
* 🚧
* fix: add compatibility warning for older @babel/helper versions
* refactor: extract common routines among classPrivateFiled helpers
* More 🚧
* Define class elements in the correct order
* Object.gOPDescriptors is not available on Node.js 6
* Handle numeric keys
* Update test
* Update fixtures
* test: add test for nullish coalescing
Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
* test: add control group
* test: add tests for optional chaining
Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
* test: add tests on optional chaining mixed with private class elements
* fix: wrap member chains to IIFE when it is in parameter default
* chore: add more testcases
* chore: update test fixtures
* fix: NodePath.get is always non nullish
Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
* add support for logical assignments with private properties
Patches the logic for handling assignment operators and adds support for
handling the logical assignment operators appropriately.
Fixes: https://github.com/babel/babel/issues/11646
* replace hardcoded logical assignment operators with constant
Replace a hardcoded check for logical assignment operators with the
LOGICAL_OPERATORS constant in
plugin-proposal-logical-assignment-operators.
Refs: https://github.com/babel/babel/pull/11702#discussion_r438554423
* Fix nested classes reference private fields
* Process only visible private fields when redeclaring
* Comments
* Skip class traversal if there are no private fields
* Handle redeclared private field in computed key
This PR allows legacy decorators to work with strict class fields, which
are now stage 3 and have shipped in a number of browsers. Allowing this will
allow users of the legacy transform (which is currently recommended by the
champions of the decorator proposal) to use the proper class field semantics
for non-decorated fields, which should help prevent breakage later on.
This change is not a breaking change, since users had to explicitly opt into
loose mode in class fields before. This just gives them the option to remove
that opt-in.
* destructuring private fields with array pattern / object pattern
* wip: new test cases
* destrucuring and rest for private properties
* test case for loose private-loose
* add transform-desturcturing for exec
* update test case
* remove getPrototypeOf imports from get and set
* wip: destructure super assignment
* throw "Destructuring to a super field is not supported yet."
* fix tests and fix assignment pattern
* remove CallExpression from AssignmentPattern
* test case for insertBefore for jsx
* fix unshiftContainer and insertBefore
* use path.scope.push
* add test making sure computedKeys var declaration at the right block
* add comment
* nit [skip ci]