This commit is contained in:
Lilith 2024-06-13 00:09:21 +02:00
parent eddf7cecb8
commit aea798d119
Signed by: lilith
GPG key ID: 8712A0F317C37175
16631 changed files with 1480363 additions and 257 deletions

View file

@ -0,0 +1,57 @@
"use strict"
const { getSourceCode } = require("eslint-compat-utils")
module.exports = {
meta: {
docs: {
description:
"disallow identifiers from shadowing catch parameter names.",
category: "legacy",
recommended: false,
url: "http://eslint-community.github.io/eslint-plugin-es-x/rules/no-shadow-catch-param.html",
},
fixable: null,
messages: {
forbidden: "Shadowing of catch parameter '{{name}}'.",
},
schema: [],
type: "problem",
},
create(context) {
const sourceCode = getSourceCode(context)
return {
"CatchClause > Identifier.param:exit"(node) {
const scope = sourceCode.getScope(node)
const shadowingVar = scope.variableScope.set.get(node.name)
if (!shadowingVar) {
return
}
for (const def of shadowingVar.defs) {
if (def.type !== "Variable") {
continue
}
const varDecl = def.node
if (varDecl.parent.kind !== "var") {
continue
}
const varId = varDecl.id
const catchClause = node.parent
const bodyRange = catchClause.body.range
if (
bodyRange[0] <= varId.range[0] &&
varId.range[1] <= bodyRange[1]
) {
context.report({
node: varDecl,
messageId: "forbidden",
data: {
name: node.name,
},
})
}
}
},
}
},
}