Skip to content

Commit 3f917cd

Browse files
authored
Fix false positives for arrow function in return-in-emits-validator rule (#1138)
1 parent 0330147 commit 3f917cd

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

lib/rules/return-in-emits-validator.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,14 @@ module.exports = {
7474
},
7575
':function' (node) {
7676
scopeStack = { upper: scopeStack, functionNode: node, hasReturnValue: false, possibleOfReturnTrue: false }
77+
78+
if (node.type === 'ArrowFunctionExpression' && node.expression) {
79+
scopeStack.hasReturnValue = true
80+
81+
if (!isFalsy(node.body)) {
82+
scopeStack.possibleOfReturnTrue = true
83+
}
84+
}
7785
},
7886
ReturnStatement (node) {
7987
if (node.argument) {

tests/lib/rules/return-in-emits-validator.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ ruleTester.run('return-in-emits-validator', rule, {
3838
baz: (e) => {
3939
return e
4040
},
41+
baz2: (e) => e,
4142
qux () {
4243
if (foo) {
4344
return true
@@ -174,6 +175,22 @@ ruleTester.run('return-in-emits-validator', rule, {
174175
line: 5
175176
}]
176177
},
178+
{
179+
filename: 'test.vue',
180+
code: `
181+
<script>
182+
export default {
183+
emits: {
184+
foo: () => false
185+
}
186+
}
187+
</script>
188+
`,
189+
errors: [{
190+
message: 'Expected to return a true value in "foo" emits validator.',
191+
line: 5
192+
}]
193+
},
177194
{
178195
filename: 'test.vue',
179196
code: `

0 commit comments

Comments
 (0)