diff --git a/lib/rules/return-in-emits-validator.js b/lib/rules/return-in-emits-validator.js index dd5e551f4..64e62b8c4 100644 --- a/lib/rules/return-in-emits-validator.js +++ b/lib/rules/return-in-emits-validator.js @@ -74,6 +74,14 @@ module.exports = { }, ':function' (node) { scopeStack = { upper: scopeStack, functionNode: node, hasReturnValue: false, possibleOfReturnTrue: false } + + if (node.type === 'ArrowFunctionExpression' && node.expression) { + scopeStack.hasReturnValue = true + + if (!isFalsy(node.body)) { + scopeStack.possibleOfReturnTrue = true + } + } }, ReturnStatement (node) { if (node.argument) { diff --git a/tests/lib/rules/return-in-emits-validator.js b/tests/lib/rules/return-in-emits-validator.js index 8ee6b75e5..f988e6d93 100644 --- a/tests/lib/rules/return-in-emits-validator.js +++ b/tests/lib/rules/return-in-emits-validator.js @@ -38,6 +38,7 @@ ruleTester.run('return-in-emits-validator', rule, { baz: (e) => { return e }, + baz2: (e) => e, qux () { if (foo) { return true @@ -174,6 +175,22 @@ ruleTester.run('return-in-emits-validator', rule, { line: 5 }] }, + { + filename: 'test.vue', + code: ` + + `, + errors: [{ + message: 'Expected to return a true value in "foo" emits validator.', + line: 5 + }] + }, { filename: 'test.vue', code: `