24 lines
624 B
JavaScript
24 lines
624 B
JavaScript
import syntaxOptionalCatchBinding from "@babel/plugin-syntax-optional-catch-binding";
|
|
|
|
export default function({ types: t }) {
|
|
return {
|
|
inherits: syntaxOptionalCatchBinding,
|
|
|
|
visitor: {
|
|
CatchClause(path) {
|
|
if (path.node.param === null || !t.isIdentifier(path.node.param)) {
|
|
return;
|
|
}
|
|
const binding = path.scope.getOwnBinding(path.node.param.name);
|
|
if (binding.constantViolations.length > 0) {
|
|
return;
|
|
}
|
|
if (!binding.referenced) {
|
|
const paramPath = path.get("param");
|
|
paramPath.remove();
|
|
}
|
|
},
|
|
},
|
|
};
|
|
}
|