From bbbb6ca5584e0f6158f822de7e54a5dd8598b9e7 Mon Sep 17 00:00:00 2001 From: Yosuke Ota Date: Fri, 22 Jan 2021 10:04:05 +0900 Subject: [PATCH] Fix false positives for quoted 'emits' in vue/require-explicit-emits rule (#1420) --- lib/utils/index.js | 12 ++++-------- tests/lib/rules/require-explicit-emits.js | 14 ++++++++++++++ tests/lib/rules/return-in-computed-property.js | 17 +++++++++++++++++ 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/lib/utils/index.js b/lib/utils/index.js index 35521255b..0bcf80169 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -544,8 +544,7 @@ module.exports = { (p) => { return ( p.type === 'Property' && - p.key.type === 'Identifier' && - p.key.name === 'components' && + getStaticPropertyName(p) === 'components' && p.value.type === 'ObjectExpression' ) } @@ -677,8 +676,7 @@ module.exports = { (p) => { return ( p.type === 'Property' && - p.key.type === 'Identifier' && - p.key.name === 'props' && + getStaticPropertyName(p) === 'props' && (p.value.type === 'ObjectExpression' || p.value.type === 'ArrayExpression') ) @@ -748,8 +746,7 @@ module.exports = { (p) => { return ( p.type === 'Property' && - p.key.type === 'Identifier' && - p.key.name === 'emits' && + getStaticPropertyName(p) === 'emits' && (p.value.type === 'ObjectExpression' || p.value.type === 'ArrayExpression') ) @@ -819,8 +816,7 @@ module.exports = { (p) => { return ( p.type === 'Property' && - p.key.type === 'Identifier' && - p.key.name === 'computed' && + getStaticPropertyName(p) === 'computed' && p.value.type === 'ObjectExpression' ) } diff --git a/tests/lib/rules/require-explicit-emits.js b/tests/lib/rules/require-explicit-emits.js index 4f27563cd..31ad623a4 100644 --- a/tests/lib/rules/require-explicit-emits.js +++ b/tests/lib/rules/require-explicit-emits.js @@ -140,6 +140,20 @@ tester.run('require-explicit-emits', rule, { ` }, + // quoted + { + filename: 'test.vue', + code: ` + + + ` + }, // unknown { filename: 'test.vue', diff --git a/tests/lib/rules/return-in-computed-property.js b/tests/lib/rules/return-in-computed-property.js index df6b1b680..4a988e86b 100644 --- a/tests/lib/rules/return-in-computed-property.js +++ b/tests/lib/rules/return-in-computed-property.js @@ -394,6 +394,23 @@ ruleTester.run('return-in-computed-property', rule, { line: 5 } ] + }, + { + filename: 'test.vue', + code: ` + export default { + 'computed': { + foo() { + } + } + }`, + parserOptions, + errors: [ + { + message: 'Expected to return a value in "foo" computed property.', + line: 4 + } + ] } ] })