From 17b91baf76c5189a1d140f04dbfb575da19b3caf Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Fri, 3 Dec 2021 13:42:15 +0900 Subject: [PATCH 1/3] Fix false positives for import binding in `vue/valid-define-emits` and `vue/valid-define-props` rules --- lib/rules/valid-define-emits.js | 17 ++++++++++++----- lib/rules/valid-define-props.js | 17 ++++++++++++----- tests/lib/rules/valid-define-emits.js | 10 ++++++++++ tests/lib/rules/valid-define-props.js | 10 ++++++++++ 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/lib/rules/valid-define-emits.js b/lib/rules/valid-define-emits.js index 6f433a835..b1842f29e 100644 --- a/lib/rules/valid-define-emits.js +++ b/lib/rules/valid-define-emits.js @@ -77,11 +77,18 @@ module.exports = { ) { if ( variable.defs.length && - variable.defs.every( - (def) => - utils.inRange(scriptSetup.range, def.name) && - !utils.inRange(defineEmits.range, def.name) - ) + variable.defs.every((def) => { + if (def.type === 'ImportBinding') { + return false + } + if ( + !utils.inRange(scriptSetup.range, def.name) || + utils.inRange(defineEmits.range, def.name) + ) { + return false + } + return true + }) ) { if (utils.withinTypeNode(node)) { continue diff --git a/lib/rules/valid-define-props.js b/lib/rules/valid-define-props.js index 3a084dd68..a3fb26e9d 100644 --- a/lib/rules/valid-define-props.js +++ b/lib/rules/valid-define-props.js @@ -78,11 +78,18 @@ module.exports = { ) { if ( variable.defs.length && - variable.defs.every( - (def) => - utils.inRange(scriptSetup.range, def.name) && - !utils.inRange(defineProps.range, def.name) - ) + variable.defs.every((def) => { + if (def.type === 'ImportBinding') { + return false + } + if ( + !utils.inRange(scriptSetup.range, def.name) || + utils.inRange(defineProps.range, def.name) + ) { + return false + } + return true + }) ) { if (utils.withinTypeNode(node)) { continue diff --git a/tests/lib/rules/valid-define-emits.js b/tests/lib/rules/valid-define-emits.js index 557101d67..dd0b1f88f 100644 --- a/tests/lib/rules/valid-define-emits.js +++ b/tests/lib/rules/valid-define-emits.js @@ -117,6 +117,16 @@ tester.run('valid-define-emits', rule, { }); ` + }, + { + filename: 'test.vue', + code: ` + ` } ], invalid: [ diff --git a/tests/lib/rules/valid-define-props.js b/tests/lib/rules/valid-define-props.js index 10894e069..2d866274b 100644 --- a/tests/lib/rules/valid-define-props.js +++ b/tests/lib/rules/valid-define-props.js @@ -120,6 +120,16 @@ tester.run('valid-define-props', rule, { }); ` + }, + { + filename: 'test.vue', + code: ` + ` } ], invalid: [ From 70d995dac8a6d852b2b40e2ed4a513ce913c7caa Mon Sep 17 00:00:00 2001 From: Yosuke Ota Date: Fri, 3 Dec 2021 20:03:14 +0900 Subject: [PATCH 2/3] Apply suggestions from code review Co-authored-by: Flo Edelmann --- lib/rules/valid-define-emits.js | 18 ++++++------------ lib/rules/valid-define-props.js | 18 ++++++------------ 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/lib/rules/valid-define-emits.js b/lib/rules/valid-define-emits.js index b1842f29e..d7480d538 100644 --- a/lib/rules/valid-define-emits.js +++ b/lib/rules/valid-define-emits.js @@ -77,18 +77,12 @@ module.exports = { ) { if ( variable.defs.length && - variable.defs.every((def) => { - if (def.type === 'ImportBinding') { - return false - } - if ( - !utils.inRange(scriptSetup.range, def.name) || - utils.inRange(defineEmits.range, def.name) - ) { - return false - } - return true - }) + variable.defs.every( + (def) => + def.type !== 'ImportBinding' && + utils.inRange(scriptSetup.range, def.name) && + !utils.inRange(defineEmits.range, def.name) + ) ) { if (utils.withinTypeNode(node)) { continue diff --git a/lib/rules/valid-define-props.js b/lib/rules/valid-define-props.js index a3fb26e9d..57a4a70ab 100644 --- a/lib/rules/valid-define-props.js +++ b/lib/rules/valid-define-props.js @@ -78,18 +78,12 @@ module.exports = { ) { if ( variable.defs.length && - variable.defs.every((def) => { - if (def.type === 'ImportBinding') { - return false - } - if ( - !utils.inRange(scriptSetup.range, def.name) || - utils.inRange(defineProps.range, def.name) - ) { - return false - } - return true - }) + variable.defs.every( + (def) => + def.type !== 'ImportBinding' && + utils.inRange(scriptSetup.range, def.name) && + !utils.inRange(defineEmits.range, def.name) + ) ) { if (utils.withinTypeNode(node)) { continue From 7b83ffa81e89e354b828b0e2659280fda6d3e0fa Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Fri, 3 Dec 2021 20:04:59 +0900 Subject: [PATCH 3/3] fix --- lib/rules/valid-define-props.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rules/valid-define-props.js b/lib/rules/valid-define-props.js index 57a4a70ab..849437b1e 100644 --- a/lib/rules/valid-define-props.js +++ b/lib/rules/valid-define-props.js @@ -82,7 +82,7 @@ module.exports = { (def) => def.type !== 'ImportBinding' && utils.inRange(scriptSetup.range, def.name) && - !utils.inRange(defineEmits.range, def.name) + !utils.inRange(defineProps.range, def.name) ) ) { if (utils.withinTypeNode(node)) {