Files
Huáng JùnliàngandNicolò Ribaudo c072902f5e Transform discard binding (#17277)
* transform discard binding

* refactor extract functions to utils.ts

* expand scope integrity check to all binding identifiers

* update incomplete comment

* update test output fixtures

* remove forXStatement skip

* add more test cases

* feat: remove trailing void patterns on ignoreFunctionLength assumption

* make node 6 happy

* add more test cases

* skip some exec tests for Node < 12

* update tsconfig.json

* update test fixtures

* fix: handle integration issues

* run basic exec test on Node.js >= 16

* update test case

* feat: pass syntaxType from plugin option

* skip basic test for Node.js 6

* add more test cases

* add new multiple-void test case

* fix: disable named evaluation for parenthesized rhs

* fix: handle using named evaluation

* Revert "fix: disable named evaluation for parenthesized rhs"

This reverts commit 93cf63768e3d68778ee73935a6c8de9c9bba2e2e.

* prefix anonymous function with 0,

* improve takeVoidPatternComments

* use NodePath#splitExportDeclaration

* update test fixtures

* update test options

* update test fixtures due to regenerator runtime changes

* fix: remove VoidPattern from LVal

* fix: improve destructuring transform detection

Previously the isPattern check includes void pattern, which would result to an infinite recursion as the void pattern keeps being queued.

* fix incorrect typings

* update isAnonymousFunctionDefinition
2025-06-28 08:17:58 +02:00

58 lines
1.2 KiB
JavaScript

/**
*
* @param {import("@babel/core").PluginAPI} api
* @returns {import("@babel/core").PluginObject}
*/
module.exports = function(api) {
const actionsList = [
[{
type: 'leading',
value: 'injected 0'
}],
[{
type: 'trailing',
value: 'injected 1'
}],
[{
type: 'leading',
value: 'injected 0'
}, {
type: 'trailing',
value: 'injected 1'
}],
[{
type: 'leading',
value: 'injected 1'
}, {
type: 'trailing',
value: 'injected 3'
}]
];
const { types: t } = api;
/**
* @type {import("@babel/core").PluginObject}
*/
const plugin = {
name: 'babel-plugin-proposal-discard-binding-test-array-pattern-preserve-comments-injected',
visitor: {
Program(path) {
path.traverse({
VoidPattern(path) {
const actions = actionsList.shift();
if (!actions) {
throw new Error('No more actions left');
}
actions.forEach(action => {
t.addComments(
path.node, action.type,
[{ type: "CommentBlock", value: action.value }]
);
});
}
});
},
}
};
return plugin;
};