From 37e00ddc6b8e52f32616257b2d5188b13050b701 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Sat, 15 Jun 2024 05:19:39 +0800 Subject: [PATCH] `no-negation-in-equality-check`: Ignore boolean type casting (#2379) --- rules/no-negation-in-equality-check.js | 9 +++++---- test/no-negation-in-equality-check.mjs | 3 ++- .../no-negation-in-equality-check.mjs.md | 19 ------------------ .../no-negation-in-equality-check.mjs.snap | Bin 799 -> 763 bytes 4 files changed, 7 insertions(+), 24 deletions(-) diff --git a/rules/no-negation-in-equality-check.js b/rules/no-negation-in-equality-check.js index 9bcdbb8115..dd5df5aa57 100644 --- a/rules/no-negation-in-equality-check.js +++ b/rules/no-negation-in-equality-check.js @@ -31,10 +31,11 @@ const create = context => ({ BinaryExpression(binaryExpression) { const {operator, left} = binaryExpression; - if ( - !isEqualityCheck(binaryExpression) - || !isNegatedExpression(left) - ) { + if (!( + isEqualityCheck(binaryExpression) + && isNegatedExpression(left) + && !isNegatedExpression(left.argument) + )) { return; } diff --git a/test/no-negation-in-equality-check.mjs b/test/no-negation-in-equality-check.mjs index 70d0e58025..d63621db93 100644 --- a/test/no-negation-in-equality-check.mjs +++ b/test/no-negation-in-equality-check.mjs @@ -8,6 +8,8 @@ test.snapshot({ '!foo instanceof bar', '+foo === bar', '!(foo === bar)', + '!!foo === bar', + '!!!foo === bar', // We are not checking right side 'foo === !bar', ], @@ -45,6 +47,5 @@ test.snapshot({ foo !/* comment */[a, b].join('') === c `, - '!!foo === bar', ], }); diff --git a/test/snapshots/no-negation-in-equality-check.mjs.md b/test/snapshots/no-negation-in-equality-check.mjs.md index 6888103721..3b58274050 100644 --- a/test/snapshots/no-negation-in-equality-check.mjs.md +++ b/test/snapshots/no-negation-in-equality-check.mjs.md @@ -247,22 +247,3 @@ Generated by [AVA](https://avajs.dev). 1 | foo␊ 2 | ;/* comment */[a, b].join('') !== c␊ ` - -## invalid(11): !!foo === bar - -> Input - - `␊ - 1 | !!foo === bar␊ - ` - -> Error 1/1 - - `␊ - > 1 | !!foo === bar␊ - | ^ Negated expression in not allowed in equality check.␊ - ␊ - --------------------------------------------------------------------------------␊ - Suggestion 1/1: Switch to '!==' check.␊ - 1 | !foo !== bar␊ - ` diff --git a/test/snapshots/no-negation-in-equality-check.mjs.snap b/test/snapshots/no-negation-in-equality-check.mjs.snap index 9df853b5dd8c5053062066810663133c557a2e25..27ceae70074de58e700ec1b4aa250d7c218e0d07 100644 GIT binary patch literal 763 zcmVH>8UiALM9VmY1%824!0*5ZD)ia1 z+GS>MRFhN02mWlG0Sp1yzU(mtH^! zq>Zy_OkHoVHzbJk0vF%~;7Z>Li3dPJya5N~#@l$kYh$cRkoeZ9Gwb=jzq3)l40;Z= zj{J|OgxSm?)9beT3OjaRuNxge14_X(P3U3I_FX*khm`qmPy2n$@Z(#T3+sj8DXtZ+ z6gM=0I?RL`jX1bR9P-c|jagXrBU*LoTS4o}WdHy(cn*)qA!eixWIFPQ@7vS`+Xa_0 zz>Y&Fq#yi9UXHP2v)5n^iFH)fw7VDlXb0oNL*ldG_jThy@ic^pCBwta=NjXSvbwDbUA%x_{*9rZ7G#1 zd^KtfzCdp91+o(?kf2n@#{3ZZey9jr;pXCQ3SW3ptGc0o3DNjjh?IBZ<;!zbE5FZ& zJobWtP=trPz;AQ@_c;Hj_zv`*RbNos)yw5M5KDH^7F_7E3uPbWlHCx*tQBQ3>Ru}% zDLx#EfRcrkxv*U>3^E$q5sVqKF?A!QvTK5}b%nBoW-H=Mnl4>h^Zb7lTijZ$0v0_! tCN6_YEu+Evg29$-@Xt+^HmicoO@+-2jaS5M>ZEGRzX9(jsLzuU0085>XdwUq literal 799 zcmV+)1K|8YRzV7zJB;7hCv|JseR#>Q^}G!uOog5yJogrtktD;{%=I9^lE)!LDl(8%!H) zLP57IGR8gcBYri~Et9?hV}OmrilW>*=cVkA4i2zOz3pq&S{wGqCN%~?2^5j071_q~ z`n@_3SH8LDIK=Tn1(EAaWRyWP9<+6u<&2Yi!#ZJmQCIm`zE%CO{Q;CZ9{)#8?(%lk_vCZ!F1%<;f}cr z$D;5LIpKHM-drvPpbk?gNKz^QTQG%V37)5UjpI|v%aeDKl6&+DFk2ZRvIG9>j-Q}t z_&SIxDnj35&|9(4ful|b4jD(Dg`Du-cY@0~0jF_-f7U`FLapIFoNucDG-Y3D#k%GT z=bDeHTyu_2$zII=>@X;C<@sh)Gr(FHvd(~g=74>O0hY!&oycJVrkRm0C$AL0tU1!A z6sd$)y;^4tlK7TdWa4D4%7cW)Bl-%7rM_YFNtZFip9AghRCADu_%cwq$juqhHeJE@drg`;^>LNi6;6(O5gX)@)-T~?coqLOD(w>g$q*h}VF d!>CgZ)sMw%=E_W?B!i+r=|7(B?|l6e0050%gNXnD