diff --git a/lib/rules/no-unused-vars.js b/lib/rules/no-unused-vars.js index 61aee3ff5..37356c9c1 100644 --- a/lib/rules/no-unused-vars.js +++ b/lib/rules/no-unused-vars.js @@ -35,31 +35,31 @@ module.exports = { create(context) { const option = context.options[0] || {} - const pattern = option.ignorePattern - let regExp = null - if (pattern) { - regExp = new RegExp(pattern, 'u') + const ignorePattern = option.ignorePattern + let ignoreRegEx = null + if (ignorePattern) { + ignoreRegEx = new RegExp(ignorePattern, 'u') } return utils.defineTemplateBodyVisitor(context, { VElement(node) { const variables = node.variables - - for ( - let i = variables.length - 1; - i >= 0 && - !variables[i].references.length && - // eslint-disable-next-line no-unmodified-loop-condition - (regExp === null || !regExp.test(variables[i].id.name)); - i-- - ) { + for (let i = variables.length - 1; i >= 0; i--) { const variable = variables[i] + + if (variable.references.length) { + break + } + + if (ignoreRegEx != null && ignoreRegEx.test(variable.id.name)) { + continue + } context.report({ node: variable.id, loc: variable.id.loc, message: `'{{name}}' is defined but never used.`, data: variable.id, suggest: - pattern === '^_' + ignorePattern === '^_' ? [ { desc: `Replace the ${variable.id.name} with _${variable.id.name}`, diff --git a/tests/lib/rules/no-unused-vars.js b/tests/lib/rules/no-unused-vars.js index bf8a93777..0c1b85e55 100644 --- a/tests/lib/rules/no-unused-vars.js +++ b/tests/lib/rules/no-unused-vars.js @@ -157,6 +157,11 @@ tester.run('no-unused-vars', rule, { { code: '', errors: ["'_i' is defined but never used."] + }, + { + code: '', + options: [{ ignorePattern: '^_' }], + errors: ["'a' is defined but never used."] } ] })