* Fix rewriteThis in helper-module-transforms for computed class elements * Added test file and corrected the visitor * Revert .gitignore * Using skipAllButComputedKey method from plugin-replace-supers * added tests for class methods * Added tests for both class properties and methods and fixed skipping computed key for methods * Fixed condition for class methods * revised the conditions for class methods * Added more tests and used else-if in classmethod condition * Update packages/babel-helper-replace-supers/src/index.js Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com> Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
26 lines
704 B
JavaScript
26 lines
704 B
JavaScript
import { skipAllButComputedKey } from "@babel/helper-replace-supers";
|
|
export default function rewriteThis(programPath: NodePath) {
|
|
// Rewrite "this" to be "undefined".
|
|
programPath.traverse(rewriteThisVisitor);
|
|
}
|
|
|
|
/**
|
|
* A visitor to walk the tree, rewriting all `this` references in the top-level scope to be
|
|
* `undefined`.
|
|
*/
|
|
const rewriteThisVisitor = {
|
|
ThisExpression(path) {
|
|
path.replaceWith(path.scope.buildUndefinedNode());
|
|
},
|
|
Function(path) {
|
|
if (path.isMethod()) skipAllButComputedKey(path);
|
|
else if (!path.isArrowFunctionExpression()) path.skip();
|
|
},
|
|
ClassProperty(path) {
|
|
skipAllButComputedKey(path);
|
|
},
|
|
ClassPrivateProperty(path) {
|
|
path.skip();
|
|
},
|
|
};
|