Files
NapCatQQ/.pnpm-store/v3/files/03/381c3ddd52bd797b9e20ab2238770dc47a9d3fe760971cd8f8a766985febeae81c39fa07b966248981df9f3a22328eef91106b2cf3f274b721b6780061c1f8
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

58 lines
1.9 KiB
Plaintext

"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,
},
})
}
}
},
}
},
}