Skip to content

Commit dc64f8b

Browse files
committed
fix(no-unnecessary-act): cover more trees searching for statements
1 parent 50a72c1 commit dc64f8b

File tree

2 files changed

+35
-6
lines changed

2 files changed

+35
-6
lines changed

lib/node-utils/index.ts

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { RuleContext } from '@typescript-eslint/experimental-utils/dist/ts-eslin
1010
import {
1111
isArrayExpression,
1212
isArrowFunctionExpression,
13+
isAssignmentExpression,
1314
isBlockStatement,
1415
isCallExpression,
1516
isExpressionStatement,
@@ -536,11 +537,31 @@ export function hasImportMatch(
536537
export function getStatementCallExpression(
537538
statement: TSESTree.Statement
538539
): TSESTree.CallExpression | undefined {
539-
if (
540-
isExpressionStatement(statement) &&
541-
isCallExpression(statement.expression)
542-
) {
543-
return statement.expression;
540+
if (isExpressionStatement(statement)) {
541+
const { expression } = statement;
542+
if (isCallExpression(expression)) {
543+
return expression;
544+
}
545+
546+
if (
547+
ASTUtils.isAwaitExpression(expression) &&
548+
isCallExpression(expression.argument)
549+
) {
550+
return expression.argument;
551+
}
552+
553+
if (isAssignmentExpression(expression)) {
554+
if (isCallExpression(expression.right)) {
555+
return expression.right;
556+
}
557+
558+
if (
559+
ASTUtils.isAwaitExpression(expression.right) &&
560+
isCallExpression(expression.right.argument)
561+
) {
562+
return expression.right.argument;
563+
}
564+
}
544565
}
545566

546567
if (isReturnStatement(statement) && isCallExpression(statement.argument)) {

tests/lib/rules/no-unnecessary-act.test.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,17 @@ ruleTester.run(RULE_NAME, rule, {
1818
act(() => {
1919
stuffThatDoesNotUseRTL();
2020
});
21+
22+
act(function() {
23+
a = stuffThatDoesNotUseRTL();
24+
});
25+
26+
act(function() {
27+
a = await stuffThatDoesNotUseRTL();
28+
});
2129
2230
await act(async () => {
23-
stuffThatDoesNotUseRTL();
31+
await stuffThatDoesNotUseRTL();
2432
});
2533
2634
act(function() {

0 commit comments

Comments
 (0)