From 796e3560b05f44571ea30ea7587daa40061a0532 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 16 Jul 2020 16:21:02 -0500 Subject: [PATCH] small changes and improvements --- include/onyxastnodes.h | 7 +++++-- include/onyxtypes.h | 1 + onyx | Bin 239880 -> 240192 bytes progs/other.onyx | 2 ++ src/onyxchecker.c | 24 +++++++++++++----------- src/onyxparser.c | 18 +++++++++++------- src/onyxtypes.c | 4 ++++ src/onyxwasm.c | 6 +++--- 8 files changed, 39 insertions(+), 23 deletions(-) diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index 9a80bb6c..189a3f0f 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -188,8 +188,11 @@ struct AstFunction { AstBlock *body; AstLocal *params; - // NOTE: Used when a function is exported with a specific name - char* exported_name; + union { + // NOTE: Used when a function is exported with a specific name + OnyxToken* exported_name; + OnyxToken* intrinsic_name; + }; // NOTE: Used when the function is declared as foreign OnyxToken* foreign_module; diff --git a/include/onyxtypes.h b/include/onyxtypes.h index 1aa719de..99af695c 100644 --- a/include/onyxtypes.h +++ b/include/onyxtypes.h @@ -89,5 +89,6 @@ Type* type_build_from_ast(bh_allocator alloc, struct AstType* type_node); const char* type_get_name(Type* type); b32 type_is_pointer(Type* type); +b32 type_is_bool(Type* type); #endif // #ifndef ONYX_TYPES diff --git a/onyx b/onyx index ceca3e2326da7225053462373ae7903b2a73f873..9d590f0dfd7a1948f0226e39658a488e6c90b6b0 100755 GIT binary patch delta 65882 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 Bk(mGh delta 64431 zcmdSC2Y6J~)<1mqnat$OKqiyklSxlVfY3W6)X+3Y3m^hgM2aGUbOwxEK?o8KumM9; zK)s*>0Ru?AqM)J_3!s1?Ei?riMa+D^wfC7x$o0POec${2zyI^i^X#nO-g~XJ*Y4%) zbF%L%`|RWP1!-#T>Y^HFtqmG6g?j7iDBs8tp6DqV;rj zL-6Vvom`iW#og$dncnqc$LG4ct}M7%Ql{>!*75GsQvT3Kl4?>+`NIf5S|vPUgycI} zCA_wN+a4B?W5kwKiOtvJ{lg-r7_oP&#J;L`^AGFzmJzFc{IDfQjc`YmaBZaI3$GHM zt#3wJla1K4DzQuT^GIu-5!<**>@6cayGnT0D4AAnmGItrjw38$wGlhKO6+?5ImEte z#7?XdyG37v*quh~>?*Mz>c<>muFs6vrBz~&8R4s|gr6|N->MRR#t7e3CH$fhzP(EL zbs1h)*;ggvwjpq+O88wP{HPuu5EgKIvZOD|eMkQa?Si;nk-{>PVC$Iq} z7c#$O>e>_f_F6IO!3QNLY7Jv-fZj4|oa%m1vNh{d#-7z(b+g$>eP7*C>X{=Ywd&bb z^~YGfWrGpyMg8pt@3JrT{D$4wO#SZ-pJEYuV53t^)o(PK&o=2(8b8h2>z5kuRo_3X zJHC%mPuyI_fVZ3Bf(@f?({ga}=+U>cs_Kgb=pr9-~cW$1RJ6E}GE}NpC zYnBXNOY?z@9VmIKMRTT=9)w8Y`0aYmlTqq7H}pd-AFyHiN38}hOG$EeAX9${ENPOH z%-CUlKF_;Z1X6qtv_g!t6uik+qdn&R+P+d>%-VmU2iv()z$B{>!e=s z)7!OgK(@D^&gzuhZ-0@oF8cSmEt#Jl+i^b2(ckGff(7Z}of6fbtR*cvwPNgDeOl+i zsGswlr?LelPjo?TZ77-1br^H)sfMPLJLh0o@CCP9R!J7s$_^h4cRTa&CwI=B+&LeY zMVSe2=2~gb?HkcWNW&qjCl^&DC4VPMbx(|8@6aE}-kwKu=d{j#D56V6M6TB$pNa%nMFQUiCddq= ziWK}`no0SUnJ7497^P?D1-tghh>GM-o=5U?+T8{B-MP6wL}ZI-@bU!coNJy9k~8N} z?wn(}g&`vYDIF@u?NFqY_5Fg<5ym&ZJ`}=B_assZC`*@ATqXjejm)}6$k1B|y(N=FZ8>$}KdX9Ya>P+mt(3kM0)T`pCHoiEr)+iA}i&+lf>l38{Abt_S26 zwA;?$-G^4>prG7>Y5SD%l%MVTs%TLcK@=1=zv|^)jw{3#y)R zL#}S5T0*2g=CN?sdQoNV$|ztD@sYj}--}es&{#DQ;c3O)Dk3OXWmlgtbRjQJWEvSj zqR`-bRuulBJx!@Z5D+FLk%lM0A_7`T_7JzIpOX+jNfquho(3*>Dd&0G)pfF5k*DlD z8rDKYI`HVvZ49k(D7P>_&lB=cbnZhV-?v+6%nbhXgv@{L+%aA$J?Hx<{boyFc1ZuF zdupag6&k6YQJHyZgwa@x+^;40-*+RfXyEK8IiCcEo|iz%_UhI8 z#j)vnM!!axPho+OJJ&p%h!`wd5M!mmqW_1Aa@`kZM{D~0evR~d{q}_q!Ey{jLqT@5 z5al8U=_dNI$9u8&^|by?V_zE~Sc*Y%w$o_7gI2J{X#R{oqkk+Wj8*-US-SpF|Jm#b z{gEdU*fjmQC)TP<-qas`B3|8gSoa^4tPdE_L%q9RgoMeEKL^}Y_phT6c22hsnxrO4 zPaAmB^e+buQ^&3q{6(KYL#jUO$;Z^M-Vh0O#C-Un+K85yO`i$XCf@h^Z zY|PjXkmo_KgqK_z9>b#B{DHKW%e3R}i?s7V$}YSQu5KeE^~NK1sGWA`zl_L@% zO$PYji6Z-L5Gc?u`=kKto2*h>*khJd%iJK|A^AtjhoC| z`o3`^Sg@WkzGJlMB8{_coTBdL<`KmpFPiQ!eZlxA*fIU5@nI1yFA>{^k}De{y=={? zm-M(7>Zvy(^cHiX^)WBhVLkNMU&v&)^&>BYg+C#5|C3M$z5Ip7Ow$`pXcc_rrlJ_* z;t@I9zaI`=nff~u{X1s)QF9w-+m1m`xq6No3sw(ETc(dFnozv~G)=Ja!4CyxYX}>s z|2QEzxbHtDbuUa$omf+K2I##e*7UjUP!#^73G3_C6QesuRIi-&qW>`MHaDtf^M_D9 zYEmKVuD?C0342VxFsYBaH$-naIVV6g?Qw65c7z(t*7OCFBP<_XL+9wCzc)Fi%ew^A z*VBr1eD#Cv4yjZ+PtodD)E(_ZII&nNSTGSNSKB_sGL={^=;2dhEQ1K{)0+WyB)CF< z0d$04RNaOI;#Tb$+QoM5&EcNw+5IjvVK)(jKpWu(W-_#h(dV-(n zSyN-W%p>^LTCX}(vvTz^O;+9vj3t&?6)bjQ`S2l@-o)~xz6`pX6KtjL0!$(pt$&YX ztOW19;Y}uxbToQM$IUXZd{e;^L@dD%u^cCs53D=#)>p735z9sVsmNJSZ$$(#M_<=1oR=SOm(^=fWw^ zpmfv|bo7)yb9S8m*vvHSmZ!`d9b~&ywdXPYkD1MbFTnVR2c9i{#vm4?Pk!-b^?r5T zRM4HR(|Z@hNBEu;sbk!s1z>h#PjWx$MFpuruUx3AtB(FzK~|laUkRy^Ri%FX#$z`r zqv^~^Q`3oWFqo!Sv!YbxP*|)Fe5odDr_XBV@Os|$e6-%^mFr^YRGB*&BE?JA3VV7XTii6 zJ!*c`h&A6;6x3qiTz1rr2J_JJGVD*c`|8_5>qFsfpy+DRKZoaI9=|@dijouh>iNMv z@0KCzu_{sbscKqO3EXrIf!F{&l;ZAR5ExV?@Q)JftF2XbRPR#sC)T>17B`@#BQwlej`tzLil+Z(U+LSTCLD5aKB37k5i<_g2CsmGGOD@N1RutCetp z#NAz#@C4}*#XeHvM=5-O#G-1tOWc{lJ4oD-a5ITJ5Uwq8JHm+)i@Fb!ShSC75{owE zHYqO3eG3x!g+}Z`b92I1ByL9dJBbC)kxD#bxmjoyJf$*RG|~-~WLH(<*CiHuUY5A! zDWrdON~MTrB^F8tODvT3mbeKS)VWf4t4jR!D&f>hII0rAzr;e1iLlGa!5x~23e6(1 z>kH)q6D6=6!BCgfqs?n zqm^)*O8ku^7J4!&;kZgXK@tlid?j`XOaBln8d>*0Ni1@6L1IxVCnOfapGhoouvcP{ zaEZhXDKl?MEM#AkSjfIAv5+lba{Lz_9H>(j2qv6+d8=c9#G>JJuY@~DEHcncVqtV` ziABPR5(}MS5{tB|N!;iZjsI>jIm(v&i^QUPT#;CGCoC|?AkqDBU_@AS*AFEY<438) z{VDewBpyt7mBddI)+K(H@XNq7{*Q;}`gDNl1jYlrOkfni0s?~pmJ#R+@H&BR0B;k> z1=vEM6~G4s8Uh?3P!r&D0!aX05r_i#fj}U@EdthDQ=z%Mtjob)=Xou(~#?(@uH|2T>6GG-Qs7EvP;w4ZtRFN-{|A_F8rRA_3Qe=H}0}QC3Dw) z%_2IVgltzStA8nEonJv#*C(xyQ@c+tS-!rJj~4j?)-(kN^7JDmP4pp~8kcn1@QIn7 z)PpzAQ#(Ja&s*C-Ke2gR&Dw`VDs$SME|_+jjgP~#$s`=M?K~>=_c$o@?*La>k7r7D zY_T&nX|(?5%2p-X)_gOYTQX?JV@z#43_;EH+dGGa^w?Knb}q13JnDlsH7j}ZgL)B8 z_ID^BEP65w>h(|_(S?>^Jx}U0)`x4SIt$ygb?2!D`lDYv{ggK=l>S;W_3Q4Y zjM;B^b}LJBNR3|<)a=|SH3zK`nkRy%EGSpMe=?SRSrTz7U&ShL>~{y)wvtAt!x&qk zKYAtsr>SGlY*E9m=_zMp*&V&z*%4McD9D|2q-?9c{p=q0QOShwHC1j6KhkHNuY)tB z((`S6#a^*fYn}bDnvE`b{fFO~+P%5H{Nl@Mjiq|xrDp89KH$=1Hb(#U(ywYv(~_f? zpHm~gT?{if(EwT4U<;PzsQEB7-LfqueXsUs+Bj?=urM93@4fb-b`7g~c&_UmuP3GK zk)FLEl@G4)M-R zl<+k2ELTa#@&v|al#Fu6GIfyCqkP+T)`hVv+^n)j+D{*e{NCbiRpyNFnF1dc>4j;a zh3$^+#2ic|dy7v~*-o~VH#V`eYRHt*a35CP#NOn|zAS@%$GiEm;NZ|m6a@~aulr+b zbcoahNAO9$Y?8JtoEl)eyL^U?HQ=>1wnVi=@Pitwp*9UK{Y7Innc6RmC)n6oHn)^j zWAUmQFt#+wkCm!y0YB}}lG#qKI$-x`{-}e+s!wd^&pOyE>^Q&gVCf^bV?;xucm3bb zR%e?xRQT9z^GdHznQdMO&-F%<72X-%xNLAfU*Ut6VHG~pY;zy-6`CI{ZF!HV0Msd}f<16+WoB_kLwVZ&dh@{P$iTEc+6k>(6=(-R+GdLpMEM;f1Ad zRQQm@k_sP^pHtz3X;UkFF#FjGpYLq*ljJKj_jsQd1+v!Zg`?o5+N^!B-LDwED9+^x zi$WNN1_~R?9|W=zze6J{THY?cD~R=AuknCjHb;&3r zy`|H_*gLAa-=fdYis2n2S-HB_OdTPOKNrR7sU6JxyJ!}{_eQbZ>{&i7nmw)t`cT*z zb3GFts_Jo@L-_F+7ODnq;MZbUB)h}SvFw76Nkv!A8XdeOjs^Q&*@3a-O}PvCj>pHb zd+ZpGaRO+|P)<$#2w&l3chz3*QXbFzn4fR|it_k_Z%$zM)SN&0#zgk3 zJ+WU!R9L^#caxZdsWt!L`;yryd+R^ z-W`&gQ9T*mR2gS3+rw+sW-qhLrSI2f?HF5K`XGx9RMkgs@+a!C=T+NH{$)M(fF0&X z>!Yjv$jj@qzpJL}{O=9e*J|dq(wPmJjj7J7ys!~l!VZ-tHD>dCt2aB3)Cvv^?3eR+ ze?AlA4L{e4)iHg0uAIA~Sql05dB<$l!QSs&x$%@5kErwXO&5bpw`8*bRZTlv`cZ3^ z&Da~<(w23%=C_cgb&WsSmStMg4evJ2+p^Bqlg(x9Ab!0quFS)liD#mV>@`g z_Ut7!pc&uMo;3_`m%+ZmSp&rr=7VLS*Oqi(X{>~&cR(Q&@Mk-)kWhbr8lKxxY590c ztNSUwyaQXxcJX?-tRY)bIwF@PvXGTHp}_303dDO|Vq)p*9og$N(6#HznrRy*3zm(1 zc2}0FO_jcByc9lbSLu6Xa_N<>>{S!nz$bKLy;xoTMK>1B{@~ZUv6iYmt2E;=7Nn}x zYw_$JtPLB^U+Td&wSRLgnpyAdu(hzoYlI_q&{%5T3!FPAWFL{j7W*kCev9DRM))}4 zIp!UbYbT%FlSOKrd~-vV^5UN8FDv++o@_BY!3%q_8tf~+y%$SXTRz9X@5Pdum3>0( zssG(iJ{-2-7ysD%Ila3Sw#ax21<efqMdOV(GCV zEY;MhD9-JE87?qZ(ixy9;A+Bcjd8n|!BPBQxqb*I{tVDNF}(F~R-@Uj7R~i3m$gc+72KOo4_i&}vN3gF< z^uVUluk`F_c3E?2$YwB{6Rt5_Tev*9>qxVz%S8C&aKquo!BG*-gIfw$mA9&YEqFHl zGoQ=73xS8=zJfakcLT1n@Ll+QP!A5cXt*@E`f%BBUEuQJhQN)1n+i7@ZV}vSxQ%ez z;SRtZg*y#b2KOtR;&i*KJ6&#fI6x9y7F=_pSmYgfy?H&yG8eA#d zQMhaArM)I&?cqx6<96?E1*5Xv?qA^M=eXVJtx*MV1KPOV_u&?|MQOKlyFY^)*52)A z9Z<4xjdI=Y<8Y%pq7*y1-EY9P#Ga4#edDkZ^zZ6+{~fN~Bgl9+6cFf?N8RqwJhyu@ z+?8(b8txY#gO%M;?{Is2x!v7+xZOX(&FP71hQDubxBEA^1w3LZi)v?n95n;i5q6t# zm5p#s-~c$nf93XrkN7Dr7OoMWG?jhmIy=+tCinG>3g-#?E9&9%#F5{F{}?hasMJO-0$KVL}Gbmw?8v;Dq@V@|Rdjs_f zmjG7_t|?r5xF6S|4Z&H~VRD0ug{uK~_AR&j2rd}ZdJ~QQ?T1{AhXR&WVK70^BQUP? zl8e2ny6BCDA23@ST~Y4N1I}7i?rsd4zPj8!5w!W5a`#fum7v=}uYsNfZSzjK`vGXD zcgx*QO;Mf(%?4cpIuP_G=nT*{@0Gh(gFX+s5405Y9B7A4G%iV`TXC5eb-vD)fRPL^BQL1L?j8gB(P!oE1)zUBT<+ckdi+Sa`zYuQ&|9EqkCnTFt6}rq{&=~&elM$iSI+kQa8 zp!pY&FlhKiBn;XH)PZ{!Uw~%00GeHb<)HO&6?zP)>k1Tro&ntox&@2ouRz1Emb>qQ z*1J~jj>aTk1lk<*5a{Ee?_Mu=PX+x6v=}t(X1RM8=u*(rp!Y!^fL{C&@>uot{HfgS zY7WroHtG!YvtP>HFM+b(%H3~)hW}pfJ_LFJv<%d&U?#;?oqQF88fa%T1_sbO77SXT z`+PAUf!Z`o8=xP9eg&Fe4f7D_fa;hoaA|jqAEpY>)&6dmJ0D=119K1Pr~ph6pf7`N z2R#XT67&w}UC`t}%wd68>*Cm=F=%uYMqkiA(U=fHk6;P08gz~mqcG_Cc+6Lzzb9gp z4N{caX_%)#pQ{DKLGRSUvS18AavfL>x~Cx$1`TM885DF3Mpz|SQC`4kngqHCLt!rH zMhuIiK!f^YbOrr=5ONHfIRplSmJY)N2|8>9CdUv(sW}RB80bpSfuJ2mV^Rb?;R09< z@cA>CWkJtBi?JSb(sM{S6h-tr6o8%@4+Wt6CqMyc!XzjFZ8`<=p#PW(dC>FIAP?FP z8B@X(Wj+R4C+Kd_Y|!682ZDxU$eID_>ISeHU_9tP&~>2aK;589IEwN`C;dJFzCCWH$X4Fg2sj`HBZh(oq?8sb^-kybQEZlLMQ-T2f7h7Z$9KfFM!?vz5FWV zqfn9yAP@Q`Xcy2gKu3YTS_Jth^#7dz8xat>5DGxAf!+XZr9(lqqO1VT1icH|1+*82 z>`|bbLFa*92HgmnycqJJLqKnU?gp(MgGRgry#;g*$6^cgW6*J+E0?0pxd8qE*b4gP zGISTvtmWt~p#HDXid|8j0<90)su&7DCxDIv9lwHB01N0VxSZA9M`pM9>mY*HVB--hu+qZ$VFjx>bh&J^ht#y%8&^*xJ51_k)uKN^44|?YFL|6`R_82S&%{fjBTSXc8l^cs% z%!;7HdC?q}8gYx4(>-HFY3qxjOi>W4)Q6kMk0F}9&F{@&acc20KD~%Vnu`&0mN$6? zLAK?*?<*{Uwc^uWVTq=M_2qoZA{LRH#1tideYv|PSd|>S7p1oGvkb59i^)+z^HJI& zz7{_Z6>KPHb3tC?@kBQ893n^fpt(2%X~t*Cz;)z%jDJGD_xV-wz0CdQ!S@ZXNu(X` zN~DmF22rbjz~|3{Sx@oJ6grk4Bk}{kO{69dC}eT*U+l-!W~yYKse_3OB=fc+{66mn zw&Y(iCI1X-y}9Tx&s5-Jy3D{!taris555?zs_h_uzYwWT~%w)+4x_H>AO)v1$2sW=f-hSTkc&yAY!6xs+`Xe2^B)$t5IiGKo(<}AQ$ev@Di zz<=<7S6P&K9AGf71DL!B@XxQy-EWYvN1wVE*AS9qNTD5s@>@mMW<{ZL{@y_wsN_;2`lu=<_`4F9g2 zzqg7-Sji9tYb}4in>0EByYe#xvjK7=mZSlXNpi*Z2^yPwh(YQU@M*s*lr$RH!N1@VW+pSOo3F*qDgE- zd@dF-pFNbnkG=UjjQC&p9MXCV@HT%3FgchOb2ugaMXjv$N0r2!2&#|xU-)gXy7B?1 zU@`K^LkS!Z2~Z(TM10bna(AbP;@f%Smm>ZV#P512zSJAP9r4!?zwjYb3WX`qpQ4-u z!{hhM-E>2K=}8}NulfKvev^Cp14 z#efIh<@`u7i}2kA&s}(EknlYX&mDMPgU9>;9y8xT!qHfWGJc9+bHH8v-Xf$q5b$dr zvl#Ftz*L?CnDQ3jZa)m&4;kIvYxE(+|7PcZTg+n3H-Inmw;^V6V6FN`F#m#r>jOvd z+l!H04?q_WSb{Vr0?y$L04>FU1kVAM@D&7ou#9cV_jA~j1bB&`C)gISA;&Rs zlz9l?ULH^ICBWJ|hu~U3Gam$)d;suXAIx756^ia{%NG&<9A86HK3Mur3waJ;yS0G#hq~Qy52X<4P2m9I?_r%d`Jwpn-uR1%@6Okd zRv*kb!}xxJNr2<|d4g>L3pra3I0SG3k0y~x zzw%HgnC0yRK3HfE;`>P|32-JqPp~cEX3ky%90G_3D+FHxbnu+lsFeY>9_e;t?O4$@ zatch{pqTpRA;dQs$ydI?Lak2t%i#ZnuY;(iI+o}^jpU!c#v(15z^zB|XNpvZY@Toj{!W!YZfEj1%SPISAv@W_wmsLj{@%Gg#>R2-ggK(u#T_AKL@mA0S;d=`> zV}hISU4Y*1z&7A%{yBJjvjEq6!t>zyL4=#f0LJi|tDtcKU|rso;3mLs1moBkUPvLg z5b`#E2O;KQYz|iQV}P#4fHfz(-7QcX-ob35Xa{0A&qsVG#GkAjuYT!mC=(H{PI0^Y zKNO$ujbDoRR*3%>@-AgN81DQR3Qi)vJ~lSrKa{|?-URL<{ujjOKNR2H8y}9gm@(~N z8IXpN2Mia$(73XK=Y_oDL|8uJ|Cq)@*I-ne3j8&1vIfOj4A_zPA-D^$I-f-FG+=wa zjNk*n^Lz)v=x`D{1!!pwxb|gUiyG16z_(uJk*}j&Oa%_&OqHxn&)T zwa~_G`f@&b4GLl&@OIvD9a7r}7{;F_co?t-pR*2@-2(iEze6w>Bhcgg7%|ib?8k2t z>;X8P2doFfL_jNVK(H7vhW7!q>;t_24xhdr$(;jk!B-H6PYg|3``5EJ)-HepH{m?B zq+3X$FE4wCHD+n0@$a%#zAn#4Ks+D)@OHr}cfWns{KgL*#X@v7nXe7eK)sSeMl zIkM>j8-AXTaV$0bp3iR>pWCRec)qXEdlb`i)DV~FiyG^V&q{c{p|QpAd%l|Sq2c#@ zC&Tky49|BkJm0Y;vxeXErHMnlNhuqo&Pzo$L-kueJ|U{IAyuKZEq-J31;Oxm>?u=_o~QZ{ zOQ@>6S=+<1wx49l*E|{!J*K56`oUlsJ=ecd^nhNT=$D_D(IcWOMQJ=fCc#nHbu-?7Wf0{a1`+3`)Ip6KVV~+ zoz9jlP5c*N=cd>Tc%5LiZs~~KbS)sTbi*EY0e6)6tNU1NLZ%Z33(8$+&~Ui}gP{w{ z7C-FLE@#PX%_}{!k6k6BcKn0Y%n)fNvA|ebVmt2Pk2#qId`BLK$I=|b(trU(ZQ$H z_7+xmHruZdsAk)Pr9yR^588^K%@^2iYld~Uzik4r!}bFf!~wQ%dGyE3i9EOXm_@La zy!XefBg%IT`MU8B;7bm}+^yPLg56|mjYNEG!?A}m+iGIDWwAX28+>hZc*`GIjLSL$ zHv0NBgSlFyacV&Q?c&j5re`M2?vZR_y(xha$oii$)b?YQ<+9V!^m2w)hYm%v$q%(Cg|9 zjaJ|A$y7;%!>uo9yWkOdwodT-JL*#!W}Rr{`Abx;b&}%@nxbZ3*$AG=_SvWxhhn;n zg0gB6he#XYH0v~t9zjTL(<^Ip32iPPyHGcyvbvd4oxLL#SJwIV`OqCM`i=F~YLp|V zVv2%UR%=uibo&u*Y+a-crG%&ytc#K;3yM7%{o=R!yZt+ogr z`6&ymErj&SLVCTaLg+Y>v+B7*$ljeYu0Ohn_xqH^B?zI#NzaIsUcjN1b#Z;-3zsP^ zZo7yVgD*tzEish0pxJOq-g15vQ7#e1ji}C)6t91n(p5|^Qc2n)hocSo5q4UaYV^=W zW^k#ItjN<+nXF=>1AeQ2IPH1;2sgGa(~fy%mKo`6rF51xI_{4n;xu~zx|MZVXR1Gx z%3ew}Ao>hxAe?1gu9?9hQ(ay;6U#-au(UbJ1VxY{Kf-C&m0EkR%*sSrKx1&~XD z(h0YJmPVcq>?Hs3GZrU{e~q7HEF$w>_m?Hv7gcI~)0Z}EPJ3_swZ0j2kvBi=DgIT4 zb|JK?o)i*Et!i_YPxJDvF!)Yl*s`u@d{S7^hpKbMBZv7O@I6X>-1=T(rS|?_P1(l- zP#V_vn$kg*rkK8H=Hp&gZXv&LUj&hzO1US8Dt*Q4!$wBb;U3 zrsa4=w;8oGo?7^}dQ{@5r3}h!Y;;$WA)II3p}p;u*=d&@MikvH|Fa}xKSYJU+n*X_ zmR&<3w6yN4My1f$9z>P&q3E;O_5v!O1HzN5n3`a?v&M&Qql5@Mt=qLTA|XEF3zq7l z0=Ch?iDKJ{Xl7f1QAf2+M0+*a{!ZhYZ8D0(Y+H>Gi>(RReQh^kie{@z?c3%D9-Hko zBwEe(Ir3QDwg49T*}kXlZ=;7&{x&)xaM<34o&XySZGpB6Fd@k1whzJqrR@sL53zBS zW~l8aC=Ih^!<2AaX9!2w=(r@(b_oeb*+LK-ZL5h&im{ylf2?BajA&~|6XnTz3i*)J zjkT-&cgmUDpFekm#f+rKjEWlgHuPe|w#HI6#JptfYp3zZMlb0pwx0o+Edf|nOvGe; z!bEzkufl3WV4$7GBAXk=DYhWwlG#$gqT1d-8YbH#+`qLN7Bvk)nr#`iG24^KxJ@yU z4(n)BD$h8ITNQ_S`=hL*%Ys})g;JHRa|nEnxYh?zonxk;o*P0#rfbsdR==ar`E+9W2)0CGL*evfh#SC#Z2*?@A9IQ7hJa67Qgj zy)SVhh5sS(7*g~=;+tghpAy$4o^pxDQMg;+xKbEzRhaPj4Tf-<&E^P%ayu=KY}K(g z8ifqmC!khr_E3s(*ndYCv-w9-e#7n2_-hLcO9gQvo8jQFh<;)sb+#bWQN;KqBAt9& zh~sZw)uD3PWvBOlY!Sf};jll&V~?|l5IXC@vSJ=cn*B|bwk<9&mUlrEtHFmIXLVim zpp;d!TTQq2Gb(WU3M~LGeMo4E0@k2dRsvXjQ5b{kN$F)4#(TFH5a zs(Krcg=%#@BdSVF@O&j5QS%yV7Hk z9s2c=MEM8UQ{KVw$ z>Q!q`@rlL(QCHa8ChCPb-36^SjIBM{0=RHrbH2XW=B08?tiQ{um zu+-6)n?Tt~)k>AA77bC-c2NE|sDY&Y?_H!m<3I$Z9FLPYS;`yK`m$znQ{t(N-&c(? z%}cpQ*(mk+2d2~wgnv8yJnke5w~nReKT8dm&$Camke++IDrc!_o~D>Gn#}l{D(Z#m zsV8;jmsNk_MlGcG=qyd^D~a+N!fQM;bb`X>sWAt__}@=5r>oL9L6e(BEZNdNLsMYG z)Igg1e(EUYGmN&(id&#`We$g_H9R@&oDPwvRIx--iw4#h^_0SftHHFQL~l!>?GRov z@TUm`#-)6Xa5heLi5(5~nY32uNi0zny>UzjnI^qWNp8drh&tvJ&v}UR!(KKf>ozx@pO*VIUG-E>BowvpsPyFD_Cu5Z`t&Wu|vm^Ob(R- z4UQ?i!?!Hn^#P7VWhcV1A5{Ylf+@FAU+i5LMa>LFmVB_aRNlj=h?LV#FzjGXN()6O z4c)`y0Pg$(2V+^0^$!(>Iy^<&@BvVeOlb)|wH0hy1E`>I2>?Dhng4rpb zPzij;q84$-cQBV$U8bT3(^Gm;EB=Ya&J=9IY%6^xc#Mm*FMzudY zX<_UTX}LWd=&C5+60~fK*tVv90!^%t1^$5~zReb9M<}lv=Cfi7mc?9%V&csMq>Qif3R)nsDLZ7N#pO8I~$ z)LKmJZ;<88+I;jGmL5Qj0mBj1Ai3`JE zkkRuEu7Sk$79~E{Xsp{^&L^o*3S(yQXU?+lj9J7|mul#>7_tO~qNF<;N(G6=z;vCM zPVvoWS!i!hqj%<0-EWQj8-%FMJ98VrzddfA@ZX*8{1LUqcEsYKK~#p4-mkILI>N9n z0G!SzsHdEbUdUs=XA$)pd4tNL7YapKCZ*TL)I`4%k|_O&YYf%P&#^W6i0@gX>pfbV zm|2L-LOxXs9XwgYp@~H!BP`ml2&uJ@CY|0vq@CB53Kw|C{BU$8Sr@$<$bmA~8BY1k zcaQ*vA158)vi`<&l$SN`*^vqxz)j~^WDuS1uu*<=8c6M2sdX18#phU5{o!7ltcr7Xl5zM`?<|+&E#rf&N1$%-(Z-qrWXL zefB(CXB>aW@_H9o-2d`a))Hx1iZ=BhoyuBL9p6HSI8(Hw1^-BuCr)K8>DHUT@>JGR zL#)hdsQN|Mv(I zr?O97WQl$L=~ULz(nJazPD_q?CTXG*AYd|Bp2`{#bSit9Y-lAJ`jeCckq1cXIKOaF zoY8i;#F~qvDc|=J%V^dW*7&|xQ)ZNorhMOP$`N54P5DN|Jck;TM^nC=v}N!JBYZa{ zCIQpY)bUF!r8ODmyV(e%qbc9bb?Nq%aWv%{>nGZ{eWN^ zJR`;4qG4mI0aMXZS2S&c=YY{_+GlKnV+ssa&q+;61fpYGQBuu*%VvhxfP+l_Rv%Jk(KS6O1h@8GwZRvT6;0c*iQVM1T9;tRepS6OgmKE_cRY$~1* zN>v3xe9U>~<}0qTWq7vL=sK%u^*r19hSv#HgZ}ElTgBt7Z>Xf@Gq8aT$IK|isXVJ^AEFn{0msY#4LsX_2Nyl#({WY1%Z6PMM{)=|Wp0L!GO#x*3(#&6MiI zlOt`uou0?x$q}D?3-8@FBY4}b%l|2mS!+&N2{{J*8 zkNE{#TX}3AVhuimaSz+j1$^r-tZ$l~dahRHID&Gs-#}N@u0|17#6higE$TaXH2VVH z@K=`6g1EJtrsW8;*1|@`I6tpupAL`h|L8;P8^1Doi0${Ac!-_)n|O%*9QnHOxxcZD zs3x$@fz#*_Xb5&Xqq9{LZB?;f;KzPrL5~xI&Ck>t@qXKp(`=i+gIbL|x(<}XmEDaP zTVM>0T@JfASPlvzE~mW%$%h703rn+qLTnM$sK;m7?}qa1-&ri%&IkO?5^D`d9P43u zWiW~nzp;{F@}mbEvCFX4Vm*=xWAck#&NuzeqFnSw4U6=<__$H59LBj>aaJ5FCUA2-stMYl#f}eAV!_@) z2ArE7E6#t-gQ#}soWr?{XWnJ;k+YzcroD=rFEY{dp{1Di*8WF#Owu#FQ{Dc`Qyr}` z6i3ym?$&)V)!F~3G}T?IGS#*E_h-43S~P#i*(ohpr<#(B)&FX$%l;L7o~iB;$a|-{ zsa|Cr?KBw~%8Ye*XfrfHu@2w)=U?59z`REa#JqQgG#T?AnJCxcnA#|U<~^EXaXTWu zT-=UmSY9#H)ux8-nd!#E zuD_n?Dyf@k7wSAS-FXPfI}+Nf)hJ(1c}GICMrF`UC+nQl=MWkKGN&=%Ew z1`6aI32jk_E1bJooSay64%9 zpz-=QNw>VxpxGm9(>x}wG-yk;-eMl3nRlt7^9mNE+ES@gUTM($!v~X$xYD34gA|f( zy7*l+bvWHo&;p{@Qna|Qpe@(vT?lFVa>ESTmTSv}N|<3R08Ww&;WR7&{4ncCnU#q$ zYsLbA3YiuFEtpCxh#^FJ^SL0N1%PBX767s&#_+>lh82cBV*zka=)>)3RZS85IxGMx zHJ`s;0MIo9Eh44{1|_+#(>7_3!6Pl+lz4{bOe}L=gi^7u(>5Dn;u_HAy3{(1eVrEN zTu6GvzE0bsedX1&#gIA9uc>Nkq_OHaN6g}q0ahIv=25IVGEAy>)gc?v7(U9R{$F2p zJo)eM1yS$DqkOHSX$-Pe=?T5o*G|3RFQ3r!jXr8j#DD!L-tVDD@!VoopZ6|gp2K|O zS;!FfE@Y;`LkpQTW;KJ^`R8UetOY$&*M19$MHNKSGj;8EiRqcTc1L1*rmo$Um>#KX z_axrI<1K0!uBkV%sE_=gy}05;Er5=M`&eKs`D7@!Gy>$0*u% zS!>E0k@jksW~_DM>6yC2-i_&tWOU&@IS!n8^WHw zJ1hQE2=hp*>U6n?E0g(k8UwxfU6TY!%tDivNo2Cxo+QNbDU-FCgZ6>r+N8dQm~ot; zP(O$l&jxFbbsL_OiI!DSr68XQf);SwyvvE(^Sc}-@1WzR|rp7a{>k=Kx9mMIMx z9w$~|$*hIjNF&h{4*5{#_mm+&(<|QyW4z1=zGmjhh*+M5vdH!{%pxao;`v}G%ctIe z(}{#d{4txF;P)z(k1wlEhc>PFOq&|&62DO+@HM}1L&;^2lD5U=U`!KMTuV2~BTXSYuQf^) z)(=!tzaal5zw@J{SR;>gaWnMbv}L?+H8sg~ijp|vS70z1D_zumpQak;IC9i?yr%|O1~pdOXiB)zw4D*X|%WeH1Vi#WlM^Zrc&e1@Ff+~189;fKqIDK z7jKs7_)D5Q-P3>4!~x&*RwTe{`l(^@@kZ)}Qd+68gz98|WPb>wToZcop?+$!#9oxp zFwqL@^swX9N3#l657i%yY%?rir zM9R|M0nI!`HJPj#kVjEe=|b7SV2?73MiWG8ThiFmPe)C4Afx7bEt~CC+0#?&nRL9k z6ya9WxgoNw5S% z8AP_C<*>Iv>Uw2sKSQz+ex4nc)!P`5*cbk4=Hnu?O2I)I!_nv9JYS?Aq| zQ3P$oZX(cg06B!D=m7FFk~+?hhNyIDy?&@FFRkO~v5^I4ic9M_dYlB0XG69J74_E} zvc^ckyCI`jYb!Qnvq+og=<&Q)+jPH5+T_WjacNzf;i#l;rd_D>Y{=*Z3GarC@>j7T zyGaRoHe_`5Q?BC|B~cc<8?xF^;N6hD1y7c|w65XOde1ObURu}m%0ha*1wx3PdTV;F z5E7TxHT}`I_>wSHURu`{CuN9~jO`oo$xG|n;uLLx?h!;f&9wn|&&O?6dbC2gzfNo~S}Rc+`6aWu3gRFI*u8?5}R2-P9p zRM1u!V#Y>vr!ba|zqA#Pyvr?-YFsblK)OBCd<3#+HU`M`3w{G0MxDIy>jh<=wrD!grVAWMt(wx z63)^}wcB2$rADF+XscgZUsj)$PBG;nu$E}2Z2fx|&s|vS{=a|o{GT3OB9*^>a@h!v z+Wyteb8J^B*OhLbYhCR&l;MAW^BntH8dUyrUyDAXJz*j}m2RGE1MM`R{4Z~wYokrg z`0i-6uB!}6BIwGww$35&Icgf~gQ)5;>QjfZwv6&t)j>OTS=&v7D7Gu8P-ct4bgSB8 zflan&v6k|&MI+X1yN+;+Z79jw=nY@Zb`(5TTN<#d@AI46u(8IAqw~U5M|M*$C`{sCjJO{_>svk2>G`jnYf~{N&a8F_Xnv! z#YB&3tcj*)kXrN-w1YHeO?J>re)4^c;zfDg1DS^3!T|p(`~u% zr6E^t@Q1EISUv(`S_8N-9#RXdVWK#{&L{$>HPf+-68Wn`35vj>1pZp<1+D|3mB}hl zi`D>#>K2VOn@EkdzG;X*()aT`-1#0co`*YB)Ofgq%D`y`MbK$RDTx}V8HBy38C|h6 z`0r0Mh|7DLK_fU$GhCEHL^WDsc#ku>gO83gHXsR$)(1X|c8QWU&NXfW$Ie2FWMQi1 zz4;;e&$9RtytZKSUa(J9jXjPj~QHmpszGU)Yc@7Xd zSL$$yPs#`-1zshGSxu=VKTaH$9A-Jx=&@OFrWkUn$82#>@;M8p<&D^!B{;~`T{4-z zugGL}Ndi-^dQ;iOYJBcM{nN3JI11Utn$eg>$-HXF%`oKR#hzj>Ggl<@H*|DXB9n0# z?47*H)WlL;RzeA@?|T(kw~Admr6R!ksd>$ zlKW&xfz50@>L_3to>EmXR6(T0wm^}8IyRsgK4B1r*O#i^dP%AhpC1Bb z#Ys40ka?=lYLhB@C>JLVAnLPhnzZQ_d%U>&n8U1Q*g&s1&}OwhM6p?Y+Au40Efi81 z{&P8yL-8fu33Sny;lDA^K~c{aW%AuoX7ppl)4a+1RJ4z6=|UujB2jV32rbEzx|62q zLQ%a*Qb7XDpdTx)j{}Hgu_v9L?vnX<%avS^Ng_=s(nRkM&>NA=6=*cP6#8}_`^I0^ ze|E|yYGfw@X{n0tmC}&Br$m-bMY~+i9+PEaKD1KDFJ%(u9k#-s1EamA(BhV@3^UnL z{#1(8+h`S@w3zzHXkqy9i9%HQOcEGA#cTLzG+oj(JXxH4jc!I!^5E+Uv3H-Hhtzfz3)Y5~_Z}i+!rs zhL~AdOj6bFh;YK#PWI*pQ`B3awm2c(y;u>>XvN_}){`lgp{1(vc2%)#~eewMO z7kuF%6L@Tz8r4xe!S%&ur8AHSp$WQt_*wF`Qmw=oj#q~fcmq(} zvrl<%G@$*1*RzD37dHDrFH3Cq_Is@0D%GgofITx!ZtZpBxJnvQ@kU z6l+H5v&YPHp>dZkv?}O8;>U{HLsY7HEJLapuEY%>iPjdg!CmU*wrmmX{C*8J#!*0~ zwY5GEy=u|p@%4CWhU&DACD}TDw~BaPhFZ6OAu-kWFhz+|>;~0j&m0&#;P>M-@)B-Vyv{@n=8sHtS;6mD z;573kM>|x2eKSQ|4*Zmu?dN%qT578LYi#MXTIwY4eYifAF9}3vsqr~<2;=J;9t6|m zfsF49T2FZ7xzPl_1Z2-RH>!LW%y*K5feTAIK0Qm#_`iK?so%fck^L7NGT)9S%Be;3 z#oquoicd2KQBelaf40*sAykwBpYVb@>PYrA|EZ1|qR~}y*3i;{SFfukN8S{^G&$Q1 z38&ev7Mh0Dw3>IWtH$Qrd6^GHLoz>|3-AR}7dB&*YY&eSNTVEmd*liU2YS9eLQ{8m-~>Lpfg06h zQwCPD<{ivI|GHX=@AQZZfe)Cq8w4DI^j@F&0~SEOV2JN;pa$0Y)1(v$-3Zh)t83we4&HOiHWqA)j79gjgw3ta1jud!;Rb0=Q-f@C`RiSRX1 ztux7J#eX5OHdRgZ)fR{Mj!gz?T-uHiTBhf@W7AI9P9wA#BQ!CFD?v3#TT|fR)+iZy zFV&o_ntp~>|9Z8+J6-h?l8^G6u(v0jMwwq$Bk4a!YJv1_nR&Kq?N7QD|3}HhIjX4# zA{}QksXXVZjxXVpHqGit)7OKN^I+dUgu8eN_FHW*aK{%acHvp^WB%2KO zo@7%5?H89L&~uU0nd5%H`u#) z&$DGY7*}bFQ9|DH?5)_=VF6-XrHz6D?|JqFueRy`PkUb;9#xU`eV6V|=O&%5BuzG! zES;shfrJ2ofXcoj5^!Tt0g+8XSws+!26qsb08)q%0YQSwfC|P@oBF8|e3Wzvp|tKifb^6>D zc(=*Mr@h0@AeQ3^ryYsGf037gnA$$V9l9USktjL>3!O} zy@?XJ-tG4jiPnadiM4l|G);K7Jwi_FX0_szTm0(-ic!0_Rb6QJw!qUV;ocVVxo&O+ zKCGo{;FLljZ(7gxn<(p9e=?O&`fSH|2~4CNLi26Tx$4S`P-fR$p696;PX?z^7$V{l+RD&gX<(83Ch_{^7G&t z``>etKa2cNJIR+JZ`VmqdKfv{N!|-hJK-cJuG3EPE1O5ui!WSNQMq(+h#mPm*0H`5(wh==1+Tq(j9pnUhX0p(!bt z_Ou#W1VValHr+={a34_jpGI+?q3(y#eUR@16RS`>CsUBWE`v6+IU%0GV`hcfw$m(w zq3w zy?FO)<9r56TPLp+uZm6-zg5obm3WdkAKsB}cRE9r4$dEAaFoWKzu{kva|+R& zoEsvB(b>5I8P_`hLE5H_I36^^?puEWZ&Ou1Ns1`H+}~?@mE0_PI%&XW*P=iG0lk_yodWMof`a( zcix52tDGS2CpdTGexmaLL`-s)!V;66dr{w0oGy@XwX+#K*Elxrr#ii0#c9q^{9fxs z@Ozz8gWu`SI{eOXzCo&)jtx1poVA5$|JOTH5t!}Vh~FEWRnTjWvlYK{ojYN)8=YDh zYMzsY-}%n#P;r5ij?&!Z7!b73X#q;yxdoyZIhWygu`>m~H#=8Am0KJ?Qr+sj3C`P` zeW2X#bc03ja0cV|PG?3rru$2reCWQ^`3+{j%Xt%~TjrF3^={_^h`z_!f!}+br=ZGx z&hyB)-l>JS<<8$>gB8wSk-p^E8 zq%}D2;`bqEGWg?bolRhR*lCV>UFT#V*?Q-DSYm_o2@L*-(-O%xI!`0ZP0leW_o$Nw z&dtsuWZdZFLi83V0@WXLy5je7=PL+(!a0fGtAZ{BriEw_jr;xZiAVD}M#MdM)1Oqug>v5A# zV|0EAQ9hoG8kp2M*^;=S*)<$1#Os7i`)Nuz1X7-La!m0f)*;xj;^ex{CEkCRhuybm3nJ?j z*|fPC_}GK2vgqSDP74*P%{oE4v{K%#5m`48XV}apkz=#E#>q6LX7gVWoSZcP#dgZg z96H>4de-g4TA{?u%{oZ+88r(s5VtyO2+ZWPHuFLVt;?E%=IOLG^9m4Z%!-nfDl@gM ziT;rFHI=BH3O$u2NlLW}?Z{dejU(7z1)o8clLO4>w;;ynr$?sGe++eo2@%ZU^OOCs z5RTs)Kl;3j=5^h~Ea z*x)=Hk|T&|kFcvn3GTzsq3+ErPbNjA+JT#t$nbXVXQWLosmD4esKJ>h80sMTxpo+dsE4`Ocslb)p?CoSsLM`=pN=kua|~7 zrCanV^a?ZN4J`dlG2NNa>nhTVQ-r+LlmhFu%1$9~Z&C|351XsyPjyz&RUc3hk9gSV zGfyf}d8jD5%!V%$MLgmur6MLo9r4t-qS)f!df4Jv0SmuO1w7`4FN4A755uOBv=ne=6B@h+SAx+kM9+td7TeYSFi= z9E?T?u9$MY5isBNcxk&RN*}pWRt!fQATJw{X{b<((vi1x^2IuNcr?Z-^HWcNS|#y> z@1x><>S;j)vgGk1gb#TFs`eVu;Hckx;Sy+*Zuu-K`wmt1=m{nIOLMroF&mCRgev?F zPqiximkU*u?eO$bEeS_9vY~gnWra1kX+P`Xj>J7{wamZJD$f274J&_k8E=h8_MMPJ zF0@)%KcA4(E<{~$!FRg_Ukw$F^2O9nmn$8=`$4JJCD9Vr6uT-ecU5#7`*K%BxA(1Z zb9Q^*Dy1S>Yc*LWjIa4oWs(m=(iJ8@k@=9vOAiR$18o}CW+|oq`n}?-NGLT0 zeO=jYRcD+eKPz_& ziXP5wv_chw1~l$>6`rhNrtEX6l^eej&CbkKc^)~UGTV~K^L&iet;fxrNi4+_pggBh z=gRfO+&pRZ4&hFE5GkXLuLuts4t{=Ua@WrFj8>h0dmIl5>>F9O$o4(+wPJiV(FQuGj22W$S0iuDBZMR@)((ox-q2A8CvSiDE~F$ScuE&EQbyoDx|w?1Ogqr;kdoUeQMT_9 zt;#mju1%DU2fCT|V2b4@iA9w<%jWkcXc+lk3%X0mGveU}*xkIie4xN6Q z`golnx`Jf2v;*TmR*66JsQ+febaac>)2_RUqAQg$Clnd z)15p7W|f^mGkt29FKNkoE@UjiQ$`uNG+{9#mVZ#?>z3hJ;yOwXr0#ApR_bE(Jfj$q zojP4Jw{pf58CMwQ1#Y5c@$lm$?Oi z;(6V#|5EAc$Y;863<_p_%I@D=+U|{Uw)^*%wmatO@r_h*$E{3a2bfWh78N)w^+$`> zjW9@rGw9j!la)RTOh7z^`M|Cd3Z{UA0>k@Blb=Fcw zl>J7%1YwFq#_Akcgg-%;M&Wpv+zaNH7JCI0oQodxKL0icxy`}oXYR7hSN5yiS|!G$ z!>#ebo4{l&E*<^n%Z zU;B%dL(dPIDurhkg7C4$UK+A;?1BSIsb%V)L7v%gE@k+N6`0M*cA%w|zkfEHV)>`b zqJWxlT8@vN!q{L=vCQ3Xt0cZeH$IMbqKb>?vx^HtqPSlGhRFiBox8=oS{0W{!2_xX zl>#i0JD^_vj(*tCI7b(`AH(Q@hB?=2rpo_B9G&}Jjx}7iZNzpB^}j_fTO-Q*j%K58 z>e5v)74HV-omPufWXtpWw~^3XVil;7cXJ#sUl?r7rB*RHm(Wb~m`i$c>&r4y$N)Zn ze`*vnD0zuxj(d*f8)FL8f4m(dfwB^!m6e{=jRFK^rR^G)OB}2a-Y05egCR2Pwu%8^ z8sTxAvVP&}!&Z9}+^O~=ZMDe5I`?x`=0?T1nK<~ljn({=95>d=juSg8pJSxFfct3c zV#v(4%#1&(6c=jym<^NAzm?jEK3i=N&Q==)VyCIHYRjS1TJu2LLTMexz!2%KvpQSH z94nUq1Jv1IQi3u>%c!v*GR@gfE8QOOx+eWRp&O#l)(wP&ZZoObgP{5ubc=JpKCHZb z7{n^uL82OE{%y7(sXBiG%S5+gKs9%oX8$KuzLkk_bVHSE8$_R-KM0BZ8M6%nv9oPd z{?EAi*M-+pLw(jvrH)C1=6@*sipgW7Ro^=-se8YwoP{*#-by9HCsxQQ3&=S)foCB- z)t;=I0E|c27M>nZ4A*wRNNL1CXlMyjsOm;E6$w*1HF6Pn2HLzfLu-Mr8=`#p*T=+H)&#PGGb+AT8T zl`fd>@n{W#(q$dS>NF*RR=epjtxA27(uIbv*nc)FWxA?=MlA#@g~pfxQiui^Bi0cE z5nry-S0wnxD?S=!V&z-TmUe4`Ynsb70Ow9?E?1VyZ-&cJhoVm^h2q^!vwEWv*v!)T zn++4%yG2L*+0_6-q8j+z1`r62ak?6MxYba{?Qb?@;aeK+z`a1{_KeEZ=!IxCZud6h zJQYU6H6r~ssd$%7joAZC%`reXVG_Bl@fs zjIe6K@wzf@Cm^VHqMLBUEzwvbdI36$88FSl^(uqs5*a+z!OZ~CXSWv+676M$7N8!s z@Ktdy$)GGSpisAYot_m!^=h6PjV=KpQ>{tx)aYKBHPH%-7m*`AT;h)I56Zq1aTWzp z*(SM03h7kU8**maDme|CXraYTgp`8=Ty#j@z@k zr}WfkKqPw|3&Tb&b%o<>Li>!aRyBqyR_2N1E0r`^#JCoD zL31@KW~2QlB;k#adIC(wN^~KnO=h#u7hrG!$t{qWt~9fu-5i=dG;9B7d32JMUyynZ zR-7=bocrr;UNb7{9C?l6rm{{!#gE!~H z9(ZEt^uo-zlhOkviQi2a^G)$E@V#xfthcKDTERN%)Be)uo0Xlfb{e}D+<^ZS8HWc2&X)U5eFbW zw@@ROgqi@-#~?G0f%GP}I=!4w0zi7D#D#|B*-Pi zya~iSapcWIUFPA{L{wmgSzuDPSZt;4N0d>}i`vG`D&#L1N)7%N6%s}+B{Xlf>?5Sn zP+4`I#@*u+GX-=Ch`(ShY8h`dEDQ+f zsN@r$VFs2WJ|gu5@4ptjc}wu-Ey0_&1aICFym?EUgV|$H@a8SSo43UKa{5f(yj4Gw zH*Y;Y^Yj^QtbRzJ(N=<4ng|V(!C9966szb4lFhrcJz_F+@QSw3%_pu!K~uyMdDARQ z9eM3ULOsB1gb2d#M7cS8c$jixY)*eD(~)n@ved~lPF1s$V9(|cq&frqQIs;oi~IvK zM&Vw|8LZ^AqMe3*Be+|ZUhm@d#Tg$+b-LLkps>j4>0L^as8iwoGuDV4#5#g{$hTA^ zI*K2(iIhs<=1oeqPp-RON?u6-%JTU$X*c-kus&8cZBAe;%%PM` zo2v^=c>S~+#o<)w9HJJLHZNl;*fd^0&7VJ=r1AMPX*c=bNJv}A(mHE#@iWCOI#b+Y zB`!n<$*0|uF%z=$LW|@dXY;|8pUk$@(bs9&`RN(Ri1FTOYyCYDV9TVf4d)psh>>(hv_?5XS@P&y zE59dwr7%5MKmzhuKzdd#2`ED2ttJcj#~>Adr7%6){))u#R|?aciHDV#!8cm@%_pH? z=};PW$_wS8(Wf`(KvAev#&5(~9ek8Qz!4u)BErH4(zsz6q0gW}07n@hf{!x5e?H0} z5U`tYpUsC>2ZCY`nMr6rw|`134jTN|6v9 zT3sE;PovJ-E<`6Y23i!7v|5zzLj1=e29zmf6liH5#eK=|t>n0QR!-SpG2h7W=cQos zP(o0YjMQe79m7q7PC7jRvnR@id6=4zyEND=<9-PAga{@Y%*l8c0k7c@?J)kD_d+!p zj1mpz+Ur3Ho<@lV3o`QHB@m1f6^s%Uj1m=$5*00rkyJ2BR4__ZFiKP~N>scYFNe_u z!$bwcLngPR4__Z zFiKP~N>ngPR4__Zyj~fHaRtLf1;a!I!$bwcLdv(CMp;vDi|gz7$zzJ6E&6y zMu`eWi3&!EiZWQ`Zow!~!6;F|C{e*EQBjN5zFaU$RQwegtQ3dAf4^Xqs9=<+V3ep} zl&FZtqkxGDhKUM>i3)~^3WABQ6^s%Uj1m=$5*3UR6^s%Uj1m=$5*3UR6^s%Ui;!`n zV3ep}l&D~os9=<+V3ep}l&IKHg7&{njD*(P1;a!I!$bwcLE5kLwvI5haHod#MqgF}O-#1az2CHbAlS)+i!p+Un`Y8BLsZ-F4( zok~(Jr3(TaIvnY8PJ=^(0EfN^l3;MCU~s5laHvq=&|KmT0vx&uTzL!*4FViW=b02- zBlj<|TC^Zy5buTmAPz=>27v;-AfGwJV!Y?j1SJUcCp{A}y(gX^UJB_%s60l027&$@ zRDcBZPzwV6siybzAPWNhNl!9SKBNueDD>!Pyr%~t0) z6*LGe=V+9=>~T1ktc(!7t)|+wdX+Nx_Zs(|+G?J$3;BrjYBW+&1a4Do>q@V`HZfU+ zwnTJxBkm(sv4}NCYarWMC3-?Ig5JNw*({`d3<7bhOigUf!ch5xc%Qb)b+}b1L?=L4 zkpdEv7rL$%fhfO8)6|D_v?(JiX1|6^g9o9Ldh@s1WXwVm@j@5Ua&SA+@?ykVq73c> zTkM419`Q$H=EWCcDV^29J{KukcEJ69)2b0&&`d*LLqDriKHVFk95PL926<)tp&jIm zsLiK9ZRpL;6ey*@R!78qS<##_>Ynu>=1hLGqL%o2gsw-~i%b}#9SUGm z0j!>O9QTo3bPuQEe5hZqzp2?0xzlAf(B}%HvuZA5o($rF-*kTTHd4hl3-&N!`~28k zBBYslEWUp4{8;@tAf%hw-5~$~kp-~}se<#&9J0Ax|Hgcy^#m&F$v~xiKrQ@I9JWW5$S$`XOsyPDd;ft-;TLwR*~E#+_|@CH&5cCl)h z7PC-E0Y;M;-Y8HS{0egGl=h%(3H)%rDW~6Ng$g-~E$t`^TBTYZyZNT#06(!#&FGrpz0>G|#7RMjKW43_hEy zO#bC|D=VCdR&7md)|v9_r#O0RIc7t5%p@w;$e(Ywdc>!60^^jxAv#w87h?Frx6X)( zEik2nvcP1cZF}PG-JGhqtCsgzqOp8ODF_*4^*)DZ*QkZcS!BcB{pLfeUB5D3$xWyC z@I4$pu`s)g`%fR;a<<2--tH}5zXN{K{%DxyHGbdKy_9Bqm11a=y^7E%Kf#EG=#~^f zT~*D|Y$G&VEFBgwr}@3)ULlwi8b6Jb?Jq_V%;A1t=N?LKhlKu*CFBnGw~|xtv|=?4 zXrtzMe+%*&(dt&@o^wGM=+7kA&$Hc?gt*QUhqki>`P!XURcStP_VIha1Jf0nb5w$} zu9(Uon=i4dirz&lG&}fxo3;PGNr^>CUs7CGFR_Zv^W?H6R#6Q*%+B$Lrm;pnjG7B5 zpF)2gsd&S=Drt2>LZ=eW=im~nU7Rga;%Ao`+H*$$+`?{XfYJWeb08?!@2k>6`X`i~ z$U?~Ax&9W);FFE^|3OnU)BL^{yQd-R4U!|JH_IUJP7#~6C zN_`%SuvM3xqXfOCGmbHwC*=2%n~tln<|Z=LrzvdIiSm=BR@wQh&~eP8DP};cfqEv7 zWX&;ZKkuewQ{bIiCAmIPq&Z>Og+7uEmJSqvL82Swu)C~sXBk!c8!5iOb(V|ovYKTv z+Z!pxifusEd!1$DT~=Z09hAf76yI36_bw|(v29K%AvRjHgSZoS;qV(DHN?kKwAshT zEly$Mcl3BK=@B|B5#UgUlGOO^?G}7vs6n-$<^?!X|I%?o9L69%3Y;AFsjQ|lR-V#f3qijEBO9O4QX5o6`*T;&ES6VFO9=X6wh#fDR38?Ec6mey1EQ7`DI zEV4lNyX^^^|C~_2V@eSP(2T3r%75Ntm0xt6`dhh5xvQPZV0R+rtO^vI9meG;#nfdm z{HWS1PpMUs21MyN8HniZ_Mm=p$h|m^swXv--+jK>@`ih@^4=SZI9RT^qHMO`eH~S} zN7SYfSj`Gp;7C^>7)BGraG&oY zxfdCBMix^23#Y1N@;}MNd?*Mq4;GV!YF%#Fwca zS!0dr{0hZ2L33T0;Hq%B@HOXKG}lzkbz_37jW3fHuxRp8ef&&Wa?$_h*)mEkXw7hP$HK6q0)Q?xG1h2MI z2~H&vl%YQ&!3V3YK7kvF^FGCSuWa*xRa4H*rQVxKashgzTB0j*m|E2xinXbwyyF3D zU?4)YMM~K*^1}zL-cX@E#y^ zo;zMnrJt;L2FuWc)}V}^X+*tJk&YC|sSjEmRl4zKq?=29bfjX+k$<9eov3op^YUPJ zAYbM*SmmXMNUIue)`h6>2q7DAJ;}eIH*A41V3@HDR&f<;)=A|+=<|*f#~Ws?H-}R4 zMxe-i(krZF1?2VyOmDbng}vvwGy7;OxxWFRX+{;qyu4gZ(;h5M(DS6g%hR?Uxk{0d z2}Q1g6{4&`fw%busC|siF&5I?%Zq*(XJP}$R4v>vM&?2y3PTQ$kO9Tw5EFO~mn& z68cTERS)CLO*X?%o)WiySdkNFq!>S?8AME_1B?@>?W zEIqJq(H$zgme7RgD^L1&gnH>J<-=B42`Bo>Q>hb050e4D^7JLl2I?^SLr3}1!+2X< zN@Y0U;SOKSpkIizkcFJakfJ zjgLyQOeO84ldec4-Oov>zbx~#b@gpUiZ1i?A@mJR0(+9oyIsYviv5h_<~<&E57Gp* zrWu|C<~R?&eT^p9L4Lf!Dvf+iLdSVZ=*69c@H68|Pp~Hnooe6tnzCu^G1>YNt0>Ts zxGx|HhOthLc*GTOfu~pr7@-6V^#q?|0gFxx*a!g`4^cIAR04ho%6*Sm;Smd{HFxwB zk`I_(0a=9_PjEa&)>M1CD`65B#JSa}=H?mk4PpZmztQu9%IbHnOa>z!gJc^_j zs~nfec^j?LOwO>_Q>-$qi#;v3ZNyj9ID@j&8O(;!v6WB1U`;Y2U5IehHtCJCWrniM zRP_&|^78Z05O@lyS*XX7bC;6Px!W*rl!tzVRYM*S{gHC5(M(4kdZ)8 zMuPK!jRb-+61GA$mmfW96=vO)u2h(%ds6J63~t8m;8d!~^~!dKw3=vre3=asNll&s zthZZ}&TPx~$==It-)POhB*Fhof`7T)O7V|Sj*b;}ejAlO#$WSWslwQy0Na<6z}sx! zPDd&EXhL944_ATP5&~6S+-A3T>w+PTx7j`2y5OdF#~F2TGj-PfsxE#_QF;84eGOv} z(Qr*qw=y&jyK%U|fvjn#40WD|t@bZvm3YU57ShFsEURn_(+sJ>KAnC*bu7pDQ-%<6m!a} z-IREf|1nke-C~tzR8XVtp=$Tj6nWzoET|kOW7OKd>*Qtx&H3`pE$|&IruN+4_La#W zkuXk!o|&yIHruDP->&n=w5ykEFwK(a;0T}9!4X!qqC0pZtot{@XZLRq&~)X4k6F19 zgUXq%w7)_tk(*GWeOHS1+CIO0|1qnykZav*mneT4Ap3o(pqN$>;c2gI`M4GC#!RN& zS}~1?en~P+yR&XOs!C0_TSLeL)HHvySjZH)@NuiOl4bm6h0l`ln^mP{7?Ce2&Ce=L zzTAs6RXp1LY_(B5BUC;=TeXQa^U2^ps5A#WGW>)UZpDdyuu2uv0HbCLwUDTVbB}Q_ zmb~f-tDl)JAAiDX)BY1G>xJnwr}@EF)io+%skVLLpudA=ZWp$q_bt>`VPt=V1GikEiw$&<4e~Q%Y&6K|KW1{%! z>C!c@6Y>Kx_y;Se^)+PMuCXg28@;^E_{j*>QoL1vmC@}jlF*4Id}KA%{lVJVGUd*6 zw0z@jdFmCbOH1fuMtalzmEMxU-Yh>3jD8o6`dhrY{&wE* z&0bN73BR|Q|9o%M>YC||*{N&275>5A04Q1Z80#F<+v;X-TBSG7j>wnawHm#}Bf&0r z`|WVk+V`wf(>iR*E&HvV=FFxs2dp-x-2J}wZ*ybQ;~!W6zK`PmTyO4W@{PmRq;S?c zZyqz|kMtJa>@8zPb>D^=3oeu0KF7)G6;026ZdLi3PJC_MZ(2w1ZMye})yXm=@|Ewb zljiKE7mr$PiY%D#yG(n1S<|}C_D3mAcXhW9R;;MAyiHRl+2@+z-ZI&)%CEawH4EJ; z_@8ZL8q=GOPPV0Oo-db7wSRA4GF&mZ&wwEq{Vbe1b*`o#(^6=YtBJLHW4wHBntg+H z=rY;9Rmru^La|b5xbeXB6lXoTEs_DsFbCzp*q0F2GaqbSEJgxL@9i6rb9_Su{g%-ot zB%M0>43OEHo_rq3Vok4*2PwDYgIG4|=xUjH1EQ0UyLm%LFO@whI{Ap6<2pJjXHazV z2}>>gs-!dJdWudy&8oAGu9k1zVBZS}^SC+ooPo(p>Mv=oOFhrY`a>`u0%6j8bxn{0?gIOmtZ?r4S7iE_l?ZW(`OI2F5 zV7@jYZ5GnbmNRZd+K60oquoFMy%j2UnC42wGf{DUbt6WtGMPWm?r!GEk@M`rg5-Dj zJ2dmrd*$+Zb|prDJ@ZiOv-RRrfBk^@yJmY^uMe%)d3~hmOM;5gb)6s4^r5nNK8(=R zQbp_DU}U7>EI{@`Cbhn(ppI z!#gZrD>OZMY5!qO-=z#Fa~Igr%!yr8?w4sLj>+QN>^wU3om5Fa{_QtSPhNCPmrpLR zbEjlu3Ps6k0!rFVTBES0C(om6KqtGnhwEt_jQ*N`qh11iTg$mv(?`qdo9x_X5#3&N ztTCRVSM;>9hs@E8V>>C4S8K^M$0G%ko&KvpCq>+&09{2MbtR&SzJ)B~`?P=q9>vl_ z=S?4zCc*dW#erH)|4P%>#uWcDP5(vH1A4yf@}~tzkvwA&y_n&OX#N7G=gLV7?acgg z1SqrQ?*?^|^$XGZ&eze&zS@x-J&?8tP+4Ep*a^3+x9eodYoaSOJsG00j>V0m4ML<$ zvZL)KO;7euzoqGeo2!i7KJu}qPtXfs-|7M62xn7m;fX_9yC*KXT4#bz*|)t!Sqcr5 zuM&AMj*eZ!$#RYRUQ`M4bToaVl9DC+kFL=4mvz114TZ0%vgab0_GTTuJF3L>*3tEH z2BOW)oN4tdnrl%D#r3h~dP~!<(_VmCn*OgZ$?g$EN|()DSt5_hpqmIFG# zp~mjrimu5c#wqoV3`^G%u0k7TdYi*Jv4^YE|7C`E8n> zd>GY(au1RXd`w3td*|s(9aMy5AIoc+p8UPX{j&IG*z>SbhEBrCL_x(%s-SKqrr;S) zQj>uUIdU;l$IEnd@;hm@reCBhajLdM4^3aCAqe!MOV#f)Un8*QW^eLG|-$-0dh4YKDg(08Yf&e!!^r{%q(>Dw<+$tGy}yPBT7^zenI zC$GnOFpH+_XKO{Pw49Kl$Bq6g6{S)~gb_h@-<#BVXfG29N?r*)Pt%hzY6CUBuP$&{ z%cuQ>BEDMs*+y+ujqo#$ zs$||QRfc4ktE1`3i*mX0N#vGauA?{2P+5Jd+u}L$Afm_B>FASf6#Y4^&=^fmhR00> zoocc!sV3)X{!V%k5l&LR?%-_92jq;~(J&h|SK?qcJv8su^dkjIi_3NDH#I#+)7>Hd zJxvemana@fQqz-{j*csO{J%jNvDbhbMlwt@L(>C!N+JD-G1_Rlt)IdVYDLe{^kfJl z?Vm*6`dTr_a^hEL*5tM2Yd|NsRk{~R6>W6a^uKjh1nq`5hHCoAB1Qj9D>7Qq9v`X!>MbQaBy?TBGS_`_^%Gx~7le$vB3R5jw%Eh$tbOjQdQpOwl9mAkFcOrq9$# zp4D`#nX=*1@rp20(}S8GYpql+)AS-~E=6yx($ThFta2ZweKbA!q{hoNJsFvJjix8B ze$H*WajE@7TGRYhcCWOi-Rtcl+uBqkKiz0orn+ i32 { return 8675309 + something_else(n) + global_value; } diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 120e5514..51e3d552 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -89,10 +89,7 @@ static b32 check_return(OnyxSemPassState* state, AstReturn* retnode) { static b32 check_if(OnyxSemPassState* state, AstIf* ifnode) { if (check_expression(state, ifnode->cond)) return 1; - if (ifnode->cond->type == NULL - || ifnode->cond->type->kind != Type_Kind_Basic - || ifnode->cond->type->Basic.kind != Basic_Kind_Bool) { - + if (!type_is_bool(ifnode->cond->type)) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_LITERAL, ifnode->cond->token->pos, @@ -109,10 +106,7 @@ static b32 check_if(OnyxSemPassState* state, AstIf* ifnode) { static b32 check_while(OnyxSemPassState* state, AstWhile* whilenode) { if (check_expression(state, whilenode->cond)) return 1; - if (whilenode->cond->type == NULL - || whilenode->cond->type->kind != Type_Kind_Basic - || whilenode->cond->type->Basic.kind != Basic_Kind_Bool) { - + if (!type_is_bool(whilenode->cond->type)) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_LITERAL, whilenode->cond->token->pos, @@ -152,9 +146,9 @@ static b32 check_call(OnyxSemPassState* state, AstCall* call) { call->base.kind = Ast_Kind_Intrinsic_Call; call->callee = NULL; - onyx_token_null_toggle(callee->base.token); + onyx_token_null_toggle(callee->intrinsic_name); - char* intr_name = callee->base.token->text; + char* intr_name = callee->intrinsic_name->text; OnyxIntrinsic intrinsic = ONYX_INTRINSIC_UNDEFINED; if (!strcmp("memory_size", intr_name)) intrinsic = ONYX_INTRINSIC_MEMORY_SIZE; @@ -206,7 +200,7 @@ static b32 check_call(OnyxSemPassState* state, AstCall* call) { ((AstIntrinsicCall *)call)->intrinsic = intrinsic; - onyx_token_null_toggle(callee->base.token); + onyx_token_null_toggle(callee->intrinsic_name); } call->base.type = callee->base.type->Function.return_type; @@ -508,6 +502,14 @@ static b32 check_function(OnyxSemPassState* state, AstFunction* func) { "exporting a inlined function"); return 1; } + + if (func->exported_name == NULL) { + onyx_message_add(state->msgs, + ONYX_MESSAGE_TYPE_LITERAL, + func->base.token->pos, + "exporting function without a name"); + return 1; + } } state->expected_return_type = func->base.type->Function.return_type; diff --git a/src/onyxparser.c b/src/onyxparser.c index e0260c1a..48799935 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -734,13 +734,18 @@ static b32 parse_possible_directive(OnyxParser* parser, const char* dir) { } static AstFunction* parse_function_definition(OnyxParser* parser) { - expect(parser, Token_Type_Keyword_Proc); AstFunction* func_def = make_node(AstFunction, Ast_Kind_Function); + func_def->base.token = expect(parser, Token_Type_Keyword_Proc); while (parser->curr_token->type == '#') { if (parse_possible_directive(parser, "intrinsic")) { func_def->base.flags |= Ast_Flag_Intrinsic; + + if (parser->curr_token->type == Token_Type_Literal_String) { + OnyxToken* str_token = expect(parser, Token_Type_Literal_String); + func_def->intrinsic_name = str_token; + } } else if (parse_possible_directive(parser, "inline")) { @@ -759,11 +764,7 @@ static AstFunction* parse_function_definition(OnyxParser* parser) { if (parser->curr_token->type == Token_Type_Literal_String) { OnyxToken* str_token = expect(parser, Token_Type_Literal_String); - func_def->exported_name = - bh_aprintf(global_heap_allocator, - "%b", - str_token->text, - str_token->length); + func_def->exported_name = str_token; } } @@ -884,7 +885,10 @@ static AstNode* parse_top_level_statement(OnyxParser* parser) { AstTyped* node = parse_top_level_constant_symbol(parser); if (node->kind == Ast_Kind_Function) { - node->token = symbol; + AstFunction* func = (AstFunction *) node; + + if (func->exported_name == NULL) + func->exported_name = symbol; } else { // HACK bh_arr_push(parser->results.nodes_to_process, (AstNode *) node); diff --git a/src/onyxtypes.c b/src/onyxtypes.c index 10746fdf..44605492 100644 --- a/src/onyxtypes.c +++ b/src/onyxtypes.c @@ -106,3 +106,7 @@ const char* type_get_name(Type* type) { b32 type_is_pointer(Type* type) { return type->kind == Type_Kind_Pointer || (type->Basic.flags & Basic_Flag_Pointer) != 0; } + +b32 type_is_bool(Type* type) { + return type != NULL && type->kind == Type_Kind_Basic && type->Basic.kind == Basic_Kind_Bool; +} diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 8733c75b..66123bff 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -826,7 +826,7 @@ static void compile_function(OnyxWasmModule* mod, AstFunction* fd) { bh_arr_new(mod->allocator, wasm_func.code, 4); if (fd->base.flags & Ast_Flag_Exported) { - onyx_token_null_toggle(fd->base.token); + onyx_token_null_toggle(fd->exported_name); i32 func_idx = (i32) bh_imap_get(&mod->func_map, (u64) fd); @@ -834,10 +834,10 @@ static void compile_function(OnyxWasmModule* mod, AstFunction* fd) { .kind = WASM_FOREIGN_FUNCTION, .idx = func_idx, }; - bh_table_put(WasmExport, mod->exports, fd->base.token->text, wasm_export); + bh_table_put(WasmExport, mod->exports, fd->exported_name->text, wasm_export); mod->export_count++; - onyx_token_null_toggle(fd->base.token); + onyx_token_null_toggle(fd->exported_name); } // If there is no body then don't process the code -- 2.25.1