Skip to content

Commit 8d18da5

Browse files
authored
Fix unary operator analysis for strict boolean expression (#11)
1 parent 4ff0ea9 commit 8d18da5

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

src/rules/strictBooleanExpressions/strictBooleanExpressions.test.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ export const test = () =>
88
ruleTester({
99
ruleFn: strictBooleanExpressions,
1010
valid: [
11+
{
12+
options: { allowNumber: false },
13+
code: "-1",
14+
},
1115
// boolean in boolean context
1216
"true ? 'a' : 'b';",
1317
`
@@ -582,6 +586,31 @@ declare function f(x: string | null): boolean;
582586
`,
583587
],
584588
invalid: [
589+
{
590+
options: { allowNumber: false },
591+
code: "!1",
592+
errors: [
593+
{
594+
message: messages.conditionErrorNumber({ context: "conditional" }),
595+
line: 1,
596+
column: 2,
597+
suggestions: [
598+
{
599+
message: messages.conditionFixCompareZero,
600+
output: "1 === 0",
601+
},
602+
{
603+
message: messages.conditionFixCompareNaN,
604+
output: "Number.isNaN(1)",
605+
},
606+
{
607+
message: messages.conditionFixCastBoolean,
608+
output: "!Boolean(1)",
609+
},
610+
],
611+
},
612+
],
613+
},
585614
// non-boolean in RHS of test expression
586615
{
587616
options: {

src/rules/strictBooleanExpressions/strictBooleanExpressions.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -912,7 +912,9 @@ export const strictBooleanExpressions = defineRule(
912912
}
913913
},
914914
PrefixUnaryExpression(context, node) {
915-
traverseNode(context, node.operand, true);
915+
if (node.operator === SyntaxKind.ExclamationToken) {
916+
traverseNode(context, node.operand, true);
917+
}
916918
},
917919
WhileStatement(context, node) {
918920
traverseNode(context, node.expression, true);

0 commit comments

Comments
 (0)