diff --git a/docs/rules/no-unused-vars.md b/docs/rules/no-unused-vars.md index bd71a3c0c..9691ec410 100644 --- a/docs/rules/no-unused-vars.md +++ b/docs/rules/no-unused-vars.md @@ -8,9 +8,9 @@ This rule report variable definitions of v-for directives or scope attributes if ```html ``` @@ -18,9 +18,9 @@ This rule report variable definitions of v-for directives or scope attributes if ```html ``` diff --git a/lib/rules/no-unused-vars.js b/lib/rules/no-unused-vars.js index 061cd77aa..930b89c0a 100644 --- a/lib/rules/no-unused-vars.js +++ b/lib/rules/no-unused-vars.js @@ -15,15 +15,20 @@ const utils = require('../utils') function create (context) { return utils.defineTemplateBodyVisitor(context, { VElement (node) { - for (const variable of node.variables) { - if (variable.references.length === 0) { - context.report({ - node: variable.id, - loc: variable.id.loc, - message: `'{{name}}' is defined but never used.`, - data: variable.id - }) - } + const variables = node.variables + + for ( + let i = variables.length - 1; + i >= 0 && !variables[i].references.length; + i-- + ) { + const variable = variables[i] + context.report({ + node: variable.id, + loc: variable.id.loc, + message: `'{{name}}' is defined but never used.`, + data: variable.id + }) } } }) diff --git a/tests/lib/rules/no-unused-vars.js b/tests/lib/rules/no-unused-vars.js index 92812ebcb..db67041e1 100644 --- a/tests/lib/rules/no-unused-vars.js +++ b/tests/lib/rules/no-unused-vars.js @@ -40,28 +40,46 @@ tester.run('no-unused-vars', rule, { }, { code: '' + }, + { + code: '' + }, + { + code: '' } ], invalid: [ { code: '', - errors: ['\'i\' is defined but never used.'] + errors: ["'i' is defined but never used."] }, { code: '', - errors: ['\'props\' is defined but never used.'] + errors: ["'props' is defined but never used."] }, { code: '', - errors: ['\'j\' is defined but never used.'] + errors: ["'j' is defined but never used."] }, { code: '', - errors: ['\'f\' is defined but never used.'] + errors: ["'f' is defined but never used."] + }, + { + code: '', + errors: ["'a' is defined but never used.", "'b' is defined but never used.", "'c' is defined but never used."] + }, + { + code: '', + errors: ["'b' is defined but never used.", "'c' is defined but never used."] + }, + { + code: '', + errors: ["'c' is defined but never used."] }, { - code: '', - errors: ['\'v\' is defined but never used.', '\'i\' is defined but never used.', '\'c\' is defined but never used.'] + code: '', + errors: ["'key' is defined but never used."] } ] })