Skip to content

Commit a70175e

Browse files
authored
Fix false positives for function args in vue/valid-define-emits and vue/valid-define-props rules (#1652)
1 parent 852096e commit a70175e

File tree

4 files changed

+39
-8
lines changed

4 files changed

+39
-8
lines changed

lib/rules/valid-define-emits.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -70,17 +70,19 @@ module.exports = {
7070
}
7171
},
7272
Identifier(node) {
73-
for (const def of emitsDefExpressions) {
74-
if (utils.inRange(def.range, node)) {
73+
for (const defineEmits of emitsDefExpressions) {
74+
if (utils.inRange(defineEmits.range, node)) {
7575
const variable = findVariable(context.getScope(), node)
7676
if (
7777
variable &&
7878
variable.references.some((ref) => ref.identifier === node)
7979
) {
8080
if (
8181
variable.defs.length &&
82-
variable.defs.every((def) =>
83-
utils.inRange(scriptSetup.range, def.name)
82+
variable.defs.every(
83+
(def) =>
84+
utils.inRange(scriptSetup.range, def.name) &&
85+
!utils.inRange(defineEmits.range, def.name)
8486
)
8587
) {
8688
//`defineEmits` are referencing locally declared variables.

lib/rules/valid-define-props.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,19 @@ module.exports = {
7171
}
7272
},
7373
Identifier(node) {
74-
for (const def of propsDefExpressions) {
75-
if (utils.inRange(def.range, node)) {
74+
for (const defineProps of propsDefExpressions) {
75+
if (utils.inRange(defineProps.range, node)) {
7676
const variable = findVariable(context.getScope(), node)
7777
if (
7878
variable &&
7979
variable.references.some((ref) => ref.identifier === node)
8080
) {
8181
if (
8282
variable.defs.length &&
83-
variable.defs.every((def) =>
84-
utils.inRange(scriptSetup.range, def.name)
83+
variable.defs.every(
84+
(def) =>
85+
utils.inRange(scriptSetup.range, def.name) &&
86+
!utils.inRange(defineProps.range, def.name)
8587
)
8688
) {
8789
//`defineProps` are referencing locally declared variables.

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

+12
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,18 @@ tester.run('valid-define-emits', rule, {
6161
defineEmits(def)
6262
</script>
6363
`
64+
},
65+
{
66+
filename: 'test.vue',
67+
code: `
68+
<script setup>
69+
defineEmits({
70+
notify (payload) {
71+
return typeof payload === 'string'
72+
}
73+
})
74+
</script>
75+
`
6476
}
6577
],
6678
invalid: [

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

+15
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,21 @@ tester.run('valid-define-props', rule, {
6161
defineProps(def)
6262
</script>
6363
`
64+
},
65+
{
66+
filename: 'test.vue',
67+
code: `
68+
<script setup>
69+
defineProps({
70+
addFunction: {
71+
type: Function,
72+
default (a, b) {
73+
return a + b
74+
}
75+
}
76+
})
77+
</script>
78+
`
6479
}
6580
],
6681
invalid: [

0 commit comments

Comments
 (0)