From f3a40f23e832346d98b393226a0c9af0d2ef4e20 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 10 Aug 2020 22:11:59 -0500 Subject: [PATCH] can include other folders in search path --- .vimspector.json | 2 +- {progs => core}/alloc.onyx | 2 +- {progs => core}/intrinsics.onyx | 0 progs/print_funcs.onyx => core/printing.onyx | 2 +- docs/plan | 6 ++- include/bh.h | 13 +++++++ onyx | Bin 386744 -> 387608 bytes progs/stack_based.onyx | 5 ++- src/onyx.c | 38 +++++++++++++++++-- 9 files changed, 57 insertions(+), 11 deletions(-) rename {progs => core}/alloc.onyx (99%) rename {progs => core}/intrinsics.onyx (100%) rename progs/print_funcs.onyx => core/printing.onyx (98%) diff --git a/.vimspector.json b/.vimspector.json index 41b49cb7..3423b8e3 100644 --- a/.vimspector.json +++ b/.vimspector.json @@ -6,7 +6,7 @@ "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/onyx", - "args": ["progs/stack_based.onyx"], + "args": ["-verbose", "-I", "progs/", "progs/stack_based.onyx"], "stopAtEntry": true, "cwd": "${workspaceFolder}", "environment": [], diff --git a/progs/alloc.onyx b/core/alloc.onyx similarity index 99% rename from progs/alloc.onyx rename to core/alloc.onyx index ec753e5e..7fe32477 100644 --- a/progs/alloc.onyx +++ b/core/alloc.onyx @@ -1,6 +1,6 @@ package memory -use "progs/intrinsics" +use "intrinsics" use package printing { print } use package intrinsics { diff --git a/progs/intrinsics.onyx b/core/intrinsics.onyx similarity index 100% rename from progs/intrinsics.onyx rename to core/intrinsics.onyx diff --git a/progs/print_funcs.onyx b/core/printing.onyx similarity index 98% rename from progs/print_funcs.onyx rename to core/printing.onyx index a9a63b57..dc56e887 100644 --- a/progs/print_funcs.onyx +++ b/core/printing.onyx @@ -45,7 +45,7 @@ print_str_len :: proc (str: [] u8, len: i32) { print_u64_with_base :: proc (n_: u64, base: u64) { n := n_; str: [128] u8; - for i: 0, 128 do str[i] = cast(u8) 0; + for i: 0, 128 do str[i] = #char "\0"; c := cast(^u8) ^str[127]; *c = #char "\0"; diff --git a/docs/plan b/docs/plan index f025768a..9035a49f 100644 --- a/docs/plan +++ b/docs/plan @@ -159,6 +159,10 @@ HOW: [X] Properly checking binary operators - Shouldn't be able to add two structs/arrays together + [X] Include other directories to search for files + + [ ] 'use' enums and packages at an arbitrary scope + [ ] Array literals [ ] Struct literals @@ -166,8 +170,6 @@ HOW: [ ] Top level variable initialization - Works for numeric literals - [ ] 'use' enums and packages at an arbitrary scope - [ ] Better checking for casts - Checking which things are allowed to cast to/from should be checked in the checker, not in the wasm generatation diff --git a/include/bh.h b/include/bh.h index b3085d29..6dbf7d1b 100644 --- a/include/bh.h +++ b/include/bh.h @@ -283,6 +283,7 @@ BH_ALLOCATOR_PROC(bh_scratch_allocator_proc); // Allocator based string functions //------------------------------------------------------------------------------------- +b32 bh_str_ends_with(char* str, char* end); char* bh_strdup(bh_allocator a, char* str); @@ -1200,6 +1201,18 @@ u8* double_to_ieee754(f64 f, b32 reverse) { //------------------------------------------------------------------------------------- // STRING IMPLEMENTATION //------------------------------------------------------------------------------------- +b32 bh_str_ends_with(char* str, char* end) { + i32 slen = strlen(str); + i32 elen = strlen(end); + + char* s = str + slen - 1; + char* e = end + elen - 1; + + while (*e == *s && e != end && s != str) e--, s--; + + return e == end; +} + char* bh_strdup(bh_allocator a, char* str) { u32 len = strlen(str); char* buf = bh_alloc(a, len + 1); diff --git a/onyx b/onyx index 1234b0255ab602b1de965ce85577d7e1c6429f09..7970dd77d1f14611472c14a3e7c52b43baa2f3ad 100755 GIT binary patch delta 45113 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 delta 43077 zcmaI92YggT_db4S?(Sw6HpwO=AtZz()X!B?sZhNgg^Sd#mH&dl9q^M2poKc5eI=9xKj&Y3eaXXf7B=$iB8 z_ns-Alfd_0&aHK&%$y2bqn|ky@&t! z^LytCZdX|o!s-;vOC8Smu`lxOHk`zU6bxt-t+NINGn#%Cq7UA~@?2di=8fu5omDEx z?QmFUFBNp@ax##w+L#yp;`{v8y9LKzJgc+v1#1RXX8h6H1qTPep!2nB^TLPc^S|EA z^9;YkoCWWWh_>JpEPZ`DePcsW1O?Bz~{Y81U z*Q)aQiwf$zHionCf;VT@)OpzdFCMC@*PFeBQD7b@=@3f`{{qto;6ryh}@xdH&P_S9TC%74u@3E@Jk) z%}YD+TzA2rOCRX`-jKZ8InVHoL-HEr&I+tLglTsIGM8Cz?_pZrxvu5%&gE`lP4Zq{ zQH9@{p0|F*aDI74o;|NCiz?`w7aG7?6^woJsFk}16(r@aX~v@RPW>>KB@}eLw1@HI zHS?@j*0RvN4OeE8?W@C?rC`z3tq#_vAn8^-<6qnIy5DZaU$^Cn+i`r1EpOlLn|y&a zZ^NDTd|h1L-8*ghBTHWL-F^IORNlS2i99zvFZNz7KC)8YbN8ZIT;A||?HSM8d9Nbh zS1IqSdr$bJsJxTE&gJgNypF%MVcqg_f9uVcK+|uVS!~|Q`_Hm|c~|c@W$}4Y54y9q zdE*|$@js&qav$uk%m#}NVQd-y_MXTs&yvNCIxI*;hcis}T`?z#HQ5uvUS}-UlT)4z z;r#1=#UB+|?SS|G)wHaPU1D}LD=%6`u|YhrNcFlztfIIU#ok~Y#jDZG&3E7Q zpy5^B(&Q&i6Y&*!v`CL*PLUtW=2({f=vOz-a_71qb&6l(*i=jV(seoUsM~z4lw5LU zsQTw>sk$qbA=kT9oo99xR)bjru6P9tqnJ&ct_s1IFMI3m*Ja_Jsnys$W_k7pZzTzO zvTCq;jQ{z)7+4E|x|6_`@*i@74W1T$%YOy+uSH7Sm3Tv~2Jo!6cTu1U% z-zw6vE}PFUpI5|M57B$ZBwd;y{9Eg>S$xqqq&i9TsSonq*UC;nBKwhlc8)qW6e;ak zh#23A)e`-ZSQS=Z%uZsf_#06s##r6)`F73_o^;NW8e# z3H{}K*GXl4c@6(+co-y3rm|UVxcI9ft0!J*$ma4rUx>dOvem4T$Zf>_;5AP96a|ZY zjoDzfVs%qiSt-Uyw)5>LNMbjCa@r_bcMcL>MZX zw)L}Y6aU;pB;Hf@Io6Kx{(Dr@f(~pr|75o! zaUDTwnB)MFrMpy1&rTo@3KV%jq^C)ib_O}{v1+N&1tiWSpAcEFQ?>Me9_028MV^4L z&SF4U_9ojUlDe}7qFy&tRZ!)VDDzn#DcK?2L4NvB5raskN#5)M^5HhslG+m_)Ffw# zO#MK$y!-;lrS}!F^#W;Sk_|*QZB;GJdxMlU$ps?gx2TqheL%k5tVm#AkftWtLS+3W z5z>#n!7ZDV#Fc&+$w+a%KSnjZKLozqs2ajv1ZiNB?L^kRt6H9Y38eTPMQ#uoWRlqf zK#p%vEztu(>X>8?k=%UM^86r>Kh`U9mq=feEE)____k`PJOregNe&TN@|JAz^cu>7 z7|&cstgEiY%thfzA zE&Ifm**(7XeGxmFP2o|i#kCnMLF}l_T;j{otPVfDRs1`eE#V2PsHNuSonsi|#d(s5 z52vw#B5fS2&YzPtX2-Y2vC7zZh2z*OeA)`B(KBE?OJ}t8Cg7MDoI{nh#MFuGW4_>Z zDWPoAj`Iwk#I`fOW|^Oncc#F|&82>l{1tYUpUL)<88a0!(Xz&Lf*jwW23|3pD&0rh&*#*>chyOHR_5Wig%jc0MIXa7d z!=vV@mLqQVGV3R5&t}tj*|}6#L!6$?I^e*nFo%80zn)EX31Yx}7U8Klmo;a+r&}Z~ zV6DZvc`Tnz6p0I18!>x6vY&eh+(cY$6{d$yD*# zGOUQtC;RD>sV{Ch8_H|?SNB`NT8byjA)Pmgq*F!VN(^J=>!|s2BGpV4i8&yBC6P8m zmCR|XJ~BZ($YF2tDif5gBeR%Q6y##*EgbJ>9cBjc`{R5T9HL|e8^ijF(Rr*QZ!u4; z<5PLicyugDNkiSmu$8E(CTpZ;LwVL1YMv_IUWJx>qy21nN7!04TaC6Z{%tE(vq20Q zTOiBJ0ge$kEpdbigmdmFrKR&4MDX57pLsb>>1mXReuLfRA50LAH(4e2l1O-y-RA3t zi?Fq)1m6_fXHCb*v5Ny9bMZ-ewzEsCa8VYs+uEB7R!W8nakYF(2owE(-El0WKE9 zH?TCuLOk!i!zN%iy{L}(E*sf$ezw23wvpjh=Sh8!g)ly%pUB+A_VLfg34Jq5#*{SN z%z8s(&StFnS$$+K5i(#SwjdW>?M(;ZTRgqDYI$cXdzo+OrAVvyafBUz!E@_<_K@=n z{l(=EStXwRqA325Ewp?3;OP5LmP^F$WP`-Lk60{!r<*5eJ6pjiJM3f!Sr75z$Lu9O zv!^)nF)Pm>r-_RnV{zv;7o7@lpS;vu>?&Y_4fb@{g~J+qW8`j@#KOc{0RORr_;NQ( zm+7+SZ$=$ ztsa)Zjo#uL539ky>n;8z{IIvEwwKk#PVcstz0KNt9`0pF7;Xq3?`M-8ulLrpTXXQZ zB?cZ~`R-d13Ev_6!x+rKZ{sGo~rj0aqF?dh9C3p|kVaD04??_!e zG~5Xxei&ZJfkcZoN1*CxYf<0TE?o>PWWD&tR;vH9mg3SkIH!V-LfO1@QTr&4i&kRvQ8uO47cKv{&X(z= zb$-@DTsnaVi5j1<(e_iS(++X8kcIJrG_ms&Ru}nv0yz*f{p$>d)EqS`C^>v;QZW zo2lN<%eqa)fD5p6Y7GG3L!CQe|PbHt&f(B}4|p zYrMXwe}c`c^>^d{ZFMYl^|Sh@5yg9WT$EI~V7y@%nc0b%*?H2vEkxWYRyXjaMo?)kiD=R16l+{3imI}uHe<>OV@jbhWv?-12Q8Xx zYElkJ9wH8(!aaLeTaoky8yNp1w!(tKDQoA=++qaJpF`%eGja~wO+U6Z6a`2dm8;%93W(5?;H9y%~(aNkC?5*%hboEx0H6>b! zm@}A!=3>Gb){6h#K(d+?3e5vzAjmWe#Kgp>z6D$ zpFQk0ZTy=o22(>>Z^JCJ;e%wc3k{+Blgu77&4xb0a+b9W9qFx~Vb(iDkF%@?FGv#G z&a#1geWD0H$5Q!-MA7aXl4wIQ^&H+g8TG~Xb1a3QtS@eyL&{xUUqpV*8sI9};cFz< zPwI+yzGmy|yj<^p5ArJ2`wenvT}{h-upnH_{RXRdeLa;B7T2MK(3Q`sD-zGMHMM@O z^S`zALT`U_QbuXOJCXea|BfYwzFOO? z_fB7wX!{+GjYi^?@33MH)D|1RV=HRCQtN;Fa+~V?MmD}CZOhSob%OZv0*i<`QB$ek zZ=rZEORcjOfOWm2rYO0WaoipNE)G7oGlD%`^LsP9A3=oWjeX7Ex{pYh~Q{o@&r z*I7M8$huhfwyDV7rzK2&QyTqJ( ztUvGBfEs$Ue?-$?Sv;@Vz|;R%_CDiTcRY^!tQ_N!iK5a2mdwZ95nUg!=lBbmV*LXg zPOsJ%4<54b_&fE)gu|?=*!z$*;u-Z+<(Rsv^4{;rFfMWbAx`*~kJvGuR7Y4JvwD^0 zT+pxu;rd)F6)9Ul~IK754|9se~fn{xbUa`!DR*+ZY4%sVnYPAvZuHyQh5@e#1%v7eCd5MEr@?kmly-##Kk$BWL0qCeRa-aWzd z;}aIhf?}}2yrB)5A&UP(W6SE|&%fEDpeCiZ*e9G-bh>!?^*eQ3f-eiR7A2nJ{gi(+gU9E%VM&%=%AQxk_L)?bov|3xpP3D%sbi(m<3&Z*5(7t`({$z5-2cB$EzM2^s#ERb8Sb-E^E{aR zf0%;fx61$jDgCuC4exl-OG;_5jKK+x7~Hx_0r-E7-~jcjgpM^zb!60WGdf~Knn-Gg zYdyWKw0AB6eZC-HoEssx@!DaY?h_)%@#fXr-LW){z+(Pd|B zoL9t<+L~nS4PM^9L|nbk(wrV$uKX>?+2ixB=ZEJN?zHpWzle#kJgI!ykH~wglYkb- zCz)Aa6*c@y?2qN~5q&?E4&X7ZurU(#MT)>H$HaqJp3EJ$MYT9yoqu~$bd2LIB0l)U zCu{f0e*UT05Xb9B413x(!rM0IQ*kqnH+DXx{30I*(<4Q#c>Xef_K;llyx&h^PdslI zinT;fi|LV>3koNfCz2QPMkP_FGOyKs;ZfQ9iS&@Xd&)LN(+^0h7_4Stah4k z)O@zqFml9Se=}r`s=T?g7!N0VX~h&RJS$FB<#j^Fha-Z^7IdMjA37|G5CPSAf^)r3 zF#N1&R*g5U^L;N0^@2li?IS0E(vI3_NINwQv7s7&ro)a~W!1XdK}#Nk z%+9o6h+ZbInc1l$w#r!=322ptr=N2;ypHrB_i0BdXU}{iYEu(S$pFW)jltp)Z#(jrn|dkQ^^lXS8VO4y2_}gia&^*wSBs9A{#Y$C6>CnChsb4 z)$wV<&GdQ#uf#ijuZ*0n>ucgYK9)v?UsO$=dQY3i?vzclFQ}%s>-(D6B9U7g3g7rn zHU*!;Bq9_zRsBMdzg>3!_*>O|bds+--}jMh`rme#(#cbPW-R5WkEYddTCYR(=NlN#{qK@E=3 zLZobeyeRsx*xZ1}@tp6)$p$zr@-B(c6yCCOz8}o3H*ob#$TV<2eY${yoYwE_!Q(GnW74>@F zQHCP5Ec~rJKZ%qrvUj^LONsowf<#&dzjoI!_D51ToFN_Vi26-F_K${sJ8hZ-gG{T}gF6JE{vq_wx#lmp^R)bIzh#N#HsY0~Vu-eEV} zLubz9fW11@+?k|y1SYpj90GdQ+}X7X#DJ!}X5F?vg&$$Qr0lZAlwY!YAaiA0^kvpt z`Gz58r|@w8>n(AnDR1On{T@1G9nH-8M!wWIyH87}A%21x{yPsjsN*)8p0r=79Q+~4 zT0>WoM0h!ZWoco6qVk)hl%2{asGMbWDycvzwIIJ3mDz`81G1Mbl_d2xbhzCMDzDTRL{A?ax#}K zI4gA>FKS7*hGl8}V7REx2eO<)<;xqP?htt@E;i@o(@yfS2r-yWIE>Yhh+w+=OnGw0p47yWiq)KB9BLk>a( zb)-rhn)Xi%Cd9nX3ued6reEXPo^;+e)&1{egb4r6;vbd2H<8NTe?Ovp$K;QIkLDqu z^9{p^f06iC75@_P@8SZ(_!ml~;FH8&q%H*y+#F;c|6O)MiMTe6hl!=rc)oj^L(@{Qom`uXjcX|9 zY$-NQ0JF9h8+N3UweJ@j3BY1tCb0bn#l{F=;-O+=DX`JuVq*ueC-5wA9`HW!HqeDb z@cARfMj~(yunX`z;CSFotmKttae+O3wAk2-3d^U(#zkO*W5vc3;GT2EMx;~I9(-MF zGzNZnq1fmLO!>apm;wA0xDMFnhhpO(aPj40;}WpOm15&x;M(iOMqHq##r{-mqyx*{ zDmI1ygYFa?i-Fhg78_dvae;p49!89ctlx``yTGQ8iw$Rxrp5@R;-0Iob6fu|!% zjAL#T+LkXdihw&JOANb9(`*$=j0E8Oz)axFQ6$*K5pWpL z9-?WRfC<2x^jroEt%&}>vB1T^JHRc#HZdiJ`veN(P$&Yf2iik5%>zsTZjZyWEAV)H zi7_7Ns$62^06PPB0G9*L0+&@OG42D)RxL5Y%4yoW)k=)Uz^{P4fC<%0jA_6ZfNOx? z)hICz0{=)TaT}LV7>$SIe}NBy6~o|2of4xt@N-~4V2`>b#th)v`X$CXpq2~;z?}_B zjBCK`RD?cU(=GzzfVPGRJun400JtAG8+fJ>LJ!PujL-vXH*uF3Kcnz(vl7D+p=piN zN{p(&Z!-}(U~Iw~CyX38y$ePTJkqnoI1e27LW%JR*c-Rgu=1MLqIZdr0=(U) z#OMw@-4AO97}_6e2G|R@3z&(6^E~j78-+(GR2u{Zk(xFHm;xL;7z%(}fRlmwL!bco z@h~U=UK<4k!0Mw*j3>Zbz{m<{AB)ff4PZZD@pwcIxOyTY2YhZ4A_p7@yasg7MnQ|x zw6Mtt9dH;h9e832LI-UBN{KNa_!n>^u+LP44tNdtGqC(LL@pZnU^*fPT(=mJ1LiG3 z>x(hJg=0gJIz9&k-?T=m|uO+D{>3K;tW{ zwMy9kjlRZ+DX zqaQFb&M;;JS5-EQjlhyBIAwrCs~ScT&;zu`Veab~Mjha(WW(sIrIna?r0e90Vw?1847^spN9fqYBwkV4(R~}z!5J%K^3g> z-cSIX)&~lJmVR&mIPpdF2R?WS{ef`<&>z?fcn$a(P^+qGyMS@Pi@5AoRdLfgOM$Bi)8E8imYJhOrd*8E_jg;$_1)4NL^y1+E(n1vTLD7$^W1 z06PHNjYWT8`*G+GJPq6ddfcd~KK+QeTFvg>B7MKI9 zHVF!V^MGf8SAh3{&2hzX)x;S9Oaz_=b^(^1g8sl~fjPi;fjfZbUNMaGz`0Wm;|cHx zFtQdFDIP=`1MdTS0o@&^8^$ygs=aC$Yk+fsdw~OA!`%tE5BLO_I|B-8YuZU*W8m?b zSoOfZvkYSfumvKy4!8z*5ZG-F7B6u4Jlwm0J#p8nSVz-70X7F(agFL%2m3!Cg&C-* zgA3U@;Pb$Pz;}R`fW^3+{R{MDLqT0lb1sDf;CH}&z^Tj7A9#2<)(&vi>sUL$dO27- zz)dT#cIsgp=V9#t2d%{71D;-m#aqvf#IqWU2Nfd(_AT((8pAjSOnMWG2RIFAudiua z*BV9waKKxbd*FWHXke4KG55gH`B*!^<{L0|z?<*lRtmIkM7~Ib!A*!9u>NL*9yoCe zB2N`LD69d_+KrJ@g9n}iKRRR>mL#l=BQOk1FT`8}y8su9>vMUH3WaYM8!&-8M1YF` zdqqpZzXTCKkJn(+Mf-U?mc1-S5_~AK2)-9v=kY3Roj60_77wU$mI#>-$QDTiUyJ7f zdWBuZqINc~VBN?xt)|GOrWeJ|`RMkn_!hvOd&J-K@vvUiBcc}I5wwA5vH(J>MQ?(g zV)_Eewij;^+aV4CcMlaZ>c5Cii_o#Hm;ed~a;Y&z>?Srtd`s+x_>0(CQDHHHvQD&G z4CWC73GnFxAU>v~*jP;wY!&2M$lC+0lXu&0`x0oO2k*|VdLKb9H-(IHBAzZY=B$TBzRr4Cs-s#W@EH{ z#WI46X%8Xb=0;L)d=p33;=i55W`-_G%pZYuS4r$@gYH1agJn; ziU-7g65%;uLq#e?U|cd`qxSJSG?|!gB#fMJj+ho)tZF z(IY`jAsXZL3~H_5Aj&it|DRuUg1>lCYr85^-0lt1yoHG(^tTwwc;&e z)5RfzhvG89B2i3j(?xt9*fi0K;I0@5h_8fu;~;D{-!jzuGg^nV40mCN4-gyj(D#t| zj5>7`HvoKjKha_tj}mb!xdorLR9lIQuf_lR72D(oXH3>G0_HV$^FsB&%1{|FzazWWC zv6~tviEoKD6Mqq05Ha{x8FEdlH_>)d3C0b~Wa9zx;WZ3nLaDhPE$5na)0Kai7)a9H#2kW-Vgtc2 zag?BrxK1!euyueLBA#G?Xho1D1`;HSIRxv(27=q-C_#I1ouHS%cdugEco9!9NwgwZ zDh3kdh&crLVgtc{#8HB_;yS?)!QKX}6!8RyMJs~e#lW`_<7zF$!nd*FDz*@tfNY!i z4Asciw;;r;wG_+O^9T{Qp4)kBOHpe*rel}rxE>0ciZKN5ie&_Ei4O^Oi8BBm(pLPs z9@<)qz`f#fSO4e3>|e?;7s+yPpxi=JQHc3$E;8B4h)P zwpK-Pkw~IqTNGD`=c!0{{&ivk73ZUvCUU8`5yecglZwYsTrAE}@n;kpiw9J+;7UJ6 zguH`dRTMuENmOi$;!RaM1jVXi0@cn(@gOV7CWhU48=Su#E%cHE@P|gwiAY(m^;u-M(w4SqU_M{@*rk`1=&$H-nb2v!3Dibod@tA_u{4^?kr1x4Jsz#vw)+F%?^i`*4 ztfhD~8SF31U-S)?p1r<$MO@j6DWm7Fhf_rf%5HiFyN^ehU!8t7lpjAj(VOhJ@SL@O zKJMK9Vamil`Q_<8NrB7~y!~x%^V9RJ98X=FsizlY-oe8KE^FTL2=P7-EYlWz1{(91 zi;v&ut>cfOd;(7$R@8fc=oWqn^@XSp!^`d3+;est$M@+cH}OP$#ESy?4=?4l;t`&x zgS-NFcVn*JFyq>tf#-zoEYwCeT?2Hm9xUVsBCa;ig7su&TVY(0uDy5wu)e^`Za`a{ z7ShN9+KcI-=op-Vev#H7?pp8D8O%+cQj3c_YC?<4)eF6?E*=y@G)xPjp4Jdg;bDHA z;fv(&6!Hduz>_@A^G6}?#n^67=TG=JOA{y`?5|t~NxAsn%KuCEpPwt;-=84e9_S9| zL1~@vOkL9v0xv8gagnQXTgNND_^Sum@e}?1}r5-{tHFPvAMehC|h+Z}_(XxDd|xfk*QToy8kJ@YB&b|lqX+Yk)Bk#s%W#Tk}fyt2a1-MH2Rus9eYg)XDfQe zr2i<|>AGrt`MMN7Y|K*KP%xnKg-sxKl9d5u}ZL zkMD2DA=bGmYhSymYS-M95q@x!w^lP`k_6@&Cl zi=0M#01J__G8Yk(!jy~VhU!U5#>t}nWWanf=R)-?Om*LKx=eA?%ITE8&YASra(WVI zT$oNfWw3%xVLI)UCyF%-*J-CL30Dd>hwGH^()a1%A~-^Cg7WKBelbF~Q4SpzAq^af zkQ$F3(8H0(X{xX~V$16{0}%^bH5n45`bg2Wn!Zj3G~j8v|F@b9XwT{@pet%nK*i%4 z`VX*nE*(4dOHTH+mg)lL>#{vX zSI3KebtxGzuZ*W!D*j>zS>Q}Vy$g={N{#f^dZ}aHhC9U5W8PNkm%0EPDNp<8i!?RuIN)j8akf9i@cO5#X`hy^%QJjv8@(x=;rSW*)BrhN zhOO~5V-owACYUx#YDb+8lYt#oh-P&(hmY?(`fZt_zL=93xHN$#y* zJ1MngJIncfv9qGDb@o~*b%rxApN0pJfn(2hQC)_2ks9`!^n#+bo>#5UJTF_{G^t0? zGF??`jjpowRg(%uZ<{orn{4gVO$kp`^pr_|>88^W64+g}*6OaSdk~8+HFhwc=aV3V zF6+%M2fLdKl~pxYluTE|d|eEmOj0QsFrQ589@3K$J!Ja$K*6s)WI{^sDJ$po)H|sO z@64k7W(Lfs=C_`5xUFB1`!V+gHLj0dkkJn4CG|YpOVtkVC1v-U^g=J4PS@bxsT^+fs)R9ZfCsU=5PDk#UK1%KFKHkOQ-GNFin74~(Kwr57J@)>3 z496C%{*qo;`f#N!`1Ek4E%@|sr7h@pxY|Pe4_BN2;c6>&xPti|uC`K#E13V`YAb!X z+DaX+HvhxbR_buIl{#E)@^G!lZ4*4-jaEqlXJ(iYPNUbnxP5Zj-K4^f!|_ z7s=L_7AfHwihgC%yNkSg12=cSfq?l2Qh%|`6MYve4bwo?=B-?+3z)CV(Zyc1$R2)b z!F)27ESV>2Whu4KC^{xf?(7{|GGFi|l4UIM%NKs?kS~1db}o_Qv}Ail`?2zVqF_GJ z@!4`_PG&31H?w8WCQB9Vxm0G4lc1tMtBQ=vBf2+<3$3A|HTP2_xtl9Zs(j z0`MxKJ>7A`=_Nn_UM0LsH|218l@Q>2l@LL%5(4llVKO>~$$N7Ewl;$Tr4w6Q>7;ve z0Je6v)JgZ|fbm=$%-1X8;{1KSo{8ODd4qnRu8CpqfbRD6e@8FR<@KA@tVUXRZkMX7 zJo7i|KXW&7R25hW@jd`ZD=zN?0I~na1Hk{h|A%_-|6iix)BFF(|L6U`cBuyd?jXrX ztsFf~OhYlOHR7m+Qb4Q|JfT}u=6bYMUT+fKH?KFi)yhf3W5VtCWzuT8glJ@TQt-u&l7+;(uSIkR2=)2gm<|L6XHoYEPkq91q5y%n@aEtT4P%%x(-Mds;J zA?E9{VUPE!`+pu8d@>;(d97LNQEK;kDzl{>jRSp?UNT_JRZ

hYUWD%`c_AK%>l(kUWM(kM@Vu0ASV3K6dF?}%_U9@i!@JAyq8-zk>`{57cLq|UChwVrG zT%ol67`ES1+J2$5{TQ~NdmkF(@a-SyVc361Na?$2sAIR8tB+6V9j{WU<}Pzgru`R6 zukzSk7D6mcDZR%W)Gbo8*;7#)Ov>1=OfQE@mwZXc@aVqD)a=$6t{2K*sT$V{Kh?Ni zNY(1~BE$7!45^XN?)Xc7mmO})t;=w|m?B3_TNlhl%pOY5?hMxprIViB!OAIj>Crut z;d(*eFo;xd1n^%1&gC29$&FY1VHi^%(aAu7^WD zxK<+Sw(~$K@ht2_G7op{Aa7qDI$dLXdH5(0E%aO@1o!eNV)oDrox%2T$81up1ye`1 zpX*c6=(>QfTEyW$ujKjzOgVJO>rh5>2p-`TYfzgjv?*CHajcRVY0PO9rGNitCqUMhU!P?x-u~zU9aveqD%pyX0Rn_bo?8@slCu zm2q8_8RgBZO0DOr%o$~_DO%&2+=R1D`WC3nd^lwM6%z9*EO*^&G^CUaF|W)#pG;^e z8Dd_U-+eOWO34uO$_)O|Yb&gj3^A|FH$Iv0QZmH6GHrhH>WL^NL(D5v;FBp|N`{zM zrpnJ=J&~nkhPlnV45$ z_)WQZTHRC%U%Y8v<2WvEeqD%pyKL~u;33dYhL~68XUO0zDf5dwQhNWQw7>F;Tr^*q z^zJWmNwq9et^JD3cPkukQ~dN2^XlDM<$nJz z#JpX`-S#eDT+#g05;J8yH*TwQX4zf6k{!3AZIATvc&i%oSU<;(dwzSY8~C&3j-LB} z>R*<@XCg)AM#NjP)ASCSrsq~@jVgU3P9=Rsg=SR#wj+M!sq%SzjH0hp zGVixTd3BVOIVch5Yq>ea6v^`o+idtw#2yWLfB;~ zV;=)I9Dl-y#fev(5O#b5D;8IH4G_C#AJhe(JzMM9Ti|qX^njc-G4Ml(X^zh`K~e+H zp=@^)wgpKGz6IiPoS~K$L6<=y9k0TWH9e4y&5DjrB-SeMGY#KAk8`ZVn5}Ibuc4`` zBU4nYVyV!&JV|s435NB?4m(`2c5y|6q&tQnD%QT?86cUCzmWK?{Uqt-_<{QLmt=$^ z!ZWpsr6wdOkGR8(}~$_P48w721}F z&ebhZ_>T#Us&0A7J>WT?J4q~PD+EISL{BaBdkl+({)XRNizF$Q%Jg|?uW%CW<_H?G zpd#vWneHT^9KU&J3wUb@J%h46^mB9%)*`6~Yr*tA)VF?_dOb2Xg>UgT@qu@Gkr7!!hN^0n_v;%TbY~{Wec}5vgL~K-pVNY zkrCcoSs)fgoEGW5l&vS7kFl35ERVTd0r=u;M5ijSw~{%Uqa(UfD_h0%-$~SWe;Wc( zWgho8W!`&#>yCb|h+gPR_cvl;%KSaCA;A*n#*Hloy~BMswjDlQxUl)@!iCLG7cOj4 zmljDK>B2UZwD>M;p?1Wcp0()0ww#t}g!jTm%pPH0*xaU4?~P44NH;dRu*p@dMUqy! zupJ^3OXCm*y0GhnC5{%T!kh0+@Mj?c#AU$k?o9nUE z?7hfQ&+w_4WMU_G?MG8YS?mt{2jCn-(WFIu&<3nPF?+)>QGX%XJ*;N;Pu_6YBNkW4_0_da->)cEd$?Vv`D7xzImUhjR7np_dy z>tF{kx(<>yo1Lsjn%BX%Ygy!b^VxMQ^fA(|I+hQ`gu0e6d=YM8T}$7%uboH$U*fxD zWfQ_Gql`p@ZC19XTzwV?{*JevrC#PdwCF>k(NI79Hp+G?CzS1Dj|}v7?;G?E%4YZe zs(Va8Fzq^f5Ka|W*(6s-F}0qhT8)knw8PIUq?Ovrrs$+7sgw+ zUqVBrxU$`>U!&lly+LK^X$RDRkh(}sUqFhwSwA9q7Ye~akZ%<46VV)_QG*7WaJ!>@ zbxBCdrIjHal~7bGMgN-q>ZqIbN}yIj8J|naeyAsF8(<5A2vOfsw;?qk1>=v5Aio%d zrlA|O+3eJ$7h*2ZQVV72)fXtB@89(;ac&g{{as{sh`i|)`A3S>^Rq>{9}=eg+Za69 z1&GDQm3_(D8$phHCj^xP9Tb?jNoE;d#PupG>uGFp<*~RRvz*G~Bk>)15b`H(W(C$w_9^WJ{8}IaB(;$dw33|NSrA1# zE<(p|XAc%c(N2hHgjL{tfmQ5Ek&DQ~Z)YD?mf9L?x{E~X#=J{rsGR8R$LybznGIyd zE%O`dlD-7R;J0EeIg_HkCV471b`E5A9os6VJj`ejaw-OzQxS2Jj16Qh4v}U}Z;nAb zlVgJ+9!}*r=OAWJrp|3;XBp^0EQJD%oxeO>tFAd4RBA!;AaHIlv(F^?MN(c=g}z}d z&b6ti!mUYEqLkaO>)mckfvek`+pLoI_aNm|Sv z{Dy+7sBt!|NDxlHdO2snO{}q)2&6|d^llaUga|p?vsthMV@-^p^y8evf@x_rj-bE$ zaL#3sE731KW)yyBYP$PJS`m$^w}8fQDknN~n0+AWzby4{#cyXGi!6g(3U_j8T{MXv zL*i79bFO0c91^F$gTt2%DGF;?P&eAtn*KMOsTztaVk)s?=9<#%6F^T#n_?;7lt=WzBJ-GDwRGAt03SNxRKX z%iU(Dtff;=XG@*xLkvVvC4XnzAWAZ!^v!h7s#HrNbJs+l_(*S_P+I^=L*}9gIhTADShz?q=T|g%%||! z%x0+a%VuCIn^m?$xYj7~dLv82FiJ?uE2EqIcg83N)Glv=J#5?j+P%%{L0Q1uU=BES9PY0NHIw&pK?B79)O=ez1 z0xwHqvA>m45O1iTYi5Z~kfBDU&j-9Vq2#KhLA=t-A>CR^qtZ7qD8CNr7&2f+2vvR& z0y87za=yYGd&He)mg??rAYOGEjw9zJ7DfZ9Mp|gv@DUm%ZDk(BF9KkG5diax0GQ7w zl-oc>3>h(fLY1FSGlTt{TEZNo#QNrz>iDyV&zoB+RinNL9_>f?gI7Y7=}=cHRQZ_(^R81mV_^XAljtB&20*+9+%Qm8#v7H&fK8qv6^`JR zXC~;kSkM7+IL*@6-5WZP*mg2&4;++L^XQEEn8itQhR(PG7T1?rJ|VJ;#SJ70xnWsHIE_$X*sViO4{l56*oojz(3rG42)4{VdKsotjRU z0XqN&f)LV8!6wgZl;yglQ{5&njy8F}v&oy3O2DC6Hx#kce`_Ezu#9Uq z)H&$B7+6-`>of}$AU9O`bZU?=+2nQk3l)x z-N!%k5ihnS8YA>=s0mry%)7FKD+IOj3}|I(VJY)3S}NIti>%|smJCb0Z4*LVt)uuV z!;;c^9Ln~TG>j|wf$KjYjvH}M_pm}Mlr;yv>o?ykMxg;{ge*Jg8y(O zh>UiY^r1JYZgmsVQ|ua54PEOrg>Z>E8oCw+8(|4(utcPh!y1brF}h5V*+}Xe%$S~n z%J841BAvPRfysp&Y+*t9;&wYrrK+l1B*_E^FnuOODqM$3wWEU_Ea+i1QRf*;)tJvo zSL24T66|8GTG+QTNd$+maEOd~#u6Q4kjN~IB{Ddixn}u9BBaQB&sZ8&ZiLG4&tSk6 z9L-$ENTgL8*sf^4*otT)N?@&HHp#u(g5=_u>tB-VjOhrDXY!qn7V%RBu*ys>XS~59 z(cmgfKL^R$fpEdjf@|PEv6+C5yT!OnOUv3+9v>0f9D@*cNJ58?5K3@K&utri4g1a-_QA5+}W+KKsD2!e~ zI`p_xZXkX_7C+~mX&xOET@#nwzRW#>c$7^ zYtfhMVh)RZy{4OLa$ZaR8~0EA$4krQAP{

V*EP;rgyTzS+nOqso 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, ".onyx")) { + bh_snprintf(fn, 128, "%s.onyx", filename->text); + } else { + bh_snprintf(fn, 128, "%s", filename->text); + } + token_toggle_end(filename); + + bh_arr_each(const char *, folder, cs->options->included_folders) { + if ((*folder)[strlen(*folder) - 1] != '/') + bh_snprintf(path, 256, "%s/%s", *folder, fn); + else + bh_snprintf(path, 256, "%s%s", *folder, fn); + if (bh_file_exists(path)) return path; + } + + return fn; +} static ParseResults parse_source_file(CompilerState* compiler_state, bh_file_contents* file_contents) { // NOTE: Maybe don't want to recreate the tokenizer and parser for every file @@ -171,10 +203,8 @@ static i32 sort_entities(const void* e1, const void* e2) { static void merge_parse_results(CompilerState* compiler_state, ParseResults* results) { bh_arr_each(AstIncludeFile *, include, results->files) { - char* formatted_name = bh_aprintf( - global_heap_allocator, - "%b.onyx", - (*include)->filename->text, (*include)->filename->length); + char* filename = lookup_included_file(compiler_state, (*include)->filename); + char* formatted_name = bh_strdup(global_heap_allocator, filename); bh_arr_push(compiler_state->queued_files, formatted_name); } -- 2.25.1