From 3a7716d3360f3dd64025aaac5544f9bf62997053 Mon Sep 17 00:00:00 2001 From: Matthias Osswald Date: Fri, 9 Aug 2024 15:06:59 +0200 Subject: [PATCH] fix: Unhandled CallExpression expression syntax: CallExpression A CallExpression on a CallExpression wasn't handled yet and caused a fatal error. This commit also adds a test case for another issue that was already fixed via https://github.com/SAP/ui5-linter/pull/73 (SuperKeyword). Fixes: https://github.com/SAP/ui5-linter/issues/246 --- src/linter/ui5Types/SourceFileLinter.ts | 5 +-- test/fixtures/linter/general/Class.js | 7 ++++ test/fixtures/linter/general/FunctionCall.js | 3 ++ .../rules/NoDeprecatedApi/NoDeprecatedApi.js | 3 ++ .../rules/snapshots/NoDeprecatedApi.ts.md | 27 ++++++++++------ .../rules/snapshots/NoDeprecatedApi.ts.snap | Bin 8750 -> 8827 bytes test/lib/linter/snapshots/linter.ts.md | 30 ++++++++++++++++++ test/lib/linter/snapshots/linter.ts.snap | Bin 8524 -> 8594 bytes 8 files changed, 64 insertions(+), 11 deletions(-) create mode 100644 test/fixtures/linter/general/Class.js create mode 100644 test/fixtures/linter/general/FunctionCall.js diff --git a/src/linter/ui5Types/SourceFileLinter.ts b/src/linter/ui5Types/SourceFileLinter.ts index e5c5b0e96..6cdd7d266 100644 --- a/src/linter/ui5Types/SourceFileLinter.ts +++ b/src/linter/ui5Types/SourceFileLinter.ts @@ -214,7 +214,8 @@ export default class SourceFileLinter { if (!ts.isPropertyAccessExpression(exprNode) && !ts.isElementAccessExpression(exprNode) && - !ts.isIdentifier(exprNode)) { + !ts.isIdentifier(exprNode) && + !ts.isCallExpression(exprNode)) { // TODO: Transform into coverage message if it's really ok not to handle this throw new Error(`Unhandled CallExpression expression syntax: ${ts.SyntaxKind[exprNode.kind]}`); } @@ -229,7 +230,7 @@ export default class SourceFileLinter { reportNode = exprNode.name; } else if (ts.isElementAccessExpression(exprNode)) { reportNode = exprNode.argumentExpression; - } else { // Identifier + } else { // Identifier / CallExpression reportNode = exprNode; } diff --git a/test/fixtures/linter/general/Class.js b/test/fixtures/linter/general/Class.js new file mode 100644 index 000000000..59c700f92 --- /dev/null +++ b/test/fixtures/linter/general/Class.js @@ -0,0 +1,7 @@ +import BaseObject from "sap/ui/base/Object"; + +class Foo extends BaseObject { + constructor() { + super(); + } +} diff --git a/test/fixtures/linter/general/FunctionCall.js b/test/fixtures/linter/general/FunctionCall.js new file mode 100644 index 000000000..835ae341c --- /dev/null +++ b/test/fixtures/linter/general/FunctionCall.js @@ -0,0 +1,3 @@ +import values from "sap/base/util/values"; +const getValues = () => values; +getValues()({foo: "bar"}); // Special case: CallExpression on a CallExpression diff --git a/test/fixtures/linter/rules/NoDeprecatedApi/NoDeprecatedApi.js b/test/fixtures/linter/rules/NoDeprecatedApi/NoDeprecatedApi.js index 1f81a8937..7de1cd73c 100644 --- a/test/fixtures/linter/rules/NoDeprecatedApi/NoDeprecatedApi.js +++ b/test/fixtures/linter/rules/NoDeprecatedApi/NoDeprecatedApi.js @@ -23,6 +23,9 @@ sap.ui.define([ includes([1], 1); // Function "includes" is deprecated + const getIncludesFunction = () => includes; + getIncludesFunction()([1], 1); // Function "includes" is deprecated + Configuration.getCompatibilityVersion("sapMDialogWithPadding"); // Method "getCompatibilityVersion" is deprecated Configuration["getCompatibilityVersion"]("sapMDialogWithPadding"); // Method "getCompatibilityVersion" is deprecated diff --git a/test/lib/linter/rules/snapshots/NoDeprecatedApi.ts.md b/test/lib/linter/rules/snapshots/NoDeprecatedApi.ts.md index bef9f7130..474457c19 100644 --- a/test/lib/linter/rules/snapshots/NoDeprecatedApi.ts.md +++ b/test/lib/linter/rules/snapshots/NoDeprecatedApi.ts.md @@ -70,7 +70,7 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 18, + errorCount: 19, fatalErrorCount: 0, filePath: 'NoDeprecatedApi.js', messages: [ @@ -164,10 +164,19 @@ Generated by [AVA](https://avajs.dev). ruleId: 'ui5-linter-no-deprecated-api', severity: 2, }, + { + column: 2, + fatal: undefined, + line: 27, + message: 'Call to deprecated function \'getIncludesFunction()\'', + messageDetails: 'Deprecated test message', + ruleId: 'ui5-linter-no-deprecated-api', + severity: 2, + }, { column: 16, fatal: undefined, - line: 26, + line: 29, message: 'Call to deprecated function \'getCompatibilityVersion\' of class \'Configuration\'', messageDetails: 'Deprecated test message', ruleId: 'ui5-linter-no-deprecated-api', @@ -176,7 +185,7 @@ Generated by [AVA](https://avajs.dev). { column: 16, fatal: undefined, - line: 27, + line: 30, message: 'Call to deprecated function \'getCompatibilityVersion\' of class \'Configuration\'', messageDetails: 'Deprecated test message', ruleId: 'ui5-linter-no-deprecated-api', @@ -185,7 +194,7 @@ Generated by [AVA](https://avajs.dev). { column: 2, fatal: undefined, - line: 29, + line: 32, message: 'Access of deprecated property \'webview\'', messageDetails: 'Deprecated test message', ruleId: 'ui5-linter-no-deprecated-property', @@ -194,7 +203,7 @@ Generated by [AVA](https://avajs.dev). { column: 2, fatal: undefined, - line: 30, + line: 33, message: 'Access of deprecated property \'webview\'', messageDetails: 'Deprecated test message', ruleId: 'ui5-linter-no-deprecated-property', @@ -203,7 +212,7 @@ Generated by [AVA](https://avajs.dev). { column: 2, fatal: undefined, - line: 32, + line: 35, message: 'Access of deprecated property \'AnimationMode\'', messageDetails: 'Deprecated test message', ruleId: 'ui5-linter-no-deprecated-property', @@ -212,7 +221,7 @@ Generated by [AVA](https://avajs.dev). { column: 2, fatal: undefined, - line: 34, + line: 37, message: 'Access of deprecated property \'MessageType\'', messageDetails: 'Deprecated test message', ruleId: 'ui5-linter-no-deprecated-property', @@ -221,7 +230,7 @@ Generated by [AVA](https://avajs.dev). { column: 2, fatal: undefined, - line: 36, + line: 39, message: 'Access of deprecated property \'Date\'', messageDetails: 'Deprecated test message', ruleId: 'ui5-linter-no-deprecated-property', @@ -230,7 +239,7 @@ Generated by [AVA](https://avajs.dev). { column: 20, fatal: undefined, - line: 39, + line: 42, message: 'Call to deprecated function \'storeInnerAppState\' of class \'NavigationHandler\'', messageDetails: 'Deprecated test message', ruleId: 'ui5-linter-no-deprecated-api', diff --git a/test/lib/linter/rules/snapshots/NoDeprecatedApi.ts.snap b/test/lib/linter/rules/snapshots/NoDeprecatedApi.ts.snap index 2703175e6b8f827e2652cdee6caf9ca43d5f4058..b0f1b7c922ac8f2e32b494e321c0b7c37eb59faa 100644 GIT binary patch literal 8827 zcmV->B81&RRzVY0`|c=q65B~^*^ZsW+4lt!0@;A@AeHU0 zBO*&ilAVO5v{0ZePzsbnSW1DGeJ$`x3zV(2(B%~hbfZv~Qj)e5`X~=tT6mtZEG2gw zkD^$_#^N7NEFI0vcjw&u%{||ob6sbf*WbQ9ctz3mO2`xPDm%+oDn2FP_ReuGb$h+* zeCw4^Z@{;4SC3MEa?lg>xqE`!{Gs6Iuj}Y=hup`T|7603`k!Q%_ zS&=d%X`=*rk_pL@Ev2>l`;>sYOIhvf^dn`GE6IbOIg~)aA6V+|^@X%QnI&2HMrNlw z<5R+ZCgC$%81%t^FIPv(8S*kI(Lspyb*&+pAztdc13UJgduAl z-^dP5k42H`ajkY4tGj#rfzXgsqp2YwQ)8|Kb+Jy3N5?%iN+UBhW(qKAXXQ=Mv?yOJ z!R1C%;sD6kNnw!fuSoDG3CuD$Wtbx zHl@I&Deylj!xJ#OWdBDXdsc>H^ zq^7~@H26ZA;BMEse=7}cO@pV>;E!oQI&4mducgB;(gpVvo%`GA@Sgg$3~*(@kr{AJ z2E3R71(|}oL+3s-6Xs>YmQ3i&giA8vFPTuA1sz#}d#cX;3t8~xEVwxfewYQXWI;Z#HD)z|_YHY)d>-uR|LUcAa91A4`LHM-PRkeEGj;A)<->LP@JK$qm=EvggHixD z6u`>`f_s+E{i6af7eZwrEGUF6h454%Sc_nBk>H-Kb9Wa(R}q|31lJY8!$n{&h9$*t zR!{(1@QEdg68RF%TQQn;WLeo_jK zGQmAh=RUOz8p`0PGB~*m&Mkvy%OJBH)|CtH`8s!hIrR2_?b33%s~mn>4w)6OwgN7! z5ZnuN?srtcy%q3m1-w-ODHEV?0^BzN-ku=17ak(nudP5$s%j0YJ_I4=2F%9JQ1Od4z7S`RRl2=c= z%iYuC^11swU2gRm*cDU)eV%s3byVa}tK7a0uM!y3NH0&&M$N2PkZ$(}6xUL}uhY}j z8_*yf(^!g_#ENB#0hTj21r-6vo`Anc350eztF`@Kr9<19Y4^H=L1*=n-cV?qLg_Go zvS~OdL++kW8I0CAVH7_TVQd|Cv(Oz1x!bpG{M4Zt?@cL^D-q3>;cm(vZ*P~!7u*-h zjqWzDGA@zKKNKXp0{-5fCA&UdNQ#UnRwRoIkeo7XgnueXX1vgq8bCK=Sm?Tx(CRRH zE5d)QsU6ce#=AvcZh+%aMmR3@clWqMo;Huy6WX;|2?SLFxleR|dYEOr5LYB2PV{Wx zG=R8zaeKQG3?6V*+M%@dd6XRq#ctvOu^T*(!wBHSB!GtoV3h%Ybp`+~_IbLs_*Juu z;}^!s1~5)DfN|}>*H!t@_ytkCauLKy1|X_?!DAo2yg1RDYJlF_VVCP*$RAKv`+Q1Z zaZk^Nkc#9!EA<%Kwj7iZOgfN^V5?72FQsp2NuzY>i0TO*0$u|uB$yqmp5TOd^#r0& zAWk_!=`e_CC%7Xqx`G4B00zgjA~L2&y8|JQ+dFug9=~ts(Y!Drqgf>%8=`fFG z{*YK{r*_I=8po38I0pP7e`r^avQ(XDhE~$ePKd%MUjkRGW4QisE9tUzKxyaYOO%%G zQVDj)rlq?fqNP(6L3<>y%1|l80vWEA;U!fWbf{Xof&^{qFCKnbR6?6QK~I}kS?}MW zAvlJ100+ZuVkF#-Tf1gOz}=>W+^)>crGVoKaVF zAiT8G>rGJb+3u7;7482(f~O^TUV=YJ@Moid98kBt7t#ASN0o9xIii$Pm2{FRDy1_= zrF517t%(VG`{VUe6WnEjpPHb|3|q`_nJDhpOVjQ*!-Hn{tr^}kL$(D}72UTj@QTGy znuZmuR#0_yi>&ZpR=CFsZ(Cui%}|@2C_w%-l8LD5K;(lOdG9VFY+h9cX`lunP&qdj^X(C*fR(C#S`EQ*zOw;yiWU1^M* zcA{q{ihw^5Cf`p<@SFrMOR!ghf5b+>KaLRa1yKTiMwEa*6eZvvMhW_*lB~W+2C#)SnROW4xcq9;NP&rxB5x<<92x24*#;lniTkQ3Os2{ zz~4xLzobBl1139Qu>-#8fR`Ome7Fd>_^U|*9uJC1rR#_h@I#`FNdmqPl4(f-K0*ZC zNa&g*;3ER#r=Eb9?MuK{g}S{P`nu{>kHu3;liTk+Pg83L+=*08at6&P;n z$LJmj9+Ke4M$~$MB>yr(t<$5_dRdfOpBARpcFCr0b3Y)%uVnaN8ICl;?@dr>NT98= z%rM^!CzxS}8J;qO$&ff(t1M7!ft40$x4?ZCcw2PS5oT+q74oex!wT!H@J%bcXdRv? z58OJ#Odn$2@nH6YTQ{lyQs)4lmiBk5Ra%@LpBhlk%^qb(&^7pY7Ib=o`%ERVO%5k- z3VM89&Z7?Sw z#)js`&X(4WX1BX_mV0KKyF+Q}m@U3jIpTA;CGJ5m+D>ka48n%ZE8_wG6TVjQ+2~-H z`&heHacw@Bz3owTtwXMv>y=Y_JppByHPbY8EU%d(B+1Af0;+_rnet^4Tos!rBIMJj(=MG{KD~c-#apo1isJPQP=g^i`$G5jQQ5R=^uD-+ErnI|zgX#y0Q+-ohomM;@iZA5p^e6#mrN1|%1XQ&}rJ8oG9Jm2% zDys&#Ze?wKGOx2ZHlu)2`PbYk5A1;A2JfdNd*k1O!=&lKqBDx zhXfGR9z}{TR9RcEepqwb8Ht5JWHb9hAZiap2+kP^2zov4fZ{$N2m>G2G#H^U{JL40 zAkKF1?WT?xgYBmJghf?TKMl2@mL8Rm1vOiOX|XP-N5#FMio2O{E~x4Ifux<&rH8PX zI(`#=??)|Yq4v%DNP-j@^3+Ev8K%n6A`idFI@CpSg$zf_aDoh-GMo}l0iV~uGF~FX zHNuaii(@s=lIG?}|C<-1i*QD?|IOlP|C>;>|IJO&{x`ofMf%^QNBiF_3irQ>94BZV zJdT=J4j^$1YiJwZh$2c*Y8Uvw}lR zrReFwT{gJi1}}tDD4B*0axCAq!^3uX$qpadq0q1?j^(}-_qzt z1Agp)HyvO}g^6NjMVHsHJevx?PKEbVAwLZo#eO-uT#n_}Y4B1S{3i`c(_xm_BS+Wd z#`5=cct0HqGoU2{j>#};Y-7pDguF~>&V==u;1gTv=$qM0%!2AHSe^y$EI14*XvZ%+7_r zT(~FKup7;@x$x^;crO>S^Pnyd&dP&F^Wa0Vm5#m}O=&(%%!h^fa6&%p$cOKRd*U>S zy>Rs1Xx10NaRty<0GAZNodxht|NrX?!Bc41jpj>*a8V)LQ3y{L!W)IKGTa;IQL&Yd zz8lReMewI^`y6L6%qxb^_W%E(Vt8L{rK9ggQ&6Qc#5&#wLm$5|65J{LbnH=r`|>Ak<%xcjU=BST2u1|*yu^WULS@k1Q+eX(z`;nM zbjG2>pu6%D_66p|!+7xqNn-heMBD@(Eq$+a95Kow!a$TQUzB(-Mpa}Oq`gPv5%Yi$ zjG7S1FhF5<;_r$L?w+F~Ul={{B5qHJ$XxviBQvUkN35qWf^$hif@df^4leZY zd8CpYb^1K};-gm&b^sUd`O&*6lRyLw_?lE{h~T({&4}J5VT*?t4kgsmU>la(jY}kr zUiC}ffbo#eBy4f9RcT2~aXTF09G9>fP~GI+7#9g1)3Al}Z^20Z&Fg6kxC6U}Ouii< zCnWinAwf;7$+sipPQJ|;ndF-zija0fT?x`mHgA++iwqqy_+>a%hI3^2sti}jaH9_na440qZBg4Bgd?Z7P`Vx_8Ko~jI1T7|5WEv#%;M+6+zMN+PSwu)z!`nZaX*kQvT2 z?|+}@G@moH`{c`!gxu57gq+Cnt7n|f5uJV`avH1itOOxMict7e8~mfE#jL^ZdlW|n4NrkdHB`HWr5?5JjH z3P`z{xk5GbH1qSSnLkh-Q8f!RQ+;_!D%8v-2dIrFQzhvX)hyP`+f}nfGu0HF+FmhL zk}6X{D$~ppRkK_(uTaej&3sNZCk&)e(?IRR){pOM)tsoAUsTOX&3r;Nt2FZ?)tsc6 zt?8h4eNxk{syRh7?^4Zb&HS@!)@bJB3{cyU0MLU3*fs2@LU1BT>!0xuv1K^>2j>LD+=Ko zh44@z{H758(QnTyg44ugnl9IByQ&DTD}qOg;Kd?%zX;|R!|7roO_y`EU0n><7sI2) z@cUx;pcodEz!@b*xmVjYC2&ItJXQiPmB2qsU|A`gE#}|Sb*?v*!Y!rn<5GCN6h1D6 zqs!o;GNY8O?XEJozYLx$gSX2dwH!8=!)4`0=~~6Q6U-AqnFzN|G)&e0WFkB> z5&kw29F;Jo63(xLzg9wHm0_y(m?}873VN&H;wreK3UVeva1uN)$tYE8`^_YHc@q44 z5)@5_=E?Bc$?))GqcpAUrOEL6WNmh$dU6=iOm|yIbzrN5$#t-}4o<9thwGrC9@^^#_j28l&#s3r z)x%Bo@I*cQp&n{ou+1g7R_I*6=z_1f;C2^0<$^!<+tV9hdxPLQLFamY16}`VP z84#QyxK`>{gc-1V27Gr0JU0X0o&k%R;ml^iwMyrDZ8Lnk8J=i{KQzOK&9I^c&S?=` zC+S?j-2%6@z|$@8Mhi$YVeL$~V5ZS64d=~hyt#sFtOX1C>U|9wem%;pHaP~5Ie3{_dq+bb^!JcJcT@IDYVZn0v!g6?Gx!^iO=lc3` z*t;BTE1+rxEL;I!UI9<95L}yeu6tL&+bbY_CDg8jOqVFn2W^yBcm-4X>>hTxaQ?{}WTD!6-!#(O<6# zKlZC7`fF;P-MztZ-m%^54k#VY9iGs(==)5kxqCd}HsEudO=rZm|1)Qer%n6)p({Z) z);BgaxT;+49*;}?Td${HEh$vL#?xj{{Bg?uTSPqrT@t;!Mo)Keqx?d07(S6|FaToePy}F_AppwGP`$_3 z=HEGnQ4sqQ4^i)VSQK_BZJJ0hme%}-J_)o-Z*4D$!6T5?M*5qIJ8Bu_I- zE0R2I<#^|5tHwJ|Tb<--l36+;$4l37}l4Y)F)&|?4m5CLj zw)&JVcgWK>bkj}g{1Gi3^$_qHP#{4=tfiwi#9KN_tO*ro<*3{tkkU@fpO_L-2ducH zYr50z_IWy$V5t7&px>t-Jg0XoH{B7H`tdg1*$*V`oK8+q>93+UC3s7M_a%^JP==Y?nwo-A{u6xWgFNGYy!qdj;YGe=5s{o5QV#Wl+kDa94A zL`repVTqLD+GB~7;;OPnN^zZJjg;crZH<)Tdfpl-#g%D`l;S$V7AeJbjxAD(>rq>z z6xWBgfl^#{$u`pt^X#D3_v*95CE?yWWny0)T}dh1ycAfH0-s5N(^KGz6nH5G%EbOU zx^hysc@9|OfX_JKbO&7FfL9&h6#MMxN=exkrNW9-=tzanrNY&z@TXLmEcV;cmyueY z21llWCk@U?gX_}Ztu&Y}_TAB!ky?`u>(ikp9WF?RoBQo|(!nM6-_e(mT9*NvG9Z`% z7iGY08SqX9xWqm@`Z7}MGGS9D1T*2HOt>u*-pYjOS%zh#)?~r@Ea=IC3$ozme*2v) zaEYbD^kt;hWy7Xy2xh}Y*>GDnyq68lV(T7#8L5ro%3?cn;A=T>cfb8X4$KlOjOoir z9h(a$=E7;YaCt7=n+yNUh1p_tFt}TEE3m~l!jx_A@W7}Q`r-VEG+*SxbE`*#S zIL5HUkL{Eq*ii(R6~R44@be-lE{5X_yZhL7hMNJY#mOEhhUbf+v;?+@MalGKqfRY> z&y~P8O5pn?@T(G-UJBh}Q8Inms0;hQa%m~tQwl#Xg}tRPrwn?mcwIWQ8Inms8`G3&2q3*z{CoeUjeUGK=}m2vQhIVz|sle4i_WaJprhO(W*);Jh_!tW_6fREsShgMZlAiRGKOI=k`Np1GJD;= zjy_ND)G-V}%OOsQ-R|w4&=|gcBMtKq#me`;{?V|V81Ka&s&+Z(Zm;hOc*Zg%Fw!oM zscc)kAQg7%ws0o7B2us;^i@uZHpIxLscw~u54SpC>SZ0$6~fEUMv=T zsomAekJCe| zAu!N~cSvwu>PPb{hrlZeR%If?dQf39K_^exS2!_*PT{z!s7&F2>V&~xpM2n7->P)? zgm#UM#I3Oq3mwO)vB(l}(oU;8K{5-| z*Cn`Gf*U0RNyLEU;T~yF67h~SAc?R`_GvOShNT$WWjIfU7iB0m!A6szULa(GQ^QTy z?lZwNYO^*oY&H+C7ci8}+vA*3#9razjM6+Pncrth>Fo8jtCOv>dSKwHoi+Onq$pt@ zJ?#%;n3_dEMhZyR;`VkW7*uEHF0a4M?RECK10JoJx;if#VJM(bv_A?1zZk4LS&Wkd z&bAZ9xhkNX((4H*bv`8+QaXm5vrG*MnX}3ym>KJwb$r}&mN-Ch&RInV!b>~7-UQ8E z@|6;N(`eorK>JoHjJAER1aC_Nda_y>mdkLt3@^x#WiVM8&NyNijZ|;*rs3#eNR1SK zr?cJb4hEgoOL{{geKvRW%r}G4R&}6g3;BDzN}u8#I^LQR5^og}%#JnQPB`50R&rp( zv=iKssEAXU!u7F5-0hKw`-=pBmmpIHl`5?4rv|%a__Yi#OB~cV!^=L1k9Imrf`Z9>i3C@K1L_W=pc;@F zKMYa?CRk(4!qpbY0TX=H1h<>uDH9aN zz{2g4t<)*K_J<$oRyIg!q~6X)b0YyuC_$U{^5Y_9hyR{|7!^Gykgz0RYdr3>5$X literal 8750 zcmX9?byO70*Ou6YrKP*1yE{arQ@R_ZSsDQmmXeTeiACvJkR=3(WkCcaq?=v3Sw#>5 z;p6vybI!f<+_}%(`D4z^oOx8tR9KCD9l?R_enG4u;siL4AXz<@N*Ibi=+ZQN=GZTU zHh-J8^^*RH1`_y%WSWi*v83QX`mf=fl)Q?xah)6P`!i8A(tCCwVVfm1!r?J3we|;K zMXz?fA7J+s@ce1qC;Yb%Z)`po<`X_&@`?tfA(qP1%uW6jVRlcI z_0{(yx;Lv5p>pF>aYXmvqC)XM>l^3A=eMVU6M++YB|di!H-+eWo!+_{r8(GfgGD25 zPR4@rWY6l+A3uC=li77chw~=p%DdENVMfelTnAtd^V0WlA5*tZ(fFnv_4LLdK>L?2 z6!b0s_;Z$z2ha8zr&g>{NQhJxq1H3){0cyv9GnityDG;2LUrbjpT15CT+BND2W6~FM%fi z49v8sdo$M#OndHf2NuYBcaDGm&2{cMY)2?>lVasYy;QteD{Qp}CHB~ATU@oJGOZi- z)9lM(AQLzuaK`9z<4?z#C?Lo;n*?`-4U;6>jg}q3#^UR_^GxBW&mxP&2#AG&SsCNSI*jckm;H&!N#Ln~p9C`^{HnkT) zHF=N%XAP(9w@5;|x?`DoqK0e(zxwxRyDvZ_-!H(d56ruAqq}OQBEd4C0YqT<5ki#ojmUU$o8seT`)bngc+BTW%W8FRuoZXw9y3G7Q$J z-cM+$&dc>?G6kh`zWCE=_a?P%O%ahHSK$Sh;24tJ)iI=jc_~OaF7Uid_4-cjFnu;! z#?irJ&xJ5`6Y_tw{k{VK+eALcRV%I;-Kv;C2AYqqG?Q(3khG}CS|75@H6UEHa*Op` zGGciW1=Qm|KKc3kT44=AGIR#=Z2i&d7;k>jv~VYK{jNd5(`6XfIkW{nEL~AzdZL|N zLZvlD1}pK=UYz)){&nJ4s^)<-wQg4J&b>Z_hI5fWMxF2OiAoU>KukBov5QDhOdu1z zk3WVPMddpt677wGlZed6xOR)G)91#2vBthqa|1u(wxV^BsrLGyM&md2yk4lcCP~V+ zVYYOnDWz=cd7_Y=Jf@=Ps+g|9 zp^^kt)?5uY-UIyHRMe$r-H^%Nok|R)lL;RfRTS5tO7eKr+x=RyQ~5agd;MOrBAhh( zlT@?fM2BS)@q__rug@5Fp<5*y`g7I-ypBE4VIlCMY!{LJ3ggDy`ODE$>FOMP85t&N zZ#XGdvqHey^Qelde-s---7ieY+DbN0NpQFXyzq%90kh$92(XX8jRVknnPqo=$Q;e#aTtMk4L=J&!;>^a=8eBuw45!B+5djDZ@mzclQZf@_-752&9 zItiyjRg8kT)>Gf4MD9?JpqYi!pO?SGu-BFB^UWi?F5+?x%V4%Y87cnF(ECA=u(+=h z)BM@+HZgAIij`Qlp;iUj{olbC2|=2}5_#-gKb;EQAUnr`j%trSaZ?_@cy=fh`mWcx zK4?FJ_aw?s=D5jnzP@gYQac}%qlZ+f4UbTA6IrH+dvU89*Al#Vq6n)CU+M6>sed{&`&i*vKv9d!L_a`x+wPPHXs>4A@iZ{|^*xd1QsVSW%i+wAJW`vxAqngAE z%|e(}xbNm&2nre|BDBr_AVeDSC(P9T{p6W(sE_G0$9Gr9()`LwsXQ;5A(wcZikW036lyT}~~!adJ@6Ceyf}MwkR) z;-Ge4+lhudYlnn4%eSLnQ6x+V zQFx%FyD!DZ-H?In;QD9lLV_)=y@7^{ODED+wq4x3X69^&BugfWn_NKa>=MsEBoW}OKl|D&Y>Hsg3T?~3y$l@#+IJvyq-KhF zjvYFXF7g5`NbX}WjA{K7GAPkQfA$55%sdtrUgSDfhm1oRj#UXX8D#slxJFnOP0zi0 z7FS(@X{X3j%lgbrNzs)m`(m;hG3J4Bq|fPgNF(e$hE&^Tlqf~&n@q3QKlh^D_{+8l zArnrXFp0K^6O-5S`gN7UnxrASsb-`gmzC_v6<)x#fIH%!2hVT^FA{wnLWXNGb>MJq zbE$FLY7e^)2W5Cq(k6Su4CP*9mE9fsJnOd3e%4*B-OORPycSjA5!xmjaQ!Zd&l30c z4*ze|Ge|XiBA;D8>g?xZ4CzPQ$QP;6WfV_Pq(k^uy|h?mG*3|70vKLG8^0Jl0Zb~O z%BmbmAYDL#IkQCj^WXj;V6iG+1+MsjJBaU`^!sf?zO|_KFr|G`t!83|Bm0i0y!HE~ z?^{?XQMnCKa=sskiOX4b$Ucpzt-(D~FUN2UH zM%N!Nb@Dl)xTR7bypwOg1mwM&k?%sn)|C`qFc-)nJ4r=P z!+35Gjn?ot9!jjx#D8m6iew$aP`aFmdV{6Mmqfj#@oT-9s3s1jJ@D7OX5pzFrCnC# z)24U-P!gdhQl=-M$@8%A*Mb+0eg>~2npea}J^~{mPfDdKD?hhYmao-INJ&VCw8KLr zB6=DFzqGD=VbV4pw)rW5dV2%59*A{lFIlB!iqo?;=f=L%xNX?%{!uRSr{%I?b2*YH zV&&tZWulF^G~Y_ZYc|&c$r-WN01I<-zIC2vd9L*y>_KpMG+S zUXDZ5m#-m*nL>N!vI6ecil_Q!j(zW+sQv3@vUlv$_&|9PYvHKe7(FLOr=O2L)=Vl{ zaII;1`u>$;U!Wkyl5o{2=FIvj|A!fRw(1SJ)qyAtp+<-AwEm1d$&tPlA(G1TrbF6) zLX+u1^j}G<7C44TsWlB*U@Qu!nu%Wno)`aKIn*~}J*Ebo=AimG!*n5KIv8t^U6L@_ zrTQ$@L~2iC8C`^RpCUDW#Dmqp0}ONtO!>s52!QJWQ4TTK{NC^Z&fS>i?goqx|LrJ& zp9R}EuzCp<&Tu=SKz3=sa61g73MufyYb;pw2?-k~nR_6+l2~j->*Ez4MZ;uJOn4G< z2tQ{0?nO|(JeryNb`=y+A|gy2QibRk$8j{MM6`NfN-s@m!fY@An%h-CnhC47gaBRb zQwu&aslyCiz<^Oq^9z78A6dxab~v;l)Hd2GCF9$S%a}BtD_M zaV3m&h?&+T@;2C(NCes6nR9G3OamLG7M*Y!pPh-f$2?j9N6LEef3cJtsO3r=#p6OQ zDw~xyToTW5T>-MK%l4ljgnkS(xUH-@Gs|zqtiL6EN7lu*KtCKe8)L`2@MsoYC80A9 zQ=_IhIY#}70}PSrUf1Fp5ZDJ0^&Bcln@kU7eXHAAzK<)9VrfTwPuUp3kkb7c%pK+v zVroxhXIOz*JUZ(4N1|!?R~+)r>od1gLAwlc=_{z0QekUADS2Hu5)g7#&ZHzU*-19O zR7O z5PPxk_?}dB?wUn1X+OOPe)t`9%PrRPu?enxup*QqGYvCNkS z>j$urEq%Wud;1xW9d|Ds7q>^rPxB`;Wn4_U7sGc$+Nd?kdiHmeFXexKRo8fj_^SST z;6vR@W#Tqy9!qu(K++sS_fx25nBxmHxw{Y~R8xo-U9mAkmDp0ywdqqOw#t4qO+8{N z#>kHx5eph^RwT#nZGPkW#U|k>o@In`*b|C1D*a*2tTbJ4z_P`cU&ndPY}TS9*ZQF^ zZGGO|=<>CzQ6TBz^0edjX8MvwZINcP=QqC}Oz-{U2-oMwQREDD&jdsJez4o}#|7CL zB`{O9OZOVdpGCBm{1*?rd|GYM>DX>2a2ZZ%Qk>x@J^9wf-lMq05)6dmQnq{%&X95< z?}1VFz}V2=iW3v)$~P}E2O`pKF-3&l2O=+08)!G>+U+ZmelzHvAfE5h>Mbu)*z%lj ze1KmvuvlE4zT*1+_x_cO0B9vWo;%!>7p7a<^4V3X}bqa zZj!8FHV%Ja|9hOh?S6y6{zAgBAufThQamT0QDgChf#_YED?1^pKsM?35D^i~J@S-GwdF@rYS4`Zb`+$8eO; z(TPn!C@!1OQG-ok>i+%@`?!VfGSpiDLXixG;R^{v{HPHt|L$SJz_P`-p+(?M;1JkD zbk&qdnK!{a#W5IEY>%CuSJ1BVsuuUo27BHJoIe0Dx^lU{XW@(gGsrBY3RmHc)o%Q$ zO~+^tM2mI8?(ffXRC@lu7^XAZ;?1?;{??m!xS`2km~L_~ceh&hubfyo3sp(+AapTb zL|(BL+b~^Tnv{vjfkku-<@PX+A_{*;Zg2ueA4i5|v$jO~i*dymkZ$lZX}l9l5z!jW z6V_9r{WvP7JFx!bSMn=EeD!xpE``u$?!T>0*&Ta}`!wq5J#SYi*u@rJ4}MGK+j@L- zkb<%)rQD(;NLPhdprySAHJEEzHA+M$dVepr#r9Oi%PNOUyJo$Gg6y;F^d2+jHy8fs zru0rCLza`b1uZ7*glv&(wSJ7M1r^}`)kWlyS?A^rxpp8QPxyoCL34WJU*j|}1qp)W zZwNKE{G#lwzcDOJx?oOtWO)%C0wB*V;$Ef_Fve&88}5dUXxwjxLv5o8mvc8d{j74; z1SnCrtBieu@F=*EsN)+LMr4)L!!m|B()|0kN9@ZJMOSj_6<@&j1Hl@N}IVLrX6r;+21tRowf~|wJ7H` z(sFr6C1r^=;lFBtTA_{SarTnf_5$;i43t=izy0H&&Inxofc1H|sBKoems73K zdTo+xS4}($UK)ImWl}<76faczAt|>jtc}a;VAHrr#*sCy2+NA5Au4jgbMv|FZ3CCt z(I%;cf0odl1_k$#lNXn!F>s)vUrO&*Tg^GBEn!r;ds-rV*n3zmV`Gsze3{zmSn@BVT zfW5G8O&>Co-(4x6*|AAb4s<N(_ zqENTDEpkml2{1~e>JX;e=_;b{3lw*PJk}$@qJC?cyt5X!*BpB?zdwSrxtVf;8pk7{ zpnj{%=*p8hA)Vhn>AdzCy9Xqo{bXD|5OAp2YLPE9)wii`{_E zM#d-`k~ad0q+{qsf=>8=fXh*5H}+|LbTuEUkw6m`*O&`-t+ec%_qXR%umDY(4Rq&b zSOcm}5W%KZ<;#h6s2fv^5!Dxa04D{i7=+oxE!dVKo)Zd1T1f|eMk`3KqJT%w4Y>wR zDD+g@luPgp^y8$tA@%fCW=OR;%z~$Tu?u~jqAxk4GANuI;hK$V(#nvg8^}iAjkuLt z4WDr#Q?k+jMhwLOMb-V>)%{50?*s5OnyP-5>izYk(b_3FDkX6$<`TKcxAVNRc0~kl zN(tua!3+HmdYKL&bNyqJ6yiGJg?=wdhx+)Ww&rH)iTe1n1%f(G;GDUqqo3enwaSHr zg#@vZG;wJGS4|$h$she#>1vg)K{X{L{8h-@8T7#c#IsQ4;%o-JF;ngWl$eZme%aq9 zj`~ao@%*fEu^}E^XeddsJ0904j;JzZD8!Kx55lr%_?UO48fN6)y#in}am&d0bab?m2>*_UrkW(&|;14PnS$8m-AGm*{ z5W+>M3oiFk0NN7b+2*fS0EloyguX-=x1t&?n=9y)<^*c=#cI~4i0u6mSR{}vMUM93 z4W2RQ*0^&cz&Th)Ka(IPn>wrwP_fh;C1s;vZCK(|Kpi@f;5VMY{Ss;aGB%KeClI9( z$ojeosx$}Qp$jbc7xFG3eEA?y?G3&1?W2_vOgKqFXAOZ@oWepyC4?WF91+hros-LWfR1gj?X9r? zxbx|#*b_cBjQFpgAW0HLPO%GcovIkl1n^N*pZfs>M1&&p==PSqE`>*WPQKZlH z8L2JkQ%i44Ekb-`>*VJvc;ChKVO!R-i-#oF5KA?4r`oLe6z7jVuirs<(ka3f3Fs$u zz}7G|Pg+2hrKnr1%c(ht*hnbCI7|$x++Ccj4 z`eR%~L;LeaS$wozS&Q{wS_ta~E~Ivs?DuK0WC9l14V?SY)3Rm72dJ9J{zzOG%P^$w zqW7sac#l?H52p&g~y|@aGX#adcDQiG!e< z4}ESl9W?d-RVGu~GZ4Erb5$fbN)W|{Q7TCiX}Hi<{V)9TJb7%nGcu_`ujhF(#jDkx z=lU#X!kOYm!kJm7WB;^!o~!>p{Quxar{}p~nppl8s zX;`&q<5o%CxXug75x#MQ7i~P$ghnQMpR@^$P4s50eX)@PDs_3wMmk>wYzj9$%sfn! zs~efm6nw_R_B_0d6&{!xm0?ztDIfpCM@9;IGb`@c$X~Pu#?pLPejR4sftcGU#m*5 zIklm(mj-&e>8FI(_bvQ9#k{Mvdn%otRE z@iHzJYYX-HpY!K~w1V0)_n8u$r_*N#sT{d?e6RE%(i~w1*p|RX8rvkIY?qq+a?=DV zG4HoI_{J{#nP>qzp$xPbT~jvNjINjJApJUy$Y2EXVJddmFxd+VoICo#tdK4E!^oz3 zC>&!$afCS6ZNM`~le9`ca`%E$E&y7X71Av~R(7s;sO$KTx2Wm($9q4}Lzg~Oc3v(& zIIg9KtbUt@j{ix^gH!ZL&)Xagd9LHnwDUG^Q*Pt2;Lt_Q6RTveGG{2|gUJ6qWB{An z{i5f(82qZDLqC4eeAv)vw1t&8uM% zp|B-@Z_8v_c}|YAmRy5&Vp`Bukep3E$s7GdUZ*}LXS&*4I&cv1N(^;N)X9sp{w=!D zY2$yx!G+DD6yaj%P2DT?zS|J4u)#a|uVO|FpB!|k<62SE0-a9?*C(*k7ZZmq)IC+D zyhjqiQZ_}zp)N>WuKcIO*lfCB z!YTDdPENNL={$fHRNUQtl%+!PzrbBGOx%{K(^?)li*)Mh^=X_A}|MmhDoh7KCzPC-;y-?m4G3lmX(Zq> zLk#eRRTA)V7v#OOlEKO|c;r_>yHpCwI7$e1QV}cn&f#^XPPZ7=DO61SyE%2*NZJv4 zEq~Z8uZ~Dj{lFtp02LWxjJMmMjk;6M-Yawabz7pned15#JQY;1QeUF|xewf^$=PdTms>WxuQg|mIN(JLaiGN`}^ndq3MqJRwOf=ArX_mYn`wDjt3MZ@|Z=T z&eIc42A{Lsfgj$G^~>v~3_k&5?AFyCQ7RuDO5E1l9Z|{$fZa;8D@ySI9<^@o{0E|u z;}*=eKiZ$a5E-*zPI&+=7Qb7P+c}d5Hvcz;ok&O5p(Y6@Aq~?mni_3MeeeAQ`vh@X z>hKg)gXdtlaX^?5DgSJ}l$p~7Tk}E%E9veM|0%mt$d?RnnIJ#9@stz+dco2Ra+1r0 z<=o~yB5`H^E5WjaVYVN624y0Ma%pD9u2`mI>(GWF|hVV!(!_?dpo6KSLbAKck{4CI>Js{YApbhfC?(y>1HDiUiZ=haIHv)VD0P z?;Uxdh5@VuIDNED@~ZIc*zlF44=@7W|H+`0LeMzVN@vY7R}anP$+`@OkS|I{gK@9( zWS)Yq8?s{2l^b?`S&{jX?{KAy{x)L4{qot}v|M|w^1US;jRjm!^pBUVyy^{wJ8B+Wr~q}Kgri1q#EWoMp@PfYNx zfQ?rS~#aUovNv2;EgqU!K}a&XGkh?zKQpYQtwTL)m3Ua zW5#o~Zz3Ppkx!w%#$8l>uoHN5#~xg2=xjxio?R)4oh`~O?0pIY=nZU|d6~+r=gtNB P^PV#biA{x%_2~Zq#Ywn+ diff --git a/test/lib/linter/snapshots/linter.ts.md b/test/lib/linter/snapshots/linter.ts.md index c01d6fc7f..973ad2dbc 100644 --- a/test/lib/linter/snapshots/linter.ts.md +++ b/test/lib/linter/snapshots/linter.ts.md @@ -4,6 +4,21 @@ The actual snapshot is saved in `linter.ts.snap`. Generated by [AVA](https://avajs.dev). +## General: Class.js + +> Snapshot 1 + + [ + { + coverageInfo: [], + errorCount: 0, + fatalErrorCount: 0, + filePath: 'Class.js', + messages: [], + warningCount: 0, + }, + ] + ## General: Coverage.js > Snapshot 1 @@ -92,6 +107,21 @@ Generated by [AVA](https://avajs.dev). }, ] +## General: FunctionCall.js + +> Snapshot 1 + + [ + { + coverageInfo: [], + errorCount: 0, + fatalErrorCount: 0, + filePath: 'FunctionCall.js', + messages: [], + warningCount: 0, + }, + ] + ## General: JSDoc.js > Snapshot 1 diff --git a/test/lib/linter/snapshots/linter.ts.snap b/test/lib/linter/snapshots/linter.ts.snap index 5e688adcf45fd1fd3fbe9e43f28e3e4f200f518f..3367654dab8571082aa599d9f6c581275676bdda 100644 GIT binary patch literal 8594 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 G!vFvt*th8b