PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /opt/golang/1.22.0/src/internal/types/errors
Viewing File: /opt/golang/1.22.0/src/internal/types/errors/codes.go
// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package errors //go:generate stringer -type Code codes.go type Code int // This file defines the error codes that can be produced during type-checking. // Collectively, these codes provide an identifier that may be used to // implement special handling for certain types of errors. // // Error code values should not be changed: add new codes at the end. // // Error codes should be fine-grained enough that the exact nature of the error // can be easily determined, but coarse enough that they are not an // implementation detail of the type checking algorithm. As a rule-of-thumb, // errors should be considered equivalent if there is a theoretical refactoring // of the type checker in which they are emitted in exactly one place. For // example, the type checker emits different error messages for "too many // arguments" and "too few arguments", but one can imagine an alternative type // checker where this check instead just emits a single "wrong number of // arguments", so these errors should have the same code. // // Error code names should be as brief as possible while retaining accuracy and // distinctiveness. In most cases names should start with an adjective // describing the nature of the error (e.g. "invalid", "unused", "misplaced"), // and end with a noun identifying the relevant language object. For example, // "_DuplicateDecl" or "_InvalidSliceExpr". For brevity, naming follows the // convention that "bad" implies a problem with syntax, and "invalid" implies a // problem with types. const ( // InvalidSyntaxTree occurs if an invalid syntax tree is provided // to the type checker. It should never happen. InvalidSyntaxTree Code = -1 ) const ( // The zero Code value indicates an unset (invalid) error code. _ Code = iota // Test is reserved for errors that only apply while in self-test mode. Test // BlankPkgName occurs when a package name is the blank identifier "_". // // Per the spec: // "The PackageName must not be the blank identifier." // // Example: // package _ BlankPkgName // MismatchedPkgName occurs when a file's package name doesn't match the // package name already established by other files. MismatchedPkgName // InvalidPkgUse occurs when a package identifier is used outside of a // selector expression. // // Example: // import "fmt" // // var _ = fmt InvalidPkgUse // BadImportPath occurs when an import path is not valid. BadImportPath // BrokenImport occurs when importing a package fails. // // Example: // import "amissingpackage" BrokenImport // ImportCRenamed occurs when the special import "C" is renamed. "C" is a // pseudo-package, and must not be renamed. // // Example: // import _ "C" ImportCRenamed // UnusedImport occurs when an import is unused. // // Example: // import "fmt" // // func main() {} UnusedImport // InvalidInitCycle occurs when an invalid cycle is detected within the // initialization graph. // // Example: // var x int = f() // // func f() int { return x } InvalidInitCycle // DuplicateDecl occurs when an identifier is declared multiple times. // // Example: // var x = 1 // var x = 2 DuplicateDecl // InvalidDeclCycle occurs when a declaration cycle is not valid. // // Example: // type S struct { // S // } // InvalidDeclCycle // InvalidTypeCycle occurs when a cycle in type definitions results in a // type that is not well-defined. // // Example: // import "unsafe" // // type T [unsafe.Sizeof(T{})]int InvalidTypeCycle // InvalidConstInit occurs when a const declaration has a non-constant // initializer. // // Example: // var x int // const _ = x InvalidConstInit // InvalidConstVal occurs when a const value cannot be converted to its // target type. // // TODO(findleyr): this error code and example are not very clear. Consider // removing it. // // Example: // const _ = 1 << "hello" InvalidConstVal // InvalidConstType occurs when the underlying type in a const declaration // is not a valid constant type. // // Example: // const c *int = 4 InvalidConstType // UntypedNilUse occurs when the predeclared (untyped) value nil is used to // initialize a variable declared without an explicit type. // // Example: // var x = nil UntypedNilUse // WrongAssignCount occurs when the number of values on the right-hand side // of an assignment or initialization expression does not match the number // of variables on the left-hand side. // // Example: // var x = 1, 2 WrongAssignCount // UnassignableOperand occurs when the left-hand side of an assignment is // not assignable. // // Example: // func f() { // const c = 1 // c = 2 // } UnassignableOperand // NoNewVar occurs when a short variable declaration (':=') does not declare // new variables. // // Example: // func f() { // x := 1 // x := 2 // } NoNewVar // MultiValAssignOp occurs when an assignment operation (+=, *=, etc) does // not have single-valued left-hand or right-hand side. // // Per the spec: // "In assignment operations, both the left- and right-hand expression lists // must contain exactly one single-valued expression" // // Example: // func f() int { // x, y := 1, 2 // x, y += 1 // return x + y // } MultiValAssignOp // InvalidIfaceAssign occurs when a value of type T is used as an // interface, but T does not implement a method of the expected interface. // // Example: // type I interface { // f() // } // // type T int // // var x I = T(1) InvalidIfaceAssign // InvalidChanAssign occurs when a chan assignment is invalid. // // Per the spec, a value x is assignable to a channel type T if: // "x is a bidirectional channel value, T is a channel type, x's type V and // T have identical element types, and at least one of V or T is not a // defined type." // // Example: // type T1 chan int // type T2 chan int // // var x T1 // // Invalid assignment because both types are named // var _ T2 = x InvalidChanAssign // IncompatibleAssign occurs when the type of the right-hand side expression // in an assignment cannot be assigned to the type of the variable being // assigned. // // Example: // var x []int // var _ int = x IncompatibleAssign // UnaddressableFieldAssign occurs when trying to assign to a struct field // in a map value. // // Example: // func f() { // m := make(map[string]struct{i int}) // m["foo"].i = 42 // } UnaddressableFieldAssign // NotAType occurs when the identifier used as the underlying type in a type // declaration or the right-hand side of a type alias does not denote a type. // // Example: // var S = 2 // // type T S NotAType // InvalidArrayLen occurs when an array length is not a constant value. // // Example: // var n = 3 // var _ = [n]int{} InvalidArrayLen // BlankIfaceMethod occurs when a method name is '_'. // // Per the spec: // "The name of each explicitly specified method must be unique and not // blank." // // Example: // type T interface { // _(int) // } BlankIfaceMethod // IncomparableMapKey occurs when a map key type does not support the == and // != operators. // // Per the spec: // "The comparison operators == and != must be fully defined for operands of // the key type; thus the key type must not be a function, map, or slice." // // Example: // var x map[T]int // // type T []int IncomparableMapKey // InvalidIfaceEmbed occurs when a non-interface type is embedded in an // interface (for go 1.17 or earlier). _ // not used anymore // InvalidPtrEmbed occurs when an embedded field is of the pointer form *T, // and T itself is itself a pointer, an unsafe.Pointer, or an interface. // // Per the spec: // "An embedded field must be specified as a type name T or as a pointer to // a non-interface type name *T, and T itself may not be a pointer type." // // Example: // type T *int // // type S struct { // *T // } InvalidPtrEmbed // BadRecv occurs when a method declaration does not have exactly one // receiver parameter. // // Example: // func () _() {} BadRecv // InvalidRecv occurs when a receiver type expression is not of the form T // or *T, or T is a pointer type. // // Example: // type T struct {} // // func (**T) m() {} InvalidRecv // DuplicateFieldAndMethod occurs when an identifier appears as both a field // and method name. // // Example: // type T struct { // m int // } // // func (T) m() {} DuplicateFieldAndMethod // DuplicateMethod occurs when two methods on the same receiver type have // the same name. // // Example: // type T struct {} // func (T) m() {} // func (T) m(i int) int { return i } DuplicateMethod // InvalidBlank occurs when a blank identifier is used as a value or type. // // Per the spec: // "The blank identifier may appear as an operand only on the left-hand side // of an assignment." // // Example: // var x = _ InvalidBlank // InvalidIota occurs when the predeclared identifier iota is used outside // of a constant declaration. // // Example: // var x = iota InvalidIota // MissingInitBody occurs when an init function is missing its body. // // Example: // func init() MissingInitBody // InvalidInitSig occurs when an init function declares parameters or // results. // // Deprecated: no longer emitted by the type checker. _InvalidInitDecl is // used instead. InvalidInitSig // InvalidInitDecl occurs when init is declared as anything other than a // function. // // Example: // var init = 1 // // Example: // func init() int { return 1 } InvalidInitDecl // InvalidMainDecl occurs when main is declared as anything other than a // function, in a main package. InvalidMainDecl // TooManyValues occurs when a function returns too many values for the // expression context in which it is used. // // Example: // func ReturnTwo() (int, int) { // return 1, 2 // } // // var x = ReturnTwo() TooManyValues // NotAnExpr occurs when a type expression is used where a value expression // is expected. // // Example: // type T struct {} // // func f() { // T // } NotAnExpr // TruncatedFloat occurs when a float constant is truncated to an integer // value. // // Example: // var _ int = 98.6 TruncatedFloat // NumericOverflow occurs when a numeric constant overflows its target type. // // Example: // var x int8 = 1000 NumericOverflow // UndefinedOp occurs when an operator is not defined for the type(s) used // in an operation. // // Example: // var c = "a" - "b" UndefinedOp // MismatchedTypes occurs when operand types are incompatible in a binary // operation. // // Example: // var a = "hello" // var b = 1 // var c = a - b MismatchedTypes // DivByZero occurs when a division operation is provable at compile // time to be a division by zero. // // Example: // const divisor = 0 // var x int = 1/divisor DivByZero // NonNumericIncDec occurs when an increment or decrement operator is // applied to a non-numeric value. // // Example: // func f() { // var c = "c" // c++ // } NonNumericIncDec // UnaddressableOperand occurs when the & operator is applied to an // unaddressable expression. // // Example: // var x = &1 UnaddressableOperand // InvalidIndirection occurs when a non-pointer value is indirected via the // '*' operator. // // Example: // var x int // var y = *x InvalidIndirection // NonIndexableOperand occurs when an index operation is applied to a value // that cannot be indexed. // // Example: // var x = 1 // var y = x[1] NonIndexableOperand // InvalidIndex occurs when an index argument is not of integer type, // negative, or out-of-bounds. // // Example: // var s = [...]int{1,2,3} // var x = s[5] // // Example: // var s = []int{1,2,3} // var _ = s[-1] // // Example: // var s = []int{1,2,3} // var i string // var _ = s[i] InvalidIndex // SwappedSliceIndices occurs when constant indices in a slice expression // are decreasing in value. // // Example: // var _ = []int{1,2,3}[2:1] SwappedSliceIndices // NonSliceableOperand occurs when a slice operation is applied to a value // whose type is not sliceable, or is unaddressable. // // Example: // var x = [...]int{1, 2, 3}[:1] // // Example: // var x = 1 // var y = 1[:1] NonSliceableOperand // InvalidSliceExpr occurs when a three-index slice expression (a[x:y:z]) is // applied to a string. // // Example: // var s = "hello" // var x = s[1:2:3] InvalidSliceExpr // InvalidShiftCount occurs when the right-hand side of a shift operation is // either non-integer, negative, or too large. // // Example: // var ( // x string // y int = 1 << x // ) InvalidShiftCount // InvalidShiftOperand occurs when the shifted operand is not an integer. // // Example: // var s = "hello" // var x = s << 2 InvalidShiftOperand // InvalidReceive occurs when there is a channel receive from a value that // is either not a channel, or is a send-only channel. // // Example: // func f() { // var x = 1 // <-x // } InvalidReceive // InvalidSend occurs when there is a channel send to a value that is not a // channel, or is a receive-only channel. // // Example: // func f() { // var x = 1 // x <- "hello!" // } InvalidSend // DuplicateLitKey occurs when an index is duplicated in a slice, array, or // map literal. // // Example: // var _ = []int{0:1, 0:2} // // Example: // var _ = map[string]int{"a": 1, "a": 2} DuplicateLitKey // MissingLitKey occurs when a map literal is missing a key expression. // // Example: // var _ = map[string]int{1} MissingLitKey // InvalidLitIndex occurs when the key in a key-value element of a slice or // array literal is not an integer constant. // // Example: // var i = 0 // var x = []string{i: "world"} InvalidLitIndex // OversizeArrayLit occurs when an array literal exceeds its length. // // Example: // var _ = [2]int{1,2,3} OversizeArrayLit // MixedStructLit occurs when a struct literal contains a mix of positional // and named elements. // // Example: // var _ = struct{i, j int}{i: 1, 2} MixedStructLit // InvalidStructLit occurs when a positional struct literal has an incorrect // number of values. // // Example: // var _ = struct{i, j int}{1,2,3} InvalidStructLit // MissingLitField occurs when a struct literal refers to a field that does // not exist on the struct type. // // Example: // var _ = struct{i int}{j: 2} MissingLitField // DuplicateLitField occurs when a struct literal contains duplicated // fields. // // Example: // var _ = struct{i int}{i: 1, i: 2} DuplicateLitField // UnexportedLitField occurs when a positional struct literal implicitly // assigns an unexported field of an imported type. UnexportedLitField // InvalidLitField occurs when a field name is not a valid identifier. // // Example: // var _ = struct{i int}{1: 1} InvalidLitField // UntypedLit occurs when a composite literal omits a required type // identifier. // // Example: // type outer struct{ // inner struct { i int } // } // // var _ = outer{inner: {1}} UntypedLit // InvalidLit occurs when a composite literal expression does not match its // type. // // Example: // type P *struct{ // x int // } // var _ = P {} InvalidLit // AmbiguousSelector occurs when a selector is ambiguous. // // Example: // type E1 struct { i int } // type E2 struct { i int } // type T struct { E1; E2 } // // var x T // var _ = x.i AmbiguousSelector // UndeclaredImportedName occurs when a package-qualified identifier is // undeclared by the imported package. // // Example: // import "go/types" // // var _ = types.NotAnActualIdentifier UndeclaredImportedName // UnexportedName occurs when a selector refers to an unexported identifier // of an imported package. // // Example: // import "reflect" // // type _ reflect.flag UnexportedName // UndeclaredName occurs when an identifier is not declared in the current // scope. // // Example: // var x T UndeclaredName // MissingFieldOrMethod occurs when a selector references a field or method // that does not exist. // // Example: // type T struct {} // // var x = T{}.f MissingFieldOrMethod // BadDotDotDotSyntax occurs when a "..." occurs in a context where it is // not valid. // // Example: // var _ = map[int][...]int{0: {}} BadDotDotDotSyntax // NonVariadicDotDotDot occurs when a "..." is used on the final argument to // a non-variadic function. // // Example: // func printArgs(s []string) { // for _, a := range s { // println(a) // } // } // // func f() { // s := []string{"a", "b", "c"} // printArgs(s...) // } NonVariadicDotDotDot // MisplacedDotDotDot occurs when a "..." is used somewhere other than the // final argument in a function declaration. // // Example: // func f(...int, int) MisplacedDotDotDot _ // InvalidDotDotDotOperand was removed. // InvalidDotDotDot occurs when a "..." is used in a non-variadic built-in // function. // // Example: // var s = []int{1, 2, 3} // var l = len(s...) InvalidDotDotDot // UncalledBuiltin occurs when a built-in function is used as a // function-valued expression, instead of being called. // // Per the spec: // "The built-in functions do not have standard Go types, so they can only // appear in call expressions; they cannot be used as function values." // // Example: // var _ = copy UncalledBuiltin // InvalidAppend occurs when append is called with a first argument that is // not a slice. // // Example: // var _ = append(1, 2) InvalidAppend // InvalidCap occurs when an argument to the cap built-in function is not of // supported type. // // See https://golang.org/ref/spec#Length_and_capacity for information on // which underlying types are supported as arguments to cap and len. // // Example: // var s = 2 // var x = cap(s) InvalidCap // InvalidClose occurs when close(...) is called with an argument that is // not of channel type, or that is a receive-only channel. // // Example: // func f() { // var x int // close(x) // } InvalidClose // InvalidCopy occurs when the arguments are not of slice type or do not // have compatible type. // // See https://golang.org/ref/spec#Appending_and_copying_slices for more // information on the type requirements for the copy built-in. // // Example: // func f() { // var x []int // y := []int64{1,2,3} // copy(x, y) // } InvalidCopy // InvalidComplex occurs when the complex built-in function is called with // arguments with incompatible types. // // Example: // var _ = complex(float32(1), float64(2)) InvalidComplex // InvalidDelete occurs when the delete built-in function is called with a // first argument that is not a map. // // Example: // func f() { // m := "hello" // delete(m, "e") // } InvalidDelete // InvalidImag occurs when the imag built-in function is called with an // argument that does not have complex type. // // Example: // var _ = imag(int(1)) InvalidImag // InvalidLen occurs when an argument to the len built-in function is not of // supported type. // // See https://golang.org/ref/spec#Length_and_capacity for information on // which underlying types are supported as arguments to cap and len. // // Example: // var s = 2 // var x = len(s) InvalidLen // SwappedMakeArgs occurs when make is called with three arguments, and its // length argument is larger than its capacity argument. // // Example: // var x = make([]int, 3, 2) SwappedMakeArgs // InvalidMake occurs when make is called with an unsupported type argument. // // See https://golang.org/ref/spec#Making_slices_maps_and_channels for // information on the types that may be created using make. // // Example: // var x = make(int) InvalidMake // InvalidReal occurs when the real built-in function is called with an // argument that does not have complex type. // // Example: // var _ = real(int(1)) InvalidReal // InvalidAssert occurs when a type assertion is applied to a // value that is not of interface type. // // Example: // var x = 1 // var _ = x.(float64) InvalidAssert // ImpossibleAssert occurs for a type assertion x.(T) when the value x of // interface cannot have dynamic type T, due to a missing or mismatching // method on T. // // Example: // type T int // // func (t *T) m() int { return int(*t) } // // type I interface { m() int } // // var x I // var _ = x.(T) ImpossibleAssert // InvalidConversion occurs when the argument type cannot be converted to the // target. // // See https://golang.org/ref/spec#Conversions for the rules of // convertibility. // // Example: // var x float64 // var _ = string(x) InvalidConversion // InvalidUntypedConversion occurs when there is no valid implicit // conversion from an untyped value satisfying the type constraints of the // context in which it is used. // // Example: // var _ = 1 + []int{} InvalidUntypedConversion // BadOffsetofSyntax occurs when unsafe.Offsetof is called with an argument // that is not a selector expression. // // Example: // import "unsafe" // // var x int // var _ = unsafe.Offsetof(x) BadOffsetofSyntax // InvalidOffsetof occurs when unsafe.Offsetof is called with a method // selector, rather than a field selector, or when the field is embedded via // a pointer. // // Per the spec: // // "If f is an embedded field, it must be reachable without pointer // indirections through fields of the struct. " // // Example: // import "unsafe" // // type T struct { f int } // type S struct { *T } // var s S // var _ = unsafe.Offsetof(s.f) // // Example: // import "unsafe" // // type S struct{} // // func (S) m() {} // // var s S // var _ = unsafe.Offsetof(s.m) InvalidOffsetof // UnusedExpr occurs when a side-effect free expression is used as a // statement. Such a statement has no effect. // // Example: // func f(i int) { // i*i // } UnusedExpr // UnusedVar occurs when a variable is declared but unused. // // Example: // func f() { // x := 1 // } UnusedVar // MissingReturn occurs when a function with results is missing a return // statement. // // Example: // func f() int {} MissingReturn // WrongResultCount occurs when a return statement returns an incorrect // number of values. // // Example: // func ReturnOne() int { // return 1, 2 // } WrongResultCount // OutOfScopeResult occurs when the name of a value implicitly returned by // an empty return statement is shadowed in a nested scope. // // Example: // func factor(n int) (i int) { // for i := 2; i < n; i++ { // if n%i == 0 { // return // } // } // return 0 // } OutOfScopeResult // InvalidCond occurs when an if condition is not a boolean expression. // // Example: // func checkReturn(i int) { // if i { // panic("non-zero return") // } // } InvalidCond // InvalidPostDecl occurs when there is a declaration in a for-loop post // statement. // // Example: // func f() { // for i := 0; i < 10; j := 0 {} // } InvalidPostDecl _ // InvalidChanRange was removed. // InvalidIterVar occurs when two iteration variables are used while ranging // over a channel. // // Example: // func f(c chan int) { // for k, v := range c { // println(k, v) // } // } InvalidIterVar // InvalidRangeExpr occurs when the type of a range expression is not // a valid type for use with a range loop. // // Example: // func f(f float64) { // for j := range f { // println(j) // } // } InvalidRangeExpr // MisplacedBreak occurs when a break statement is not within a for, switch, // or select statement of the innermost function definition. // // Example: // func f() { // break // } MisplacedBreak // MisplacedContinue occurs when a continue statement is not within a for // loop of the innermost function definition. // // Example: // func sumeven(n int) int { // proceed := func() { // continue // } // sum := 0 // for i := 1; i <= n; i++ { // if i % 2 != 0 { // proceed() // } // sum += i // } // return sum // } MisplacedContinue // MisplacedFallthrough occurs when a fallthrough statement is not within an // expression switch. // // Example: // func typename(i interface{}) string { // switch i.(type) { // case int64: // fallthrough // case int: // return "int" // } // return "unsupported" // } MisplacedFallthrough // DuplicateCase occurs when a type or expression switch has duplicate // cases. // // Example: // func printInt(i int) { // switch i { // case 1: // println("one") // case 1: // println("One") // } // } DuplicateCase // DuplicateDefault occurs when a type or expression switch has multiple // default clauses. // // Example: // func printInt(i int) { // switch i { // case 1: // println("one") // default: // println("One") // default: // println("1") // } // } DuplicateDefault // BadTypeKeyword occurs when a .(type) expression is used anywhere other // than a type switch. // // Example: // type I interface { // m() // } // var t I // var _ = t.(type) BadTypeKeyword // InvalidTypeSwitch occurs when .(type) is used on an expression that is // not of interface type. // // Example: // func f(i int) { // switch x := i.(type) {} // } InvalidTypeSwitch // InvalidExprSwitch occurs when a switch expression is not comparable. // // Example: // func _() { // var a struct{ _ func() } // switch a /* ERROR cannot switch on a */ { // } // } InvalidExprSwitch // InvalidSelectCase occurs when a select case is not a channel send or // receive. // // Example: // func checkChan(c <-chan int) bool { // select { // case c: // return true // default: // return false // } // } InvalidSelectCase // UndeclaredLabel occurs when an undeclared label is jumped to. // // Example: // func f() { // goto L // } UndeclaredLabel // DuplicateLabel occurs when a label is declared more than once. // // Example: // func f() int { // L: // L: // return 1 // } DuplicateLabel // MisplacedLabel occurs when a break or continue label is not on a for, // switch, or select statement. // // Example: // func f() { // L: // a := []int{1,2,3} // for _, e := range a { // if e > 10 { // break L // } // println(a) // } // } MisplacedLabel // UnusedLabel occurs when a label is declared and not used. // // Example: // func f() { // L: // } UnusedLabel // JumpOverDecl occurs when a label jumps over a variable declaration. // // Example: // func f() int { // goto L // x := 2 // L: // x++ // return x // } JumpOverDecl // JumpIntoBlock occurs when a forward jump goes to a label inside a nested // block. // // Example: // func f(x int) { // goto L // if x > 0 { // L: // print("inside block") // } // } JumpIntoBlock // InvalidMethodExpr occurs when a pointer method is called but the argument // is not addressable. // // Example: // type T struct {} // // func (*T) m() int { return 1 } // // var _ = T.m(T{}) InvalidMethodExpr // WrongArgCount occurs when too few or too many arguments are passed by a // function call. // // Example: // func f(i int) {} // var x = f() WrongArgCount // InvalidCall occurs when an expression is called that is not of function // type. // // Example: // var x = "x" // var y = x() InvalidCall // UnusedResults occurs when a restricted expression-only built-in function // is suspended via go or defer. Such a suspension discards the results of // these side-effect free built-in functions, and therefore is ineffectual. // // Example: // func f(a []int) int { // defer len(a) // return i // } UnusedResults // InvalidDefer occurs when a deferred expression is not a function call, // for example if the expression is a type conversion. // // Example: // func f(i int) int { // defer int32(i) // return i // } InvalidDefer // InvalidGo occurs when a go expression is not a function call, for example // if the expression is a type conversion. // // Example: // func f(i int) int { // go int32(i) // return i // } InvalidGo // All codes below were added in Go 1.17. // BadDecl occurs when a declaration has invalid syntax. BadDecl // RepeatedDecl occurs when an identifier occurs more than once on the left // hand side of a short variable declaration. // // Example: // func _() { // x, y, y := 1, 2, 3 // } RepeatedDecl // InvalidUnsafeAdd occurs when unsafe.Add is called with a // length argument that is not of integer type. // It also occurs if it is used in a package compiled for a // language version before go1.17. // // Example: // import "unsafe" // // var p unsafe.Pointer // var _ = unsafe.Add(p, float64(1)) InvalidUnsafeAdd // InvalidUnsafeSlice occurs when unsafe.Slice is called with a // pointer argument that is not of pointer type or a length argument // that is not of integer type, negative, or out of bounds. // It also occurs if it is used in a package compiled for a language // version before go1.17. // // Example: // import "unsafe" // // var x int // var _ = unsafe.Slice(x, 1) // // Example: // import "unsafe" // // var x int // var _ = unsafe.Slice(&x, float64(1)) // // Example: // import "unsafe" // // var x int // var _ = unsafe.Slice(&x, -1) // // Example: // import "unsafe" // // var x int // var _ = unsafe.Slice(&x, uint64(1) << 63) InvalidUnsafeSlice // All codes below were added in Go 1.18. // UnsupportedFeature occurs when a language feature is used that is not // supported at this Go version. UnsupportedFeature // NotAGenericType occurs when a non-generic type is used where a generic // type is expected: in type or function instantiation. // // Example: // type T int // // var _ T[int] NotAGenericType // WrongTypeArgCount occurs when a type or function is instantiated with an // incorrect number of type arguments, including when a generic type or // function is used without instantiation. // // Errors involving failed type inference are assigned other error codes. // // Example: // type T[p any] int // // var _ T[int, string] // // Example: // func f[T any]() {} // // var x = f WrongTypeArgCount // CannotInferTypeArgs occurs when type or function type argument inference // fails to infer all type arguments. // // Example: // func f[T any]() {} // // func _() { // f() // } CannotInferTypeArgs // InvalidTypeArg occurs when a type argument does not satisfy its // corresponding type parameter constraints. // // Example: // type T[P ~int] struct{} // // var _ T[string] InvalidTypeArg // arguments? InferenceFailed // InvalidInstanceCycle occurs when an invalid cycle is detected // within the instantiation graph. // // Example: // func f[T any]() { f[*T]() } InvalidInstanceCycle // InvalidUnion occurs when an embedded union or approximation element is // not valid. // // Example: // type _ interface { // ~int | interface{ m() } // } InvalidUnion // MisplacedConstraintIface occurs when a constraint-type interface is used // outside of constraint position. // // Example: // type I interface { ~int } // // var _ I MisplacedConstraintIface // InvalidMethodTypeParams occurs when methods have type parameters. // // It cannot be encountered with an AST parsed using go/parser. InvalidMethodTypeParams // MisplacedTypeParam occurs when a type parameter is used in a place where // it is not permitted. // // Example: // type T[P any] P // // Example: // type T[P any] struct{ *P } MisplacedTypeParam // InvalidUnsafeSliceData occurs when unsafe.SliceData is called with // an argument that is not of slice type. It also occurs if it is used // in a package compiled for a language version before go1.20. // // Example: // import "unsafe" // // var x int // var _ = unsafe.SliceData(x) InvalidUnsafeSliceData // InvalidUnsafeString occurs when unsafe.String is called with // a length argument that is not of integer type, negative, or // out of bounds. It also occurs if it is used in a package // compiled for a language version before go1.20. // // Example: // import "unsafe" // // var b [10]byte // var _ = unsafe.String(&b[0], -1) InvalidUnsafeString // InvalidUnsafeStringData occurs if it is used in a package // compiled for a language version before go1.20. _ // not used anymore // InvalidClear occurs when clear is called with an argument // that is not of map or slice type. // // Example: // func _(x int) { // clear(x) // } InvalidClear // TypeTooLarge occurs if unsafe.Sizeof or unsafe.Offsetof is // called with an expression whose type is too large. // // Example: // import "unsafe" // // type E [1 << 31 - 1]int // var a [1 << 31]E // var _ = unsafe.Sizeof(a) // // Example: // import "unsafe" // // type E [1 << 31 - 1]int // var s struct { // _ [1 << 31]E // x int // } // var _ = unsafe.Offsetof(s.x) TypeTooLarge // InvalidMinMaxOperand occurs if min or max is called // with an operand that cannot be ordered because it // does not support the < operator. // // Example: // const _ = min(true) // // Example: // var s, t []byte // var _ = max(s, t) InvalidMinMaxOperand )