diff --git a/lib/rules/no-dupe-keys.js b/lib/rules/no-dupe-keys.js index 0119a2a2d..bedfa735c 100644 --- a/lib/rules/no-dupe-keys.js +++ b/lib/rules/no-dupe-keys.js @@ -13,8 +13,6 @@ const utils = require('../utils') const GROUP_NAMES = ['props', 'computed', 'data', 'methods'] function create (context) { - const usedNames = [] - const options = context.options[0] || {} const groups = new Set(GROUP_NAMES.concat(options.groups || [])) @@ -23,7 +21,9 @@ function create (context) { // ---------------------------------------------------------------------- return utils.executeOnVue(context, (obj) => { + const usedNames = [] const properties = utils.iterateProperties(obj, groups) + for (const o of properties) { if (usedNames.indexOf(o.name) !== -1) { context.report({ @@ -34,6 +34,7 @@ function create (context) { } }) } + usedNames.push(o.name) } }) diff --git a/tests/lib/rules/no-dupe-keys.js b/tests/lib/rules/no-dupe-keys.js index fb23ff8ab..f9031d1e6 100644 --- a/tests/lib/rules/no-dupe-keys.js +++ b/tests/lib/rules/no-dupe-keys.js @@ -80,6 +80,26 @@ ruleTester.run('no-dupe-keys', rule, { } `, parserOptions: { ecmaVersion: 8, sourceType: 'module', ecmaFeatures: { experimentalObjectRestSpread: true }} + }, + + { + filename: 'test.js', + code: ` + // @vue/component + export const compA = { + props: { + propA: String + } + } + + // @vue/component + export const compB = { + props: { + propA: String + } + } + `, + parserOptions: { ecmaVersion: 6, sourceType: 'module' } } ],