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
-
- - item
-
+
+ - item
+
```
@@ -18,9 +18,9 @@ This rule report variable definitions of v-for directives or scope attributes if
```html
-
- - {{i}}
-
+
+ - {{i}}
+
```
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: '{{item.name}}
'
+ },
+ {
+ code: '{{c}}
'
}
],
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: '{{i}}{{i}}',
- 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: '{{a}}
',
+ errors: ["'b' is defined but never used.", "'c' is defined but never used."]
+ },
+ {
+ code: '{{b}}
',
+ 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: '{{item.name}}
',
+ errors: ["'key' is defined but never used."]
}
]
})