Skip to content

Commit 17b91ba

Browse files
committed
Fix false positives for import binding in vue/valid-define-emits and vue/valid-define-props rules
1 parent fe82fb5 commit 17b91ba

File tree

4 files changed

+44
-10
lines changed

4 files changed

+44
-10
lines changed

lib/rules/valid-define-emits.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,18 @@ module.exports = {
7777
) {
7878
if (
7979
variable.defs.length &&
80-
variable.defs.every(
81-
(def) =>
82-
utils.inRange(scriptSetup.range, def.name) &&
83-
!utils.inRange(defineEmits.range, def.name)
84-
)
80+
variable.defs.every((def) => {
81+
if (def.type === 'ImportBinding') {
82+
return false
83+
}
84+
if (
85+
!utils.inRange(scriptSetup.range, def.name) ||
86+
utils.inRange(defineEmits.range, def.name)
87+
) {
88+
return false
89+
}
90+
return true
91+
})
8592
) {
8693
if (utils.withinTypeNode(node)) {
8794
continue

lib/rules/valid-define-props.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,18 @@ module.exports = {
7878
) {
7979
if (
8080
variable.defs.length &&
81-
variable.defs.every(
82-
(def) =>
83-
utils.inRange(scriptSetup.range, def.name) &&
84-
!utils.inRange(defineProps.range, def.name)
85-
)
81+
variable.defs.every((def) => {
82+
if (def.type === 'ImportBinding') {
83+
return false
84+
}
85+
if (
86+
!utils.inRange(scriptSetup.range, def.name) ||
87+
utils.inRange(defineProps.range, def.name)
88+
) {
89+
return false
90+
}
91+
return true
92+
})
8693
) {
8794
if (utils.withinTypeNode(node)) {
8895
continue

tests/lib/rules/valid-define-emits.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,16 @@ tester.run('valid-define-emits', rule, {
117117
});
118118
</script>
119119
`
120+
},
121+
{
122+
filename: 'test.vue',
123+
code: `
124+
<script setup>
125+
import { propsDef, emitsDef } from './defs';
126+
127+
defineProps(propsDef);
128+
defineEmits(emitsDef);
129+
</script>`
120130
}
121131
],
122132
invalid: [

tests/lib/rules/valid-define-props.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,16 @@ tester.run('valid-define-props', rule, {
120120
});
121121
</script>
122122
`
123+
},
124+
{
125+
filename: 'test.vue',
126+
code: `
127+
<script setup>
128+
import { propsDef, emitsDef } from './defs';
129+
130+
defineProps(propsDef);
131+
defineEmits(emitsDef);
132+
</script>`
123133
}
124134
],
125135
invalid: [

0 commit comments

Comments
 (0)