diff --git a/.changeset/loud-jobs-follow.md b/.changeset/loud-jobs-follow.md new file mode 100644 index 000000000..cf663aa78 --- /dev/null +++ b/.changeset/loud-jobs-follow.md @@ -0,0 +1,5 @@ +--- +"@flint.fyi/ts": patch +--- + +fix(ts): [chainedAssignments] allow non-assignment right-side operators diff --git a/packages/ts/src/rules/chainedAssignments.test.ts b/packages/ts/src/rules/chainedAssignments.test.ts index 79d73d899..04ec19143 100644 --- a/packages/ts/src/rules/chainedAssignments.test.ts +++ b/packages/ts/src/rules/chainedAssignments.test.ts @@ -234,6 +234,30 @@ class MyClass { second = 0; } } +`, + ` +let result = ""; +result += "a" + "b"; +`, + ` +let result = 0; +result += 1 + 2; +`, + ` +let result = 0; +result += 1 * 2; +`, + ` +let result = 0; +result += 1 - 2; +`, + ` +let result = 0; +result += 1 / 2; +`, + ` +let result = 0; +result += 1 ** 2; `, ], }); diff --git a/packages/ts/src/rules/chainedAssignments.ts b/packages/ts/src/rules/chainedAssignments.ts index ca41f51a2..cd89a8878 100644 --- a/packages/ts/src/rules/chainedAssignments.ts +++ b/packages/ts/src/rules/chainedAssignments.ts @@ -35,7 +35,10 @@ export default typescriptLanguage.createRule({ } const rightSide = unwrapParenthesizedExpression(node.right); - if (!ts.isBinaryExpression(rightSide)) { + if ( + !ts.isBinaryExpression(rightSide) || + !tsutils.isAssignmentKind(rightSide.operatorToken.kind) + ) { return; }