From 567c96adcf84b5d3292c94bfb623b2093da05fdf Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 17 Sep 2020 21:01:56 -0500 Subject: [PATCH] code cleanup --- CHANGELOG | 4 ++-- include/onyxastnodes.h | 2 -- onyx | Bin 478044 -> 477588 bytes progs/wasi_test.onyx | 47 ++++++++++++++--------------------------- src/onyxchecker.c | 5 ----- src/onyxparser.c | 33 +++++++++-------------------- src/onyxsymres.c | 2 +- src/onyxutils.c | 2 +- 8 files changed, 30 insertions(+), 65 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index f895af03..5baaf7d9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,7 +7,7 @@ Additions: * Added println to core library; print followed by a newline. * Added tests/ folder and runtests.sh which will compile and execute the programs in the folder and test against their expected output. -* #private_file for specifying symbols at the file scope +* #private_file for specifying symbols at the file scope. Removals: @@ -19,4 +19,4 @@ Changes: Bug fixes: * Fixed error message index for struct literal member type mismatch. * Fixed freeing non-allocated memory when generating documentation. -* Fixed alignment issue with struct members +* Fixed alignment issue with struct members. diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index d86b9405..838b87e8 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -164,10 +164,8 @@ typedef enum AstFlags { Ast_Flag_Global_Stack_Base = BH_BIT(8), // Function flags - Ast_Flag_Inline = BH_BIT(9), Ast_Flag_Intrinsic = BH_BIT(10), Ast_Flag_Function_Used = BH_BIT(11), - Ast_Flag_No_Stack = BH_BIT(12), // Expression flags Ast_Flag_Expr_Ignored = BH_BIT(13), diff --git a/onyx b/onyx index 9975660a7ff32b15b7aa1feba2eb5878776fc296..3691c2febeca9090994741ee6603f419eff94555 100755 GIT binary patch delta 41828 zcmZr(2V9g#(`Og%MCk%|fK&xV1p&n_iYST&gEiQDi50uCfr<(uMziV=HTHtBi+b3x z#NK1U-WBXMYHZ)^?sMnr_ulV)z1jbNW_Grh=izc~uFq`dGc%aZu0N~X%DOKu>8<$3 z{B33BFVY16<%}7BajBQU&EHo2MbavXxe#OVQ8kN*3xZkuE~SJk1Kw2>&205JktM0O1ipa zt->|BZX{cebiHbluAtEg8a=oVyJ2IXv-+`rZ5q%8p{%yf;ML+)v``zTDQBayiXP|Kp*%Vy`FXw_@g7??79%xzx57{Yn;vXwZ@2t^wSS;=&>mFB&ZKjzpM$_GA6iQ5WXW3H(dbdF*g~Ys z441X$V=s9}8(FY-t=K7~^KQx}$_TYtU^(2(3+Za ztze^(7M;Hy>xA_Cda^UwN@J@f8f{yj%|P0@zNGtT^bXB=gRN{2(teTBc{`21snHEf zvu8-xpCIYd8vR+L+Ye>F#SC7VwIp4r(H=N{c~9LsfHgxpvbU_Y(Hb42(d&D&@klpo zFKMb(%OIqA!K~`D^+t)^84Wy%MNcyg1t#)bj@XE~5&fqn-nxu7F ztv%4_kVULE(nH)O-9e-EdKr0@?rb2^C5@6^q|tsFeX~1Th;;RF4MeV$sm#2VM$c%+ zP9c3~lB9cTp>@^h!4udQq|a5A^k9u1uF+-tunP7DudjV%-oaXDTBXrhk69>=sllC^Th!NglEp%Z(CbhRHQt~wgM zw6^zTJzksGQZ>5wM>Za5!)Hm)B+`79Mz8$B)*~IL zlLhnDy2DA0c5!4kke;G-2Xo|)G&;tXIXW7=eBVpwjWlal91px;X}PR6($jZHdXAQN zS&a_Z#Rek1ZMUTBVK3pIIvV|9KU;|ODT55Hm1M2DY4pM*b_(fZ3DVj;fTwBnJ`eWA z(a<=|Q(Dj0^3KudF+LJMuVs2v!?WBZ&KE)cxv1gCyjUkEgV#@`BweVvdx10`HluLB zBkfF5MlaLoRqfb%qz5KTx}QcLL0YV> zkJt^QQ?#inNTc6q)@6G#M;C+FW36Y`)@Va9S?-%tS#6|uw~)>&YIG%y{-V0L9-z@rGi*WYIO11 zY&_C&t)z3lALF0f8tqn>tw%b)k)&-k+5sm#K4gDx#%>^OXd>z9(%7n;MlWr`9Ni3F z%i<;7UZa1~=*ID^Hqu+QYU!rY{WW?;BQ_9eV}i7vqU8-5O>sd-dW*Kl%GIp5YxI#e z>=e@NwMvyftgP}idIv7(NPlW8iM5*bTaCWko>g!+csU-C^iVBtCkI*XMx9tEqC4(6%F?X+YV?Xo_6+Il5IKO~XrX0l^t@Zl z*I@AK+)(CyM5DK8bap$|%+R3mX>Ip=Qgi-6qu0HO76x~4!XctRPNk&ZlW~h65Xj z^bu|26RcV1YV__pY$4JG(b9Q{Mqfu-Y(8SyDWrd@F6m|({YA4*s=>Y>om){>V{fe@ z$~nmbw~J;KJPh>D>NyQO`no5F*OIa8(Mt)<6aT8F;NA)zt>8Wi9;e`1j)F~4a9>3~ zQR2x~xJFv}DMS~|0GAB$>3p@9`0k_OT;E?H@}DFH4^Z$?3SLsdQxv?Em3g;}3TX-v zs2I#taH`;03a<4I!7f&C^FqLhYy~fE_QUhvs1Rk$1b*i#xVejPI#0pND*8t>oHu1T z1wW(U zZy#HY;8@r<*veVK!xh{^!6Ovh|62xD=GBzb!3thU=xgmCt`NL7%%5rsZtjqri`H-+ zXrx&gzvC2rT>CAb1O>;X)AC77RvcBfz*bgW6oV=X-bcZ!DtMCOr<#I~QuNK23!F~T z@MK=v8j3-hVqiWab9$zN*HZMe6g*177c01Vzr*Ql1;@4a+xXk45Oowsxe6Yw;CTvO zSHX`cxSRncc}BtOS@bdge1)iQA#fBZxSYl%S)kwz6#W+p-cZ5cD|noOTh;DuWtD&c zZ-Pb&Vao~paJ;dQ??fe+7VLTjV{%J{?W0(k4=$WeQt;M_{wM`+qu?nD z{V>@N!Lui$+ZJXpc|vG@q1XMcsQrmzFpIAjMZY@EUlV(XAiQrJX= z9n7vHJ49joDC|(?P|@f)OkqbU>~I!^>TT!mf0J|p|5!X8oBg)Fp+(Q}c)<}2)C))Cny z3R|GCOIaqe=Gzdi^j>3mNtd(T$gWUqZR>vPODow^WLGJyhr(tvpQ=XB)e0M|uz#_5 zWY;KcHI3!@u4UtpU8k^ditT!~4%rO~o2alG+4ZW%Mw=A2kHT(N@FWG#QSea;zJ*0q zGkR`S*ffRR#s(m3QrIko&1HWgYktzem9iCf2Rm8K*l4F>o2#(96g*GEdClxr@FR-8 z6AP_wOm`4+kToc5oWdH}I%E$jY@)*c z&8{PRNMZXZ>|y3m)986bVMi(KQ5J>lF@;T2*yC&fvL_TaOJPs4KaoA9u-OWGnw_j^ zY;;Cpa~1Zig6AptIR!tW;Qz4DT1LKQwU>~n?9Rcv3d&$W%oFBSHP!oE`QGYbA%!SfZ|Q^9X3xR-(#XgDv? z8;P^W^-CB^zbkDOm*G%Gd_@K0*H`y)@0fRNUBkyYrL7vJ?~lvS-T#*>alNbmvgU`~ z!7q{MY3<2uW~?`j`<<Nf=F*6 z^+qXFNZGB*(I-=c&u6WI=msfyBc&6jvt((I!%S zgregl=F+x4InHjkE5Qc04I-IB+Kf_ykY1xyTu71a%8}D-aEB6Xbh{wJgtQZ-HbVM@ zlBbZO+6U3ADI(wT?aR?DDIP?$ofLH)%26YV9qQ1_$wF^>hafs%iYJjwl%i|LAnGN> zRw!N@FLdXixKN50QS2f`W2YcmQi_Qv-Ww-$|3Go25Oc0{GLT~S{q$Co-dj0M_GVoh zxH5+>`NbxVk^SiTFFDV<)F$+19~Ravmsak>x^y?NuiZM+Q@v6AkKXCUI`n8ud-r0d z9%ZeY_R>RFpq}hg4+radGGWwVFRjumC%9){8}BRld^Rp4z923=Ha{*s{!Cm(>>2F+ zsFBx|t^XymOk<%Cdqj*5u5&0ZQpgVqMJ%$F`kFwwcB|h+HwsGh_THE^kxedHVPZHMNZ+UA%sRWXB|h6q`3*~;^;-xn7~Gk`Gb!AiS65HV8LU5qZgXx zY#-}NXkI)!HEt07Z4aw6zBPT{l+7JKh#ua}iX_jme$hk^OU6+*mXkb*wrRqurI_fS zjoHf-BemJZicMHu;&LO5DSh(BFJHgLWyr5dc^)|bMek&%Cak2@+OZK6+tFQd?A*k% z)N=>>JTaCwj$`#F{XwrMvYV6oQr3_)NsS5^n`^GMAwo*$8!qfhap|Y9rxe6CWUEta zQ}>3fFtrtZ9?R-XPN1J-*{sPu=&?5J-Q=aTd>b}@%1Sz|HLEwZ9erMpEt*=EHr<+Y zZ0cu1V`JFS^ezVLx)^V!ZgC6DEd8+Te|74zI@2B-XtbcVH&>|I(JVTnF}+iVP0xt- z?@|XfGA5^d#=?r8TtU_Sy-v=Pj7@|-k7A25x6*1+tj&!1bbc-Ndd3$zzh=(s-#QTc zt!vP`=o@R+@V;TQrn=sWrDPe4@SR@4nCgtpil?=z=iHe!(1zBk%v#KCMxR8orE_Cw zb|iZ+cbwyEzHWYeGtK8#ID{v6Gu|JKdRE55sdxO zjY0%__eVckE`s%#H<7Lk&ncMKiO>dNIdKaD3H7hQ2L3t3X>BOCj>myY&`ALsJkO6g zE^I@CLs`MRh#XiLLFmEq?AW3#TCP0nvG@vYR*pq4X=y)rzPVhz=ZikyyDT#;=}bqI zWgbf>(pSN3!P4jU`?AbhrYxZ~s0`b%tQGaE&UDM?8fKNo+%t7))lkdaI44W9P0MT0 zfYR*g@+?~jLXC{rnX+`NS4^OH0&#p~*(L^lPdKuFSDv?yDW!*m3%UUIY}H(vRgz7~ z9!RT|%=tGvkVMg?w*V=!E~Ux`SME?yhY?=+8c^>iV-Z)teRDaF%W=!LDz(Lr;3;?AsVh=|T_o zVsnUnK{`4V&3+?Y6#RxUCpu>)Wl5$Y?9$d#^r0JDwXH85lZCRWh&z(s(xriDncI(nQvK#}(SdIj7#v zF~oPEBPwL-R`{cDb0z=9u}KI03q4uNX#;z;s|Ag7WDRzw(b^8|%xZcGW-Pg~0 zQBghI4zTuNnfoT$*%uW)N8!}Lo3jL~vVRWUXPa|!zZbEIEuy!A8&`>U@ib5Lm44W= zTJ$W!JP$6R=k(ZN{n@pHb?gd9nsd9!5)K>bO&zQAcM6Tyv3-B1SYNf#!;JuR-}z7m zU24Og9BOO7cevSN>u?d@R%`al;d=Bxceeg;Bt7QN?j7z<`?<45M?TXBgvA~8E#BPi z`#AKJjXDZ+9LaGxR+U&E{HkM3j+?B#zUp#xC(01&{DoCGStWFhGv6B?$TeYC;;SHb zZ$#wuksu^qw5I8o3ub)Lu~{cC(ZJ6+eNQbUH1%Unu`?YAUHO6aIlF=CJ}}R7!|B5J zZ05N5ycwvFI#&)*go8XmzH?xf7$!< zE_;S`h^}v18@tB@m8>9A1*YfF>hJZi!t^idYNtd_YyY! z->}UW8xueF`C^pyx!1b6sd^9A`qESy{hHmllwNd;jqtKx$CC2L8lqq6xX;EqUI*Iz zJN6Z$mpjw)uUPlXO^bGAKdTiD5~BWbJW ztid&3uVqw(Xz6#uo@3;Ej2va-uX&MC?2l`y^y)L_cfB*M@r`KaQcjcC$*6SXyQs>%Wg$1p(9jIl`bH4dXRxt1{GF#;eW$aMt-Vp7%w#Wbl&3wW zG2fd8+H@MLax;+@d%|Yk^e8^{YY?wNOL*Z=*p8ciC68a=3vv8RIf1`WO1d?JGq^A~ z9V7L42S)FZa*RtcBEUwB5As_*xTC13UU z{kE4^uQXnDv1f8C@lt-%XqLtzZzodwM{LGzkCNG+zmK!xBdr=giYgWB`0jm+lWVtVfZ4yuyu$h}&& zW6`CkpO=6gIPks~H9lw2_uXmBDeUL_T>`$|`1-YwUtSa*=lN#p7Jc}xVn(z4`}OGc z`^@Ko7a72+J@~1}hriIo$_n;f)VY=rdyVwiH)xsn{yWRLY}W&Cmj&O0eV?$x2Q|Gq zOca$|kZb*YCD)(GYCo(_C){JdK5R-W-D8IzmL$L)J*+{7v7iD!T5AGpP*8@JPiBJ( zg6%K2GB@t&R-$oF-(fooM$$ufSY%;In{p{%zp{u$29{J-eIXg*j%(B28W_au=f|Q`h+^ckyiq!)4a;ReSP?ZFm(=n_gyLUX`OM`K;XQ z7SubRjep(1du<~*Nn}or<|R^WcU)q(UN@jaF0tS@4QRPbEa^=J`sgBCj9)u0vNLZg z`pvzlvpRa9bzJ)WxCu}Am1|u3xc3&oiUqt4DcxiUw$8WljPu9g0>5EAtJnf;T0H0- zE`W<{=-YwC52HJTZ<%4^MfUn_C$Bz*=6c!4XA==3U)}0lWc~i_Mju~br~hqK{}#Tv ziN+~t%*QJ~Fsy69%VsMOF`0u z8=Hfil!qQOMZA;t1;g#S#GM`gP@=P_vw|7tuw?uxGfo(L?(;EmAlDYpL~;``9}zyb zGIc|RWZp!0a4SEw%CMdE!P+U6;h3EC!Nw_dnhle6^W6Ffc))_XuwBDG;_zf`A-PO*ny;z(;2{`E9nabgZ3 zWr^3E@+6M9%o#>%({m^0Y#}jp#)&!aNfh}Bsu0qYP?$u>PjvrrI8R73(hW*c@)Icz zL-C95KL!UWqC>#dnlvV5pp!MCmyW^)YtoEPJqlm(n^c8nHl!ategt;fkj?fR_)$SD zS}UrFd2PiZn5845>|HHHQ9+QR5TYm7tiAu%LBdMCKa?**7L#A#L=iHM)P%;igV?-zqgN%T^ z&g3$EvJ>XHkQ#L3PPphosuOo`E>8AijsH`e45y!Rp|LAzL|<-)Ij$JVlI?IG)1(cA zxnW*zXVU_m+KX*h8Fvy*3vwv5{oa56nqTo-rLL&pYN~|Erh*`u#ff1|C z4|;i!{zW%$5w(!@5nLRI2fX&cYUmBVo>;PvIgsIrMR-@r;;@u-xCt70Nrxq*!xGY= zH@3sEjj+p`93VPK@gW`DZtds8;M)|MyFq6KFI|Z%So>mDKSKpytV?_N)t6+_@$13X z4@(jXiGHM&eUh&^<6gd^?s~y#KQhaHmya3W>>~o&yarPJ$sOJ#0i-6qvj&z2kS@d@ zbR{vq0dS-wNv5B(O^r&Cx3<^v?H2(3U`k{&Rj0ts?h zh<}<9ml>PI=hGO-sX$thD6kD9)#-tSP^TJJcH1y)z6lFqP8g{`CoF)!!$@U%>`z!< z1^ba}I9ZETkQYvp=KNrk0vSf-;8Z_Nm1h9`Uyi3vrf@ZLG1Q*EOAHg#?+X-CRI`&bf2cT9olu_TCC z!{%60nshK-jwLUN^`lfBbdJL@e5WA^#9mk=j+~;MCqZZo4zqvb$V@sT71A1^gU=I9 z+Z*9vp?fAkwI*aK9X%1QH6cNiO$6(vq%!e_>P^veEOco~s&K8WrpUgV0DGHav17nB zo|FyQmnG|d4X%K)_bft0)_rFond|;kGW3ZjUCMKwuTPsT7UL`yq2F1=!0UJd4!`pa zmZ-tB=dz;G#=-h#;sEij$QTj=M_ZAqIBH32(txfT35{A~z1<%L6Izp4Y|O*0NmbfQBn@C_LpUv*XqPjB|RRuU$NR2tl-rM z5ll8h*)o`5OAfvG{y{WFhx;O!B728oZT@C)v>2`M|5%#C1*y_e7D8FlQQi!5sPFlX zOE`LVPdaMO9R)~7urZN11{)((Rj?MS8iN2mV}-EPA$kg9y^mHQRD1^>v7z3_i&N5ZCd z#2-iDxppM1%v~&mma~jF6m4WX#@#WOxb_`UV#g&(n9*Q#kL~?B1DdxdlgU8SrS?Qm za7S~a18GVhB|%6>5)|-ypw23n2UA!?-gp$G%gFhj6RWyAM06rC#`UOz&Srm47K7s* zNd!%}4PQEvQm&ETv&#qJDj3>@)bZetRnhuZ+IOy-41yCKNjRN#3wC!Ro-WhAr=Jgm zhn;Y)s%-M;Ol)vw1)nY?m9Dt~%eoN2{aVegB#s`v4xXJ!h-p(-5~ZVudYNAIB7-Sq zJ)!$AWKg|VDdt*=K5wq2Dnk00PcOsKsuoZ zOzuk>(zI@HsxR>_zi2*pd?2@>WqglDM2_!)Lb8l+aPNof)PnBNw;!pV@ZUUhCGca6 zcImdDtBw!Tnb;v`;u!)Lpdbrf5CCk_>b9KRkCH-!wSepZI`te-eT_o2dSz zhWp9R=nOB+gt2zHRTQT8C%(bqW`~m##R))+rq91hu4qM} z=^zr>>3j$5#(hK>c)2+l&)Yaa@wQ0!@ibna6#et4+vD&^%=5 znw*m1WjNG5CBm;{jaZ-Zk`}&hmFc??lsVBi{ z2IjO9frl3GPi*nsNf1hmru={RH<`78XC# z>2-@S`ex93C@EiVe|zEm<8fj5t@I^j>F<8SnbYckBC_h5!@Z%n3m$$P0)`RS@Ghu? z<2D*ia9n)5PLM8QqzlgC`4@+I1oRk222j=x{uxGUI8Qw$vKBnfd5PdNoJ=t+X@hZP z>iW(?(%kQ_w}I`$Nn6qaTu0!dZ3A6LklAFA>E98g0wK{5G>ZIg$ZRPL$Ieg;kG6!9 zqsV;XZTjU`vWk#a;4+4crk7hn<`~iyx9iWxkZyQjXfc+=27Kn{iHsB;kDTJ4NI+bd zWH{W|56ywN(mxX5A@!^@yA9jt$y8n^~H^<`y zv2i@HBbQ-GGGZoy`IDfz$;3#<<$-51@%L<>$Ma6-BO#8QjmvO}o3uX|o4OvfNXAW} z4~$AC!Su~u*gc;3({p>dUoW_kOj;JTZpw4kb1m^G37O4@2S z&fsYiu%ARi=-wu2AEx@Zs7#X&fF~yHh^=JNloXe z+eHjoJN>#HlD7~884QtA$TPc`I5dydN;V2PD;=f zu|TGgF*Ls}jGuI@N}}79E8?~w;Jx&4icz%_|MDw_`vh?@}$j*T0D=oAP@`eO7k7riOATuJl%OS1} zzo~29+@Z@Kq+`IP6+ienBmvD&?h5H=XeAk%>pW7!wc$4#volkdd8DXKK=~yO})Dy%s!7ogWa(>vR;sqXs;)R8XP#}0|PtzBJ!y@8kJ3v!{ zfWde;O^VX#q17T%9FI!97m<*nOG0$mb9DbLf(46knfqrE99Tr^(HV=tb}=bQ`!0fz z#W+*>Eczj0dkJU}e_1Fa-W~$$7UM**Efi9g;L+G0RxBY~+#i?4Ofq%XdZH8aSS)#Re z%$4d4lh=@VM8oQQkcJB4N znqfgzsJ#y7&YFHY2-|@Jv}JAT;-Y)OcL3U!1}B@kuw@7w-%%UgyoP*#U@TeU)A?H zP4M71kHZZz1)af--mrX5U5_zl9iy6U^O0 z@Vz$ZzLo3<7@00qcy-Cit(OF}L7A8?;;HRw#7yL3YuODZ$r&VA8u*J8-whfOuxuXf zaAMHIZ`+86+f#lZ{cbCJH4S!d!>v`QZh|!_CmCaBi!4dnayuszK&%5=n;^hYGu}BbRj)9zvQb9(qFf9uh?_xd;bzwhQ>| z#;c^`g~Y){JVEE@9C;P-k2Ad9Lt@=_rJy}u_xalZ{19C*+7X)WCH)Q4?L`JTjg<_J z*u$y4ID>pjhX3}Gznow2y_2Pj-5D?E@IM_)NAvIojJ~j!wN$Pcy5d(?{K7{!Bu??z z*;Hje9zaQZ7=3_L_L*ZVH1UwiHEBad^O!B1I6%tK=Jv8wW3OWkHQJ54sC+wFLtUWf zL9C&jb};`S?o=a-ps!5b!C1vf5(NECdfCt7+a)nNr{Zn)-^7P*EC$>DCfjI!Q5bj# zx8@Nr`w(I7K04v!c0I*MTc~vyS0*>;dYF9T54Dbv4nEVYQIS9S6oHS9QS|p(!=)o6 z0iP-aA0;)4-qC9(R(SbT=M7VjlG${BH}E+|e!+(uQ;*>)^pwKoW4MN9Q}8`b+WS8q zjP69Zw}te>WYPitIF1+HR&e1sDNPG0d_GRfxYe%1W8lrI9r+8^Q>b==bZ@r$s|}A; ztK?m^l~`|Z3ipkimNUYFBy--s3+acvcUwc@3A~lw{sjgV z6fO~OKMBi)wG_(;Q;*ZclhDH-A^8j`$*)h(;I{cqdw6^XpGqA055}Lx?e*ar!p0I@ z!GEy+EO|oz`Tz^g;qKVV^!GX9LY?>YsdzI95_l@{} z=14hRBP$KRJr^~>7u7F(}j8zca=((7W(@soV`Kz(5+8k)=lhQ(G|?m$&y`t0y}S#RpswI=2eR? z(8_fzHcgw;GIcXTzqi0!mRn@3b4DkGEloVGlW1Zx+!TJB459eIY1v)U(dl5JTJ;66 z@dG~h{d|)Yfv|fxXQVxXX7_NNY71lUk-Bv1L)d!{_loVxexKvohw$hgDN&@M*wolU z*axiod>jyT$^$uQrUd_B@cQx#FJwYRF8f$1r!=}?j@H`kOQ;y!i}uV>g5bFa&RVF>uX3T|A7+-GD7 zeSA#}441+F-}5ez`W%~nFl@mudiFZpe~uGk_6?};f<*aUzKWG#Zc#oH&Gb{M!w#ms zzz2&xA@2og!XFAayd=?n@2&`&IPEq#Q}@wVu_+7vUy{m2T(5}{1C3tueaA}@ZfL~K zGIjG*<;hpT%#SPwSy&-|lR!tDI^s-lt<)PuxCD`?bOry{8A?_{lb*{j- zIuv!M!4=+|wZYDaf1-0BBleA0$79dPSi+3vSS+gp zo(%pY9q6O;aP2=*3!f)@e#9HQzv95oJw3;fRwCAOVrYzY!YLa(GWg9|N!@&= z9p?=kdqmcw$whIo_xPMkw6yUZ-}~^r0G|SK<*uM$^9gVx^p+vvn8^CDvtl>>7!;#4 z!nrNq1z9>?lPEdkRDsTv`cl(zNTzhRyX{foAlpfCP~X(tng$Zjd5#>!Y_)d6gt!|k z12b%>!TAN>_gMVjsUf@nmBXeJHnb=)3_2t{S94H2uQ>#db+i_BI0Bn+numINS_bcS z`{`*r`r9!$tf#%{%EJ&|ghtX^2ccIH>gT@APB_4RZs}W}4#K=5vkYTEv-!#9Du)Usdw>p#mttnKkPXG`L?ta-F^T*+tL;|6(tm<)v%YR7p3Lu zxnR8F0S!)<+VfU?!i6Q&m8rrDilxVwLo($F58pc}%ANBz$=9kS?{E0GC`PsF0ACoI z*E_#YR6w9m)E>$???=qCj?EHpyqi6S{XdTsa*EMlTDV`XG-5?INUw`*McHJ*T0lKJ z8t5Dv$>TI{F#RIs?!$<$o6%5*u6zS02Eor2#WOEF7TiDr_a654bQ``+cfg*OarG+Z2(p(~B}w`j#6#GX2X(UDG} zup1UR(mfGX`EE``5-Ox0hGYI7tRn4w2tF@l?|~Ukw0^{XzKIiNxkCEEtosjU^@N!b zyqxKfu-u)ZDUz*u_*zrE;h3c~yAqQE&I!Sf$5aE6kJBdmhYSOmJ+i zqCP;wvJ|W=c)QRcblVQO&d#7BW6NB9Z3padp})8X;7rmC-Q%tId{RHH`nHD`Fx_KMgCU=#|j0fB8EET0xB(c1L2u)>UGVU!1mgciArD z!?zH=)f;aATxl>q9UJUQ6Uw_I#UHYVVd43bkg0oV#g+N;e_lxD2k4F9i7WM@&vu(^ z-RNF|S9eF;X|m1dtvKH%RHO#iDPID4E|y9vwao@*?8JTM>7Mvv-k%0)Y?FX(R#*lf zKA21T69)_m(2N882Z_xZ@f_fPo^1x2a^S84)P!P2>PJ83LU|)Ct53l)7fyvRBXx&C zMrw;MDvmNz#>a^VZAIT~hi)D;7T?0l_MjylM(6Mv;_Kky0$;e~ffLs`S8(v8sUbO= zk@}yfhaMllFX`pYu-lVHQwV~up0t{^1D3pQ4?Lnq@5X=d7PK22^rA`b&iISNSg#*H z2y@w8@IhM%+S@RDqo7PGb!HXE8 zWxU{(!T+3xSGhdzm$!rvAfz7#?}-iA3Gf7CFfH|^#Yx~y9A8+_=WmsaPjJjKUNdYU z-;eeQw2_)yRn6${G{0Iy4}UtK)X+7;XJ=J&1IH{r2f`bFoNo8ofo}j!3_SIhFnIDN z@LT6E_MO2|3Q7Ld2%7?Eb$o{ZIDp2NvX@pZRI50SS+Xet?Mu=CXAi#Vw9MAUeB>7F z!UkAU5*y=B0{cqRp6m9?1rsXcuyIR zt{nJB0XAbD6z*4muGk8Nn-ri62No+pXAb;EuK3Zd-@ZVPUP(x`A7zPA-q$bWo`n(@QKdRH5~ zxZeYvD^Q=vV7@^W_P#>W><=|cKZYBuiE?)>w|E5ymvd*j0kE+G_O6C-u>uYC_T(xP z^7tDDaz>fScdWwW6q8>VZAYAziO5pId08?X=0I9FE$KN#g7VD-0iWJ59{AhNBDD@z9`k@LB|MM-FAwIJS7gg4x@fJ@9l}8+2j!Pu1JUA z1bw9q`b~$|GDPmh~s$Yo`{6K?9>hHFVZ-z5cL^SEx+cI>^9pH3jY9P~L zRwNC_3+w%nv_7tlMJm&IWHl_UOv~e|$EPY&qit1tX)J@ZuYx_Nrm031ddAveo{c%f znKojEH-*%oQIyOv^{qt*P<&jFUz?U9T}_{A(>^6={(k7y4zrmDYueEhKDzyZVhyi{ z%cfkz@9yJ+p0DBCVRn0Z)~7xKe3@@%Q7LIr(VHfAzzx5H=WR3+rFOa<$X|9gt?Ni@ zIXLY6$Bb|KN8)zl$!ur$a8SN+>g! z*2eMKYcQ=9F#43pA(3~N^vQXA>Ehcb@i#{NkrVci!8F7vRH|vuuKeK3U>ZUGgzzEw z=f0_69Ex-G!xK<-C=Du}cLFPE!U674zWIk`8A^>5PC&$P>I(CQ(g6JXj9qAB9djZO z_9o%`F)0N9?AUe~s(t1!O5rB@0JIxMOOpjKVHllDb;n`QP->u0k8vlF#00&DqkYyf z&HfhPv#`y>sgbmVW5a26>Uj*>52Hc!)lpN(2wIi+>|Z6@E(CXZvUwLHBAd4@q>QBX ze3oe{p%#@17L_h=Yb0&vFyaueF8rTE|3k7B6Gl-tf(QGaztSo$69jE;uc3#u_S*L= z-9S3P;L-FXnE`diV0+bFZqB?X^ch225*OHoxc#AJX1w4OJQ#xq(EVUH7TaqQG#*P6 zokkzv0hn{>51Yo~0H_T&$I`Aidg_j&HJp}UNB*Y5VA?pk++jo>2Swm{THxd93`!1~ zZl+Lcg1K~^NZsJw1o{h3HYiv1borCl7=J}_^lsH7W;&6MNS?d^r^!hClPw${XHouxdL%QjL@=kj~JszX~LKasNVc}vO@xXyVgPvr6uDW`IImrJrR7Q{wL zjOWC1DT^Soq@2w0=~5oYzn0dRH|l9pd6ye{)+4- zWl=-6Ql8E;_=IB#OFxUtFQhz|%lD)_kIVT|UdZJWQeMX8Jd~5sIGZQ7NMaqAv!%S5 z%L}BO!{wP$-ooWnDR1TSC@F8_a(^jr=W-V*@8)tVDd%xHPRa*SPA;q^6Gu1^F6HA~ z#w$TyvQu34kn(9R+e`Tjm#w6HmdkJO_aRXK9G45EEbwbm7Pe=ke3I)N6mqgoBytsE zts*a0n;iqZ?G zPZarKyhX}ZxN;Zr|1=Eh=()T= z%Eh=mQ_9XMC3+orzvDU4Yl@h%#b=AEjmx9 znRQN@Ml7Tmwq&GyAc7d2JG>@D!S#PCX9LZo) zj{|ryM2?$^9j4wodZ(i)_ylbfXm_l-w8+pA82f@Yw;N&sRzN-nN?3qKrpTAnyNulj z7qd-CXzyX&*6t4rum|>XpoRr#XDa1s9o7zoTTmY2|0@4-|ihYq8BoO8S@}{q~5^uWdX!D#BFdcW{>H4NbH~gkAJxmV_HqR)Y)h>8) zpupAC-J1gyO)dO5aMRIrD}V!KO{W97=|xkAGTfEFscAW$K54ofVzc9}&y0YQvh4VC zJ8~mG01;W92BwY9x^OR_)FM)+3jPkM)aj0h)TwUzTu#@;#y8$t>a?}!gdieyK2g({ zFr6LoX+Wh?4~r81q@bqc3CqHD=Y8f7sWQT%G7J&vr?F{vgzl1&Z;pR9J)0CHMA@E2>kCrp1_eh2|<3kJZ5VSx|>kr2hcVq|M9v9)?|dK$VA;ELe`pI zP0|@D*-aZAI{I)4uEBqJ@0BUe`MJVa!XhnhTcbUp3t%cLM84jeuyu;hx)U|O_C=dAZ> zIYin{ve;HcMA|x-P8`&Apmt+Nnr(-eDjn8&+T!sf{ z7GKewv5)L-2Fi68g@E6$>J0Xux|!iu-6VYMs?O7Xp9MB)ukN0 zPu_LK-`tIW&Np>FBoW5l)Rl0qg>*(bXURT1*@v34Z|bIbkQ$~+?{!{AyPw0%xy3`G zlRlK*ECW-W^nPT&X_b?{rw$(!I=Jftlk1fXuw2X4;PNwmcaW)z;PM?Q2Xk4wmhB2(dzhu+t2 zqc6rTZfZKga}RwPyGa%x1Ohzu|JbedF>5r#rwjTH^kpP;^wQU~v$GI?!7?v>L%hU# z?4_?{m*#CY2!ygF^rh^3TY!HnL1GDgNql5Gri9+x&euY$fu$w%P4H6e85-EFE@Ac% z0p8yFFZkwD2_JooeQz%_em??!@zJ*+vtXAGmg1?Wndk%eee|U&?Y96mA~+?UJO8u^ z{{~ijl=DKK&xiRVE5=%1sOhW!35QFDFGk>Nv7Zgwef2#^82I|>N88)`nf39JCLf!y z!%y#Pe}Y$zpJ3m_0@U@8iepOa`&rYk4p2~5-wJPM zqRQ#_;A=>q%IUk3&Csd5-q$_b9=(|7yk$#8pVQ+LSuFHhL3F6zgVcq#q58>WH{QzXeaQ;=f?(BU#kf9Bmg0pV`B(<9|^Pu&-j5Ujhr!*gN}w7;lss`{8^AeI5H*PUae%>Le?ya+toR z4u3&laHKwlIGDCX>PJy>#1vXpkH6~D&-ALgKAh5aMPNaU-Ve6d(N{8!sHHDyP2X5s zpcf>;^jEb01tHWlKSp1K670eC^}}o`I|ktGbsxRK5ub2w$I)YjzY~PmJzC@1IH7SoeZR59nHK1PueF;xrze=ZjjtiU&OYwG^CIcr+4!$ z_PrY!tF^Rx_7Ub=N0*o3O^9IZXKeH7W^&fxpN7lKn920j7lZ)Mg3?+mXJvCzq!Km8|i;qQ!o^QM*M)_-s+PVeP@Q0m~GK|^4{qXMtKF`p%Bs)#bf79QjcEi?U zU~*0|)%;z*&YF}q70%J0p=2-Y$kI1)8~PX(EFnC`mqK*b;Q0r}dIKi>p*P@zvG#x9 z6unxc=9AxT8tjAIdHT}s^DG)0F#xF%Ei~#6 zD&V!HJxiBE+&RjM55?A!Dd<{VduI?2mmH5mypYRBTh~8gh z>b*ekMC~dpM$e+Sfu;!y^-GAc<^molzy2Jx(98{7=nqTU5HC~9#rjoV_)|Y0cVJ~l znQHCSFS8+AO}F;y4-@({1y=9VFQD(nLBsv}mh|PXrUm=;-LP>?Uk~Wx3F!mzf9o?1 zEt1i%xikfCt{8BJE(%`!tq&@5X{4Ex#axAb8d(o%Qc%F}Q8RQ!q1GX+;(E~S5Ki}g zqtHf_!5wBE(r=<4hd{l<`eDQwau4G|ZiM{9`c5wYjuoy89QkczhVJWFQ^O;AVol@5 zK;z^33jBNYas57gz)rSx*Sg@h;%W|m*?qd zk)}Ky!qed*{a+HMLwVX?q+juL1)g>m=|?;r#?w|`F#oSXcQ_Evffx9TB42~9@N@)E z-xBF_JYA8e&xrIfp032xc_O`^rz3fKqe$=I>B>CKf12iN&}N>l!qYQF`Y)cY%F`*y z0$9p{Y8*%s>3KYjLmg{Cq<`n>8a$mK($jdFPpO5`B0Z6(Yw>irNRQ@eoH?)tM0yBM z*XC(wk?zaWb$B}2N&wwB5Y2%X_$zQ)ykg zs_!_CpA}57GFMPXtvE77r`3(v0mGtFKtu~_EM5>VgsQa^g;Eg;UJ@=kMAUE%0%~Ah z08uL{RVEl=B6NrmFDQ%=z)M@1#yXKPm7UM`ylZ{Xoj>^W^*P_(mBVGWV4)lY{0$S${9D zAz&_$uaI+EJVYPu*Wg%@uYs#Hkom7xptC$wPMh=OtL2ory?l+FG-u1#$~ERJ`8qja zJ~-O-Fga#!lEeCF!G@?6jVgv~pwhfYE|tUP?eg_<$h=j)K`t`a$@(u24MFodxl9h2 zSIalaIp&pexqEzf1*}-EVuYMIs1;ZuSIBAe0(qpIGS8B4mXqe`@-1?Wd9pl8PM9ak zqvcqOBV$xVt*FvKm0W4AkZ+a4=2CgA95N4;Zv=xmwOK7rKs= zPf+1lQJ{f|a^^o;fqeOPIc@GN-yx^WdGeid(%fFYORh0z%eKM^bCw*{{+RjTs6fOi zpQIvcMbjvEV6t3kZj`6UVe=k&svI(Jm+zK~%vP_Opct~UIUM*h}uB5{J30c&XS*y z!{&pxxPDR&nVaOLa*?@FUM2_4d*tPEz`R|4O3rZ|Idt+?6)RLYHc%%&Eob&?1=h*W z$Z7Lx`B^z-UMbheN%L~~Il0EXL|!Q;TKs|>+wUI#(8&ul@S=*S4a|~P$(1dBNe;Jo zwH#`>!?kje+3xREIoL9vlmq7Jy8qYYoc-?c-JkJPtW)9Gz(jeyocUV&tK`4QX>*1A zx|}kX${XaQd8qt`Tw^YgH_8cfvAju+MXcznqE1EBTqyrtt~3|Oo8_=MUw%^#nLEo{ zr`ylK-9ci-XT|-SIYm8!{+7kPB~;=BL7n^GB1#K z$wBihIV}gw)8*av{-0yTWEFcf;Fu@Md*#emb`8iM$!T+i{IQ%em&%{WN%K(oQ@O@m zBG=0abFtiD@Bc9?`l@KuK-63)e!rxW%8#A#=X=e<2sO_)9rx?yUVya=@G? ze`W7ZIaah+@ox<{=4|-{{Hu z9iLubMD`~K?x-!@;oH(WepA|aTD&~%`yxJMw=dW#y0>ihFHSoyp4jcnZFM(D3DZ5y z+v9$HKRbd#41|R_ASTQQNnsJl2ni6_>*6sG5|)CfumaQwH6Sh2f}D?BtN}&BdQd5B z0tw+QkP_bWFz;jc>mAGm)wED96m*@E1KY`ciYZD1GT|)-B)rg+eXZCQXn^&)S?gQq+&2wk=sP6eQ za}FQy9c!NZV?lMdpUy>`QyEM)5BBI*UGUREC&XNaxw4JrG+bzniJ}@O|#D!lR%0a!+XfxN_~+rnPMAW}wl1+2x-YPq{;_hJZHv ze7VOQ;52O9{ikQWy+BX+mHV}R+z&Q-r}v}%_N+t>?DKXE;reSH_>Mk$SfBMTZ+_`v z{Sox3!}>P#2M+7odVRzRa1AyeIENcta9DpVedS?&F8%z&`i}I;!}ptm9wKjy61pSK}}lq%XrG$szP(@HjF` ze>e~Rz=+&3YT`(N*|@)~x!;4E7K_j1Cma8KMC7vUrD zKw>uu^vA;9!g!6I0wT|x;Q2bVKx8At3M`r-;fo)=$Mf*%criW$KaGEnU&epHuj8)xZ5;F-zvJwrIFo?}toI9T-{3!b zblQIBJq3E>(e_*1-J{bD>y1v^h4@b%o$GKu?Ev2M@+O@nyIkUyi@RSK#mQmH5a* z?uzUAA3|}g3U|8-cfvz)KE4`v$JgL<@wNB@d>tN)hvDm7>-bKXVgv)j@mO4nBlvne z9otXCZZ{X-$o>TO9+u-Q!#A=2`9o!Pe5ah^6$VD&*Kq~jf=A+Q_-35Ox8O!R3V(%1 z<8Kc|ymPChIKuJHZ45pdSK$u$Rvf@%@fr9w+zpSz=iu>pP=unI;tD(ghw(%_8sCoZ z!gt^q_)feS--TCUZ{6MNFG&$)U^AYCKfsgm9y|p%;i)+57v2iqjoadTa7X-S&k^Sg zifIh=#P{O!@N^u)_u*^s3_Jqgk8i~f;5+eyW_KNCP{bHmh-czucotrZXXAJ99Q+xc zi(6-TD>4sv#Bo{ALwAb#4D`ki;emJoz7j9Q!|@_K20x4^;YaX&_)*t(9W10sFz^&! zj9e0|)TSxOHo9 zMONdZ@n3N+eg${IYj6;+#f3QXD#dveNqjMW4G+QVa4BAoZ^3`Vq`+FuUvj7R4tFq;LkmjSu3jxb+d@%&x^0?;9nRI=lU;*By+uc-9T<3-zWEyP2~4v>*KxKbs#&D zr;=xr7mVdRZoMx2`|ZY3v>QF10Zk6cVXL%u@3L2f1gNj8#MdENUtT-%ME`dkvzGR( zttj-5Yt^c{*G;wVFW5HvXXoS}UHfu>f4{7(nN#E65AgpXd+Mh1?Sh)RDc<7(e~;{G zc-p4;I5}45?T^*PSIH~ziaPg$r2IXOO5$Xl&wk%K=t6(sC*_QvD>u7kcFWD<`!DqO zXqVYmW~YiCmMt?7Lk1 zp1p9%zU%*-bKV&z|6iZ`G0*vapXWKx*_Zd7xqlM(JB!^jd~ia{LcjG<88_7??9cFN zV&ciu2>xY^0nfPEkK=|ZtO>V)b z9rzu7ig=i5T~{0z^eHU(*YIHr3OO;P70^Aq2s)ev1Aq4L$*dzo$W)*ghX}f^U`>J) z`ax~79q31O1s$l+aSClah}<*N;u=HAN3$4QuR4iPX56qd#oD}(bO+k=x4gS5);sHv`9ROF+mPFBRIKMK))_CzA)v#<1^u@| z?^dk)mXKFKXZ(!h#8rhpuh0wH6OS@l*9yI(I1#SU&lEbQCTRt9*U2LCy$Wq>DhlQ> zg-iu{)L21BL2a?WnhL#p9N7+ZXf@&7N^~KUZVH_kM(zQDe86C(fpihn!wdSr7 zyp@?Km~}^T0qEfm`f)s0aqgqgS9+44K&QMEv=7u4`)j4pN9&QmvRYT0`igUMj0EOPCIPboP90K}qZQ;C&Lf=>D7gfnCpdU{c zbQOjEq0pm76OVFQ*MJB?7b&zej9=DMI}9VOfNn8B)Y?RaZm7^F29T*h_e&5oR;pzf z(5zsmqRDok?QMkfl>oE9C5rX_-sB$81xinSBv_LJ3hh{jSXpRYL&Ai$N~yJ{3f(x9 zL;yWkE9eA;R;xwit@@B8pu?O6y;`9wDD>3iKx__&{FL0wL%{&B8Px(*H_SE1Z!dsgNe1+fF9%((1pKE9t{-wdOzY}sdeqt zUs!)otOqM}tIwnr(4Wo;da5$9%~a^*?_?^_fj)@xTg}xtBx$y>7pt7b$uBDsOkpQI!=HF{=SN1hn~SL9bWn$_o9tGkFE{>xqIMqBxII=;eKghYfVT1|n~*i!dLc z(DCu470_dog!O&JxlWuTChG(vDbs$ts|8A_RRwp=T@B(;AZtK<^qL=+g?lQK2^uBtL=vv!9?>DfBsoo&*ElPU~8; zzo3UI^hX#2Xv!yeYXFhSo_=yZjySC6y;dhRSif53v@uh6@oy@4+5AZWH9 zV}B16dUr#z9q94R1#Pa-mN4P5A^WK{xd-%~7J{B9j7|I$x?xLV<)C$K)LPJ86}q)T zKW{}MfbP&n(7hCTh(bpnC2Zf%|jRZPsUAHSkaFmj_wWTO`Q4i7`XtVCZ`iVmOD)f<1 zG9T#GN^db#YD0w%s!a|7JwX{nOBCxt3LPCnUI85&CS|oPkjsn4~O5&I%ryMD9UujfM+) zhcai^QRvOy#L7wQdLmc^(_c6>>8#MluaO9#lkP@y;+*1qu0mI{CP_eND4T2_#X3i! zyG4;zK+kC?ock;EU7-2qBZgc6`nA&WTPgHU#oDGG`3ZDXmc;)#Dmh%zzUO~TD3++D(LBwWdnv(6IkA?bSxJlO=+NRtW@ z;iDM9lEMEo10>uq?K5JygjbRLjF<4L5}qRAN`D~P!M06(C7ldKhqZ~HgfEfsY7(9)`Sd52 zwVj$O{gCTqNmc=pRgQ!QN_ej1O+|)+Hx`HCFJH2%ZUEu)hJ*)6c!7l1Am?j4xfqr` zrc^BDRg3(9yjZgv{~Gk?BEt;bgaPIX&f*GYfbwS}>6azlLY!P+`7-`_N>;T=dWcig z5F=+|5+vEyk?>H-DpbNFCH=bOKgcUgV&fz>oVeFW6GkSpJ)3Ebk_;5+zl1vG6a!FvY@|Pm9-N-gzyBjF@%#hd~ znX7#NP0b| zrXwXbNMc7xc&LPrmheakA4C3wyv9mwoWzbJ?)9Bq#!GCX#7-bBfi+xqFs0!N%i3rX znF8!&$u>o@okF$&J5^#cBsQ7c1vW)uGbMH!v5atXnJ%$e5<7#`2X>~!=1OcT84Bzy ziOrYT*<>ZKb0oGvV$;ZZVCPC~vBc`gj|ivac@k^V@K=kcOSrj&&zEo;311-L&Jvy> z;hqw{P~e0#uyy%E(g~7u2szlmsp+2*8!54iBs^BZSvxM4@Hk1I68A_amn9OLD6vaP zOJJ8t>~M*-B2$1}F0m;RyMk;3cBRB-NbD+d7ueMjn<=rG#4^gsWsSsUN$gruA6Ub2 zoGIlhEGy|cG8EXqCEI+-c0E}M>;{P~kl2mnJg}Q2wpd~}lOMotkyw*PqHnN#w~~N{ zPA=Od)<$93T(O;W19peRdP-~-Ne6bP#0E+1E^-jqY>ADO*xlqmVE>WWIEmdu+#5N$ z=p{B$Vsl7KU=0`BOli2p?jutgIW^rc*``SB0STX@;H(}FN_d8(Z%yt(UN#b&DY3T1 zvawV0A&JeB*uxT@BjuGV;klB2o`j#0^p8k*zJeQ8|0V7ECv*D7Z^VjrqLB-v430{U z3MJf5!iy!`Ucx_1xPye7G)@*7vHs#H5$275;aUl|k#OnIV&W{}$0U7E2|q63J_ekX z|Aa&Y83@2mN_eP*pOWxM2{&9SF*;Vl&q(@l5`GqNQU4&sOT;YG} z%#rXn5}qO9ZzX(*guj#UObJ)6lQQ6gL=gRE$BtFgcK)#oZEu{z7w{G)y`e3Ur8 z{Y>1VqqNIu6_ciEM`CrVZJcF#e|;uxPCAmz$RX?$b^dnx&A5EuP_O$)tD7YUNTF2=wXH>?JMD5H6lVR<(-6 z+ozC%R>N_2LW~2knh+Ou@fIm*>dfx%rE5!O;z40U=PVMT4Lxp&(t2g>e9&{;B zR0)1a&!y%G-e>}s=7AK>rSl1X_;U*PY2VEo?-OEs5GM<95r`2&yau9)5S_Yvqa$QQ zLU|Go(o8Nb1u2F}*|)lDQMs){)Fv}Nn^>p1k)AR3#4_Ohj%TT4oM^}tC?{EDX!APIds<1zz?zK^fz%l>Mbw+OqC?|m#yABlvM3VP_Z z{@Ff#2bsA|?5&25-m)+@E&4`mTFd-cU39*V_u<6eWc$G2s?U2dh3Hd!XfT}s|eljNjGoZg+}B@M*AE)xG?;pSJn z@i2<%@Fhq~t_`h;$8;lmhsA0dB~>x$XMGJ~RArJLNgmj?8wnU*A2+)|4iEPv^M<=? zvlB!S`dLpkDQX2n8FXKt2f98UoDZ9y-ID{8D653l5Vq$%{-gTB<3Uj2%dJ z@(ld31qn^j?u#GnCqJe~G1rkN4=pIA~fvprtWgfvKv!z-JRg{gh;pm_2rbuB*Ii7cPB9{Y77jb?Yj z3!=&D*}m98pM7Tb4}_mIBB#?5wSP5)c+*vp?IE+YlcJ;DZ%7)8xf@A{N*@2g1npm z6NlH&ezzb2X{Kxg3*HMxZDYN_ta-TFgrqESD#NzWh2_HuS=bWa3Cn)CFv$$x2_bD4 zx5D#6$lApXacl^Ax_FswCAfluk(Hv0KERd*`##wVsRhC|!DQ8vCFZkgu^6L^=}sLC znJ!D~;I6d@S=tNNsYO059gNS^Bz=}m$1ydt3zv0A_-Rmf>qJ6g!=@LGpm>2GybGc<}LiH8i`!fPE&WKpE)3^YCI78kVqT{zXy~FdMCmsDJx z$MsiCA9|^2)@4;i@@m6k9O^}8ZA`*9DrbM(7?1G1N+fRc0qj|cSZ&#j2UR4;wv51^ zJV~9cV=MQl0m0NgWj#{`?NemS`eeGQ8GuD>A6sM%|B$F*_SuiNwng}p2dT6D687>S z<#t@cZQRM-9S`wPx9q&E0E{DCN%1a!O_mNE@*c2W$LnCKOLk;-2F3|aB=Tpx<0vr}Ud}2Qn(BBYtO3&gNv`Huk)- zPTI*8;j*sl+uVwIO?57z)~%5*y~4j zx%>o#W4@6Amv-R4zml-Wl}Px%?Qq0blJRdYZt<10z1#--ekFfjo{ztLCbh4$(=;Ar zC|}qhUL|&)$<`}An$H6b_^W{&KkJlx!M>{97yI}?NgRLl7^Ts zlqFxTw!sfSk`~t*Y9a<0d<75SzBC`nu4~N@+*w|$Z#wdWiY881JChFAXXAqR#@#2v?!)_d@Y zlu*d3zk5Q%r8%_Ne{Tl$YJuzc&^`m9RnB?TazH7d(m zVck{-XF$t_u|?rm%PvgiZI%KZ#s}JLfapKGlX}i&R62*!P)>Mh!+6r>Q2;(tNKzi< zVCO;@;N8t_W{M6#+bo7Ll=IltY|E>X61t`qw#Uy>$&1H{70JDlk|K6pRKzZ;U?e^K zTB@R~$dD(Eu;JLp1RrI|5D2M=L<6BX}D|gG~W7! zIi{t1@r`NZ-=}r)KTn9|vlh7j6VmlrB~*<}eHMny$=+ubaDEE8^{lGq@Kj!m0#+v^ zX_SYic1J@aSL?_d+4M1KT{sSZeMC+bRx&%3Tv9@6tkx2OLRlZ32FaGTDAinFh*CRxWAdc>*jdr9pYOYi5ieW#T9MuzAmM5{{dN1+#KJ$O^QGznfSfY;Vrj_{*8y-+E+~T zSARcyi#&VNwcOOv5F(#rsm%}MKoZ{u;gnnCkGFn!_f2x>ZCf07li0nBaWikuhAo`S zQX^SWBu}qykkRjA@cJ9%0DN@6LCoFq8_P}1;-RrRa~+!Y89`UJ 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 Timestamp { is_prime :: proc (n := 0) -> bool { sqrt :: cast(i32) (sqrt_f32(cast(f32) n)); - for i: 2, sqrt + 1 do if n % i == 0 do return false; + for i: 2 .. sqrt + 1 do if n % i == 0 do return false; return true; } @@ -140,7 +125,7 @@ output_s :: proc (sb: ^StringBuilder, s: ^S) -> ^StringBuilder { print_arr :: proc (sb: ^StringBuilder, arr: [] $T) { sb |> string_builder_clear(); - for i: 0, arr.count { + for i: 0 .. arr.count { sb |> sba(cast(u64) arr[i]) |> sba(" "); } @@ -149,7 +134,7 @@ print_arr :: proc (sb: ^StringBuilder, arr: [] $T) { make_i32_arr :: proc (a := context.allocator, len := 10) -> [] i32 { arr := cast(^i32) alloc(a, sizeof i32 * len); - return arr[0 : len]; + return arr[0 .. len]; } main :: proc (args: []cstring) { @@ -174,7 +159,7 @@ main :: proc (args: []cstring) { |> sba(cast(u64) args.count) |> sba(" arguments.\n"); - for i: 0, args.count do ^sb |> sba(args[i]) |> sba(" "); + for i: 0 .. args.count do ^sb |> sba(args[i]) |> sba(" "); ^sb |> sba("\n") |> string_builder_to_string() |> print(); @@ -184,7 +169,7 @@ main :: proc (args: []cstring) { print(cont); sum := 0l; - for i: 0, 20000 do if is_prime(i) do sum += cast(u64) i; + for i: 0 .. 20000 do if is_prime(i) do sum += cast(u64) i; print("Sum of primes less than 20000 is: "); print_i64(sum); print("\n"); @@ -193,7 +178,7 @@ main :: proc (args: []cstring) { defer cfree(matches.data); string_builder_clear(^sb); - for i: 0, matches.count { + for i: 0 .. matches.count { ^sb |> sba(matches[i]) |> sba("\n"); } @@ -205,7 +190,7 @@ main :: proc (args: []cstring) { defer cfree(tokens.data); acc := 0; - for i: 0, tokens.count { + for i: 0 .. tokens.count { switch tokens[i][0] { case #char "+" do acc += 1; case #char "-" do acc -= 1; @@ -264,9 +249,9 @@ main :: proc (args: []cstring) { arr : [128] i32; - for i: 0, 128 do arr[i] = i * i; + for i: 0 .. 128 do arr[i] = i * i; - print_arr(^sb, arr[5 : 10]); + print_arr(^sb, arr[5 .. 10]); ss := string_substr("Hello, World!", "World"); if ss.count > 0 do print(ss); @@ -299,8 +284,8 @@ main :: proc (args: []cstring) { dynarr : [..] Vec3; array_init(^dynarr); - for i: 0, 16 do array_add(^dynarr, Vec3.{ cast(f32) i, cast(f32) (i * i), cast(f32) (i * i * i) }); - for i: 0, 16 { + for i: 0 .. 16 do array_push(^dynarr, Vec3.{ cast(f32) i, cast(f32) (i * i), cast(f32) (i * i * i) }); + for i: 0 .. 16 { print(cast(u32) dynarr.data[i].x); print(" "); print(cast(u32) dynarr.data[i].y); @@ -342,7 +327,7 @@ multi_poly :: proc (a: $T, b: $R) -> R { } make_slice :: proc (ptr: ^$T, count: u32) -> [] T { - return ptr[4 : count]; + return ptr[4 .. count]; } -get_slice_length :: proc (s: ^[] $T) -> u32 do return s.count; \ No newline at end of file +get_slice_length :: proc (s: ^[] $T) -> u32 do return s.count; diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 30d08d16..64c61b93 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -1287,11 +1287,6 @@ b32 check_function_header(AstFunction* func) { return 1; } - if ((func->flags & Ast_Flag_Inline) != 0) { - onyx_report_error(func->token->pos, "exporting a inlined function"); - return 1; - } - if (func->exported_name == NULL) { onyx_report_error(func->token->pos, "exporting function without a name"); return 1; diff --git a/src/onyxparser.c b/src/onyxparser.c index b4e0ea94..1b05461f 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -1612,10 +1612,6 @@ static AstFunction* parse_function_definition(OnyxParser* parser) { } } - else if (parse_possible_directive(parser, "inline")) { - func_def->flags |= Ast_Flag_Inline; - } - else if (parse_possible_directive(parser, "foreign")) { func_def->foreign_module = expect_token(parser, Token_Type_Literal_String); func_def->foreign_name = expect_token(parser, Token_Type_Literal_String); @@ -1632,10 +1628,6 @@ static AstFunction* parse_function_definition(OnyxParser* parser) { } } - else if (parse_possible_directive(parser, "nostack")) { - func_def->flags |= Ast_Flag_No_Stack; - } - else { OnyxToken* directive_token = expect_token(parser, '#'); OnyxToken* symbol_token = expect_token(parser, Token_Type_Symbol); @@ -2048,21 +2040,16 @@ ParseResults onyx_parse(OnyxParser *parser) { break; case Ast_Kind_Binding: { - if (((AstBinding *) curr_stmt)->node->flags & Ast_Flag_Private_Package) { - symbol_introduce(parser->package->private_scope, - ((AstBinding *) curr_stmt)->token, - ((AstBinding *) curr_stmt)->node); - - } else if (((AstBinding *) curr_stmt)->node->flags & Ast_Flag_Private_File) { - symbol_introduce(parser->file_scope, - ((AstBinding *) curr_stmt)->token, - ((AstBinding *) curr_stmt)->node); - - } else { - symbol_introduce(parser->package->scope, - ((AstBinding *) curr_stmt)->token, - ((AstBinding *) curr_stmt)->node); - } + Scope* target_scope = parser->package->scope; + + if (((AstBinding *) curr_stmt)->node->flags & Ast_Flag_Private_Package) + target_scope = parser->package->private_scope; + if (((AstBinding *) curr_stmt)->node->flags & Ast_Flag_Private_File) + target_scope = parser->file_scope; + + symbol_introduce(target_scope, + ((AstBinding *) curr_stmt)->token, + ((AstBinding *) curr_stmt)->node); break; } diff --git a/src/onyxsymres.c b/src/onyxsymres.c index c28519cd..75591637 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -231,7 +231,7 @@ static void symres_pipe(AstBinaryOp** pipe) { symres_expression(&(*pipe)->left); if (call_node->kind != Ast_Kind_Call) { - onyx_report_error((*pipe)->token->pos, "universal function call expected call on right side"); + onyx_report_error((*pipe)->token->pos, "Pipe operator expected call on right side."); return; } diff --git a/src/onyxutils.c b/src/onyxutils.c index b13db668..f1099fb8 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -84,7 +84,7 @@ static const char* ast_node_names[] = { "JUMP", "DEFER", "SWITCH", - "SWITCH CASE" + "SWITCH CASE", "AST_NODE_KIND_COUNT", }; -- 2.25.1