From 500c7e908e10afa7764e3ebe5e86726bb70317e8 Mon Sep 17 00:00:00 2001 From: Cparros Date: Fri, 10 Mar 2023 12:57:01 -0700 Subject: [PATCH] Sequence expression check and tests --- .../src/rules/no-confusing-void-expression.ts | 6 ++++++ .../no-confusing-void-expression.test.ts | 20 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/packages/eslint-plugin/src/rules/no-confusing-void-expression.ts b/packages/eslint-plugin/src/rules/no-confusing-void-expression.ts index 01e5b45dbb8..62945ac689b 100644 --- a/packages/eslint-plugin/src/rules/no-confusing-void-expression.ts +++ b/packages/eslint-plugin/src/rules/no-confusing-void-expression.ts @@ -205,6 +205,7 @@ export default util.createRule({ suggest: [{ messageId: 'voidExprWrapVoid', fix: wrapVoidFix }], }); } + context.report({ node, messageId: 'invalidVoidExpr', @@ -225,6 +226,11 @@ export default util.createRule({ node.parent, util.NullThrowsReasons.MissingParent, ); + if (parent.type === AST_NODE_TYPES.SequenceExpression) { + if (node !== parent.expressions[parent.expressions.length - 1]) { + return null; + } + } if (parent.type === AST_NODE_TYPES.ExpressionStatement) { // e.g. `{ console.log("foo"); }` diff --git a/packages/eslint-plugin/tests/rules/no-confusing-void-expression.test.ts b/packages/eslint-plugin/tests/rules/no-confusing-void-expression.test.ts index ce79ce4966e..b0133a10b3c 100644 --- a/packages/eslint-plugin/tests/rules/no-confusing-void-expression.test.ts +++ b/packages/eslint-plugin/tests/rules/no-confusing-void-expression.test.ts @@ -57,6 +57,18 @@ ruleTester.run('no-confusing-void-expression', rule, { return void console.log('foo'); `, }), + ` +function cool(input: string) { + return console.log(input), input; +} + `, + { + code: ` +function cool(input: string) { + return input, console.log(input), input; +} + `, + }, ], invalid: [ @@ -87,6 +99,14 @@ ruleTester.run('no-confusing-void-expression', rule, { ], }), + { + code: ` +function notcool(input: string) { + return input, console.log(input); +} + `, + errors: [{ line: 3, column: 17, messageId: 'invalidVoidExpr' }], + }, { code: "() => console.log('foo');", errors: [{ line: 1, column: 7, messageId: 'invalidVoidExprArrow' }],