From 6fca3b23a2560d7ea30f81ce5b47130e9cdfb57d Mon Sep 17 00:00:00 2001 From: CloakerSmoker <43710474+CloakerSmoker@users.noreply.github.com> Date: Wed, 22 May 2024 00:24:17 -0500 Subject: [PATCH] Insert (auto-derived) `->TypeID()` into all interfaces, add `typeid:(ClassName)` to get a typeid without an instance --- build/freebsd_compiler.elf | Bin 274432 -> 274432 bytes build/linux_compiler.elf | Bin 274432 -> 274432 bytes build/windows_compiler.exe | Bin 259072 -> 259584 bytes src/compiler/Parser.rlx | 2 ++ src/compiler/Parser/Expression.rlx | 30 ++++++++++++++++++++++++++--- src/compiler/Parser/Types.rlx | 2 +- tests/complex_interfaces.out | 14 ++++++++++++-- tests/complex_interfaces.rlx | 22 +++++++++++++++++++-- 8 files changed, 62 insertions(+), 8 deletions(-) diff --git a/build/freebsd_compiler.elf b/build/freebsd_compiler.elf index fe0e38c288e80be0a4403188f150ee90e5817c60..1bf2e96cb910bb527c835cb4b4fda87e1ef92d6a 100755 GIT binary patch delta 22457 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 b6Gre~+Go1j-0-0Q^=0ACVs2f-0WSXsz=F>m diff --git a/build/linux_compiler.elf b/build/linux_compiler.elf index e94c3303d469d9a99997fdd8a67b571a8830573d..e5f5998d51fc3cfe16599af1707b3d92e8a1facb 100755 GIT binary patch delta 22426 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 pwEmsyrNbIK^X!_Q%nE= delta 21914 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 diff --git a/build/windows_compiler.exe b/build/windows_compiler.exe index 833a3eec4a9d7fe054866c3ef44b5e9b7613fe05..7c4a89ebae463105e9e21297549a9bb3b6bfde4a 100755 GIT binary patch delta 21945 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 z zB*th;6QZ@omMn^Ct@L;>lUBMIZO=Ll#K^w@!EyzyF+=_{OCk=$4a$eEV_Zf!FDR2^a2KD->64SSGF=4djQN; zGoh5VI(&j8t{j3N4IoEXF2pB}lkTfLaET?EvC1CX4I?X7`84l-TqY##IADG~7xBq3 z9$_dGF<5Q^-(V$RH($2%@K#AK%&{OAs~eggHRACYdO-Il3rYLcarnql`o;iRknO9x zD<2t4*@eTJc6g;B8Mwwnf5{Z7pxmFF+tv)(5X0>bwzkC_ zne*?S50goY?e-W-eF@uPAHJI`+HQjzOeR~lyW^2ca$$P_@*{Xh1kRd7qIS6B3z&@D z5x|tNdPhUliyYt41lN8|e(tbEhQua+0w$x#{Cs=7xv%dNARX~{Uc8XYnBz}BM4()7=4SdPRonij|eVG4AnCxw^@AHHh z5crWtk0Msr5{rjbr%zSSN#9+LxUN8^?Q%0&UB&EQYV@*_Y~9raC6ar)Jh9aX(&>Z^ ziQa9DUkxWg1#x(aH_S7?j=GJ|HB}1^ zqUmUt>-JeKDi951CY-ZXJx{&v7fCKkzwVg^B!{#2l!@y!=hTo zqj(W}h^?~7`8`&s19`Y74%0ED>E3qMUF3xg7G9|-tOQBR$dbL0Ade)5h#Y=h0L3)T1D7a1j3>r|3!WcM8VN0NMts320d{pM?qq)94t(Jo3E#KN%lZ*d zYswQedloY0B*~rpOD8!Vw=2Zjvx)uw26$H&qTcU~-@PLv_XpOUH2}uV%t+vq0{8fx zY~QaoIhoI7SrpCYXw{#5-|y_{_DL7Cb-USr9?HYQOj%2{U@I=%Oj;kPXRL*ML0)fM z7Lzdtnj$Ci*MZK+oqRjs6>iI@XJy#(F_%h@J+3+qZu7)8BLKdiFfFKe)t7u<+G!T| zCj$<8+V0%JX&CTcd(3p5Q_1>+f%x-qa`m7mHoU*MCZc$vrK7jbQW^N|Qnt2Y)NE^t_Pf0>?2yT-{78Ex|eaMkw zcPwsz4-aBiVhrVe=Ms0U-9VyBVjbN7mOK|^o9bVkenJ9tUrV-?G=Sb0OWL?vKVgoa zQ3^$G=|tj55%U2}Q3XK6&msva^>(@WM#sQXk>_`XtVXVF>Gc%aSfrB~rE~E2$E4Pw z71qOU*XV{xQZ49-Th@}@hun>AHPut!q9KnCd7DMT89^e*nC}!saXfK7Y>SUSBFzrR z;#!GIv6}2YtTwk`#Zj;_HZBXMgc7|Y!6Khj=Zw(8%3t=nThgIqR)A%Fwt zWF5gdrE-3Uhgc!Gv0A|5iZ$fukx2I^;AFDpOw9tX?5JWE@Jl(YLj3I|@jE)tQtT<~ zC0lY_QM|N|oIUD@2P`Acj@l1y@&bm`8aH|b&31YGYC<`X4MCLU7&*!s@zgDYM^~+J zL*D0?5~L^&gg*ZpWbYc15yyNmF(*04>YHnU;a`L7(@W&+vBvnj4Z+95{Oh-`39>Vm zLy%4SCCE-)*bliemKhXj;B-UlU@wRw~zBWWtW{l^?Lj;~0Hw!YT z|Bb$RD`4RNMBk)6x{wMcP$A~A*eO@-D(-Q+s1PeeGU()Dd^U@GIXMuoy-ku%r8);* zfm0tybzzt?NVly@xzoyV&Y8SF)eE2QP2x^B#d8x$*6HK;${5o5jIBlL7#4R~A!7pk z!70?~R%F^4U%bC1*>a|prGfLmv!X(=)-3Y<%t2f)nVg?vMb4is$LXEO+H($g`~y;a z&K<`-AP>)ZwOY6vxa9>Dz7-b5uS+{{|!2~Kz7@~1?zP|UtZ3eJ1te)mYf z&(`GK`3hW`L(Z0a7&}7cO7@99=N4bE$A@o})L$&5) zH%JKJOpY%#?D*&30j(b?z35=we>vw9YRv{9SXf`dou5(i=3;%L^(>2H-xkFAk~_ZH zfka*MsnZUiB>`Zw;+!jF+9iKfhx~mh)WX(?k6v26V%={+K3xjHpW73!%Z+i#0@C+# z7G8XdJh|+H2i+>LzJihRafp;%`(Mq);u3PRx33%XX=ArwMJUAJ}E zTLHo-g{s)X|7@dXMv~m?Nx149LH``Ut`!x`vb(Pat)v0WTQJH?YD za3|o&EienIVBO*rlLar#=`6ESoKs4!-wts>{lOV!+eo@38!HrNA=rZc+7iDz4V2BY z5pnZ%X_Nvhibz{j+foG_R`EgQL^K8}GqB3;-4CF;Ep32L@Mt1Ltrte zbU{|cvr_HYNyBE#>%*`f@O(`p9kkUMMdnmST8_KGLY9>u(A0TGe{!?30H>CaMR$X7 zL^2{GYwk`R4y4tb@(TpnHpPwh6P z9=MvIFWgnx)=?BaiQ&WUxHOdXe;9;E93e{|s`1?E5L%qb`-d-Z&`omxk%wtGV}mEy z5EH)y6WhnVu-z;&{&BtflY^^8zF&|<&MJ-IF%S%3gvzmG-{boDelofJxE`uakhmLv zn@j{T7Aq$ay(g{kkyO(5$!dIK6nXR{-eT|X)oWxlh2iY zST-n7!++f0i720WW33JGf7TGMa3cxNJaE64w$9Pw|H$oXeIYQ2McFsp0Y zlgQ^{{nVMPNd0;*Z5i~@qFou_mq+jFJI$-Iz!EKnr~Yu z*h5faaiv@ocSyNopGvs~14#?4rw}@W8;B;~$b(nz?vKAh2M}O&Vh>w2Xan^fs7JEY zuTmTkM;g5ja+%|-14qEwPR*$VY)dDJQymM^UdJQUoLqV1f?FISAK!%FJL`zwTSwHB zba?B849L*8POa+IhuG1TRmroXDk63{M2412_Y$~9YPSMxNHx~^-&iQJ9eH~MJYnuT zXG`-*|6`y-$i8>Iu}3kndGA~2i&U&CWnqVQ9*Hb!i;zI)GTT!$B%|KDU|$b1|Gf(6-^OB)C)jTtKWAn@sm>q4I4=Q{_I6AZnEw;e(0ca!^XMxA3T20Sl4cVYai*F(tm9K zQG)=Wh?JR9yXe_ViamH14i~AH;%&!E`L_R8Ou*n8gEUUS{tPC zHG->*r5#a~a3Eq1GKO=We6 zE-htzWYm?B>TLBW23W$ux+_&HbcDtNA*rkf2F{DCNqO=vMB2IMh-8DJI^{PLjfTRY z{FrINLSAd&1*1&SBCT_EfXjnd7T``EVLHi3=Oz_qO;)48-kbAI_iPRw}= zxiYUAYqZ>kwM!Wm3SQ}uhCl&JGHK(%()8FhC$7&5rcZ518eeC@JTjsF&k?ZWl`e#= zVss)h)7n@vOVNqZ0i+hA>66($tBotL1#pO3>NvGQO%fR_(aaQg4ghTqmj)WA8^~2R z5OZo^Cp{|gA`5A)|?TCSYb zP>1Veph4ZaBD^yDmG0ljDZ`-=vT4e7@^fk5m~C?gzpV?b!Vt>9o99 z$w?O_FnH`*iIEJM$j<-Jxc)of^J~>i(z2!w$|TLFx*Ldqq|;9J5e)L9Y-Sdx6nrWkf@Bm^pv^lJNJIdS;64fF&KCpSbdT3R2B> znQ)%MZ0RKInYmHwaxAduutaXrp%QWSh|y@7;`lO|A;H!CAfjXv^$*9+0lcAf7}^Fb zLsHOS=HD59k^or~ajPR2tS7t|vosV0&fdj4Yh(=rj8Bx5&a@^oK3kEBAFXhUuO#q> z74iF7j2e^YKOOP;;l!va2wTEoZIw&yDZ`lvfa|AzWN4MEUnkvni60Mo?ChrISmj?u z-Uh?To~j18@^ZnAs$hg&Thh7+HAJ>F458rgs8c{#Yjq7mtuDX32||EyQV7BD8Gv;` zS6c3xNyvQZg625-H$vlTe@K(L^Yo$K7&)Q}+76?5tJtSiRXlFS!hKiH1$#Hd-5 zpHBeA!;o&+qjvHlz;+^ht~(|(M!3aG!~LXgN;DNunn719k%#M4Te$~2BbRQOisCs@ z=4G@OeV{~*u%9iptc3!xSu$-`3%TGigXqv&$Y0M48U~g!B`mc?uB7`F6KZx@X-r?% zLNoB6N2!?#+0YCXnv4B<3nqG~FS6(|g-fOk3>5xA8yCjYG=1c0lNtrd2HZaYz9*Cd z27(~mm3c&q^^q-#rq}dQu$=|80W|o?UU@;1TBXwl2B;z47)4_ZkPX&G34;xg2|`=w z1ViLwmU0Ko3GzAE?ZZ_+6hiY2QFE+!ioP&JGx6yjG{p$npg}a#2)UvH`j-*ffj!&N zUbRt2)L+y*f|aExM|be#B^So z;vZ(>C>zEz`zXnT*@=DNTkKtzog~Lrw9lHE%YZR8-<#oEcW`9@epe-C+VE3(XdDr( z7HVarB_ak*Zy`B_Fy<|z5>sJ}#}1@x;4qLrfWf4&_#-3g**VhgBA^AQZIL24c7<2yD4YZa*j z-G4{J%~4CZ_e5uyBd4?sXi~HFP5Jb*YH+bZ&GeE0AW<;TQHYU2a3RBt4;%;+`IXn8 zf01|76)q;c;XE?Uk*`rY^6fKN%L6ZznitxN4N~ncwgeYI6hp^dfA=VE~!e{|K z?vI+IF%$=&k*Ft44nUsh2+auq;9TKy0BVPjnmPudQRp+x4np zs5@N{jMgF_8W@5~8*CoWF5l(Af}ts5|3ZSmj%}hei3SnMZ_xv)#M)!1RTCidiH0^o z!RRm@)dYr`NdIbr0?}xCqX{e=4e945D9U`+P9F4ZA?Ovc8!KW<+NmiDLZ|4gra)mU z&1(u>BkA3y$PTTd-xh=sH8SVJlyQ5W-4`pU<2CF+ zLt;={+`0*jamYnz(isg?f|=!ZLoeVlKORj(mb7+v5`tPoo$s5y91;vt_HDv5*t{g?|P!SXu2@97ixh}Z(5j$PTMt= zFNDU+9 z(aVL{oR(}t2K4Vf$Q<>fC4In6?ozQ27+Dy#=!>e1W1cJEmTE-TZoefD97H4XL4Z5D zBNMtK4%f!wS)of3%16kND*L03b&fo#zN{2ad-Vq^NEJ5sM=cFQ!l0xGb_6jfN(4uT zln!ZBMrqvZD7KR7du*vE=u z5vDs1K}{aY{LJ-k(8!Ufo`XA}6JrLHCPapnnrbIQGpTe|DJIaFBT)mxx{YDOnr&=0 zgKi%QE)_@bj6}Zp&@^g13Q_c!=8ZzG0Tx?9u-x9GDh6xRdV?c1#+RnTS`rC6$&3+9 z>@2_78^mZ?q3QI)DCBQAL;jp9_>Be&K;g7gGIBxrG&vcqL<5C7DaaY2Wa={p6Sa8+fsqZ+{71s9jaVQ2DJv$D0>4%0R1@xj9 zvXK>a9E*&p%Xrkvv=MBdfnRV>#@A{(ay;@!E$Pbf$S-sp+Y)J`%H-3+TrhUvzFbrd zWPS3X`oQGpAH-F&8C(kf0Ns_M36Pe|o`MCRS?+ibqkEQk zvLn8sf2P8qPHSoZ$;e7Coxvv1id57XJ*RahArI`fhSJF($D6e4B(&3hZtlO$fz6*y z2RC9=T~RCzXOGFWAB=%6&}ow)oEFn%lR+_)g}sx}He|RcnelDhC7E`f2~wRo74=33 z>Fue=1I%1C4ShA7w~~o!vsgh5;69W^Ivi2zZawCLuqwqs8a^G>cfMbb?QD7c%oRVm zv5%0Kqu9C&6_`vReLCdb7X2WLhNv$cp@KkC#3Wib9ZdYuaGIHpN(~ui+a(0C~~-SWU25J7Hql^ z*@$?CLIbF_vH}GU=9S|7eg9%esyKe2Q|F+G-Yb^Kt$)q*3jd$>@zfy$jf~ZUV?fz7 zxbi+Oum0xgbtu%o{%sH?yj?zHTfQ?Mt&vjkmGp838iLmjqAmYGxoA7R{Rgu3Rxjcd zV3FYLmx(ui6qp4v(j>!yBzu8yAW8G zqvO_tCUV(S)+iw@K|DeKS^-O{8~wQgww0(3b@>z3bB>wAbqdAynJLUcTU38XB#8br z=}+*jDk1Gp$O5dc{KjRM&t#_-qz%(J;qR4@dO0kc3qwi?V5pc?^U+?MMom_uHfRs+ zvKn=B;}0_b+2YivpnyrNuGH5*t!@{6y+Ilo+J!*#I zIK+c~U5{e$ir;DU1~dXE4`j_e=#33%DW?3R0bQ1d67knT!n-^aVvHgLuLATKp`JqB zJ*WeM1-18H)G=;yJg^{DJ3$|e4YpIr6z_NWDHRqo#nE5}iP0>7W53E}$l^|57<-$6 z*RwrHrdSWY`AeJ5!l%7pK-L+c3z%8%uOugTrapyelXY3_|KbkDQLzwpu&f8TCrcsu zFRsM}1wv{-+wMc}P=L^EKU!4__iry;FGf32#P)V;e{xAx)jZ~z0;PFDfgIK zVO!CiAh4bZ*z(%|a`TwRC9{m4Jt#Ro8OwBr2_~Rmai}0H=I^{C@j@k>USI`KR zprFb*4Zp;KNsA)%RNO#;srr6J4fUVWC+IS!mp!xy}X-iHFH55mWg1AT+=Et8v% ze*hU~C2%()fZoJ785IdJN_-um-PA*c{qcw2gdQsFgHaZpt&c~ew)Cw&K8q&NQUhFs z_R|@L_yQ7XoDoii?P8e`ev8o#`q~&<(+kGf8BJmDO;KwJ)XD_AAtRxm37+eP>QS*N zK7-f9=1G67q!FPuvamAx=_7n+y!UKACseTG;Vu{VeILxXgmWS zJ1q2RkJaX_UM%=g1}yT|k`EwhRW4 zcngXVK-Du#7~dPikIm+1(?)%9wE0Tyk1F}tWN9g+4s)_;W?$@NI4GMbB4n^u*xnak ztc9itGY8;Xwa`i-X((2yP=YXM6!uX`a}K@&Il$Zu{L%>bNua3q zTPg9kZo+kfHyb+npOr+Wlh3X*Og_@wH`3LsV7{Y{^ZC*rt6;*r1+&%oBti>?f7akw zjP41Z>);|X_Glw4%flxSj&CC*ZNjel*sq5$b35*&kCNzxJ$OAjKqu^lo<1~Oz}Co8 z=q})SM%dGvJ~)JZ@fHuk{4gG*vTE-3qq;&P%g@tIn0Er7&_~unxAVAAg^Mky$rZdD z{A=?SJR0vd7i_QMJxbJ!p1Y1u!=k?8AMo76bo>o`7*8`1LT}=32!#pSTQ~%xO~R2o zxOXkoiMl?(N%&Pdo%sMb8bEU%;8c^ObP$NVEQq<(=^^$+UbO8)+#cN#7Cyvx^wTsy zzVq`9t!gH`f%OMT05CgSR$A2>yKz8-0YGwsIK)(fm;uC9g8cZ-s6^QA`^c7q+0R|Y zcjj3!P$z@->7Tws9UfjNfMJXm zcloGK_!tNP3o1FFLK>7YX8oQ+Ua}5ZtjVKfNV>Gfe$|tC2D?oF_yTQqoTF7eg{$BI zP(qhRQXlUe-sJ5UJ{JRU`^WGq3KeiLq52N(*g>f(@dw@c65FS}g3&pbtzZm}@q;Gf z?Sp&{Yhlh}x7W-bRmO}@tt#mS3-9oAdUofsO7u9!$Sz_d9ESh&1KNFncVMio#F)U@ zU~{PrdvM@%BL_q zf-uTgBuJbzQ2@M@0O8dWRVlzCm>MMrBWx}~9MU8Zqufve8A=dFIY@$3@mVktPK9$P zpd;A_7vX)tiKnkJ9ejTOU000FQgsC?K%uilA(qo*6uh2u3N55T45HJtEd$|Q%;F?o zf?3J++$_}-Ag#`4T84tmna}Kl-ARLwB#vQc9`LcBf3V-Pz{hl;rOs!+@P>~`{DWox z@UfMD7)l?F_&BxUBMnf)I0ars2J^Yk8}eb{>mmQ*L&28|=faf{fv-0o*R!b5a&Y=-lCxkr;^OuF)A%N z71p> z)cIUMFr5dSE*C?VN*Y)eeivzM)(s@W`IUvQ=KRURS8|Lj{GYs!Ec`%@k%hne0}~q) zK2S@0#Zfxp5941t;g8^7I^pMW{&d1mzkhBtP342h!e0!%b;5rHexMV+ zIa7oz{Ff3dvhd?Laf3AZb2uQuUm8Q;2M2rp=6hAFw!H!(g+}!WXaKB2hCvnwsfQ{8 z`a>P21A7>j0lu)h504x#VWj}*ItgmaDXn6SwZ`*h7^9RX*$+S`SGVN-3#I-8BxnHd z-&gA2NruUs6f*ua#)sI0bK+m!hf^9aQL>Yu(VUW{L`n4qV}+?FVgb1P=Zck-P2TwAbIFNO$N%GJY-Of zG1HkesovF{B=Jb3+Hz-ou0cpsqD3FDLE4X3Y?@iDtjXte zOKSb71}u~5Eg{a#8-LSA&pwF_(B5Cm~#Qghoj1 zd)I(vLiTU@^iH#Z3=^2d!fM*cG>^f>D?qqP2srCt%oUnQ5;LlS$|O@HB~0cd8O6sh z=&esMyK^tNAmVgP9hYV&)PQ9QeiCAJ4MOImmBdMggczzLG+k;xx(3V$Rr^bK2~Nj- z#^!b{rH^!7-w>&<#|ygpGbEcPzoNNM9C*WL|KT}jK1bK@1rr=>IcvZ&^DDs_z+hq- zo*T@8nkMozMoA>sNr-%jWT6=dG!013s{zX--$IZ9lHb^alN?slL?-Dik&KfNWjZd^ z5|?2$V436&MhkRWgW!akYgOWFK3{zaQ>ml02J{RaUO(evU|^ZjV2RSTXY|DvP;#-< z;IppZUJ1Ra1}yh;k`VK25b{(8N(@Yp5b!_ANxm>jYTvg8EEBrS1gXov8dxpKL_Ti5g7<$6waaYYRvu|3oPfurE_ z)WBYu*GU;CZRL6Wh1D+dJJjsuC-d4Z`>y~h#Zmm7{YOfbVt@WF)j;C;yA_AG??l(E z!p_v*K^cMHMY9TkFKQ-aJ1Ey8IL+{NQVvIO;7Fa7jgd`2B#aE#t8^z;APA7kP2sMK zvH`+-P6+yL$~*)I!Q1L7lh8hDTwfWBMhJ=Zl~?s_L&pJ^?B^!z`mC=0TQ0f@?Y)(A z^^mV{Awao9A9WXIhAQLq;OOLHE9C+l+sR9st*%&c(X*zobDY0R6Wq_=E%>Ci^Y^;^ zeI0+7Cccbrk5Jl}gw&I!!SNx&r3m;Bwy@o1;aeMJPmG4r__oTcC|vMur?f`MQ)m;d zoXbvKPPbRCu4A4L1!bt|WIos^{vgd_efS;}Q7gGOY7`1;d9+0Y?KSdy(=>4;~w5rQ@;U)DkC)NQx2FFGxx z?^Z6Vt%rPIEvW^vC#_j2(3S}>F zuS*rmpS4`Crm~7te0i*9aTzFw{U0!(9ym29sf154pT4=JEJWsX%WaszI(q!Jax*HU z$#;|q7Wa)HCh)dUH*UJ@N7a)ibj=;5TfOg)yu!)s=3nvOm$I@Rzt(6ghEu0XWe~bZ d<0_RtCaLgS)N0f=npLT+2hR3)rShKn{{j1PpgsTq delta 21358 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 := Info + this->AddDeriveableMethod(NewType, "TypeID", "virtual i64 TypeID()", this->i64->AsNonPointer(), NewType->AsPointer(1)) + this->Consume(TOKEN_TYPE_PUNCTUATION, PUNCTUATION_OPEN_BRACE, "Expected '{' for interface body") loop { diff --git a/src/compiler/Parser/Expression.rlx b/src/compiler/Parser/Expression.rlx index dbd50e8..2471e53 100644 --- a/src/compiler/Parser/Expression.rlx +++ b/src/compiler/Parser/Expression.rlx @@ -254,24 +254,50 @@ define ASTNode* TryParseFunctionCall(Token* NameToken, HashMap* FunctionNamespace, ASTNode* ThisParameter, i8** ErrorMessage) { i8 HasFollowingColon := false + i8 IsTypeID := false + + SafeString* Name := NameToken->StringValue if (this->NextTokenMatches(TOKEN_TYPE_OPERATOR, OPERATOR_COLON)) { ; `NonTypeName` followed by `:`, must be a legacy built-in call HasFollowingColon := true + + IsTypeID := Name->Equals("typeid") } if !(this->NextTokenMatches(TOKEN_TYPE_PUNCTUATION, PUNCTUATION_OPEN_PAREN)) { *ErrorMessage := "Expected opening `(` for function call." return null } + + if (IsTypeID) { + ASTNode* TargetTypeNode := this->ParseTypeNode() + Type TargetType := TargetTypeNode->ValueType + TypeInfo* TargetBase := GetBaseType(TargetType) + + Token* Tail := this->Consume(TOKEN_TYPE_PUNCTUATION, PUNCTUATION_CLOSE_PAREN, "Expected closing parenthesis after TypeID parameter") + + if (GetPointerDepth(TargetType) != 0) { + TargetTypeNode->Error("Expected non-pointer type") + } + else if (TargetBase->Kind != TYPE_KIND_STRUCTURE || !TargetBase->IsClass) { + TargetTypeNode->Error("Expected class type") + } + + ASTNode* ResultNode := ASTNode:New(NODE_TYPE_INTEGER, TargetBase->GetTypeID(), this->i64->AsNonPointer()) + + ResultNode~>Context->Clone(NameToken~>Context)->Merge(Tail~>Context) + + return ResultNode + } i8 ParameterCount := 0 if (ThisParameter != null) { ParameterCount += 1 } - + ASTNode** Parameters := this->ParseParameterList(&ParameterCount) SourceContext* FirstTokenContext := NameToken~>Context @@ -284,8 +310,6 @@ CallExpression* Result := null ASTNode* ResultNode := ASTNode:NewCallNode(Parameters, ParameterCount, &Result, FirstTokenContext, this->GetCurrentTokenContext()) - SafeString* Name := NameToken->StringValue - if (HasFollowingColon) { ; If we've matched the `name:` format, but not `name:other`, then we need to convert `name` ; into a specific built-in function identifier, and just return the result node. diff --git a/src/compiler/Parser/Types.rlx b/src/compiler/Parser/Types.rlx index 2b93516..9038a66 100644 --- a/src/compiler/Parser/Types.rlx +++ b/src/compiler/Parser/Types.rlx @@ -94,7 +94,7 @@ struct TypeInfo { } i8[100] Buffer - i32 Length := FormatString(Buffer, 100, "%t", this) + i32 Length := FormatString(Buffer, 100, "%t", this->AsNonPointer()) this->CachedTypeID := FNV1A(Buffer, Length) diff --git a/tests/complex_interfaces.out b/tests/complex_interfaces.out index d36ccdc..5a23332 100644 --- a/tests/complex_interfaces.out +++ b/tests/complex_interfaces.out @@ -7,5 +7,15 @@ Single Parameter New: Complicated.New(30) : 30 40 Double Parameter New: Complicated.New(50, 60): 50 60 Default Method Implementation: -Boring->GetFavoriteNumber(): IDefineDefaults.GetFavoriteNumber(): 70 -Opinionated->GetFavoriteNumber(): Opinionated.GetFavoriteNumber(): 80 +B ->GetFavoriteNumber(): IDefineDefaults.GetFavoriteNumber(): 70 +BO->GetFavoriteNumber(): IDefineDefaults.GetFavoriteNumber(): 70 +O ->GetFavoriteNumber(): Opinionated.GetFavoriteNumber(): 80 +OD->GetFavoriteNumber(): Opinionated.GetFavoriteNumber(): 80 + +TypeID: +B->TypeID() : 0x401FC6B3A30D0D4 +typeid:(Boring): 0x401FC6B3A30D0D4 +BD->TypeID() : 0x401FC6B3A30D0D4 +O->TypeID() : 0xC43503884CB69701 +typeid:(Opinionated): 0xC43503884CB69701 +OD->TypeID() : 0xC43503884CB69701 diff --git a/tests/complex_interfaces.rlx b/tests/complex_interfaces.rlx index 9cc990d..34f049a 100644 --- a/tests/complex_interfaces.rlx +++ b/tests/complex_interfaces.rlx @@ -75,14 +75,32 @@ define i32 Main() { Print("\nDefault Method Implementation:\n") Boring* B := Boring:Allocate() - Print("Boring->GetFavoriteNumber(): ") + IDefineDefaults* BD := B + Print("B ->GetFavoriteNumber(): ") i32 Favorite := B->GetFavoriteNumber() Print(": %i\n", Favorite) + Print("BO->GetFavoriteNumber(): ") + i32 Favorite := BD->GetFavoriteNumber() + Print(": %i\n", Favorite) Opinionated* O := Opinionated:Allocate() - Print("Opinionated->GetFavoriteNumber(): ") + IDefineDefaults* OD := O + Print("O ->GetFavoriteNumber(): ") i32 Favorite := O->GetFavoriteNumber() Print(": %i\n", Favorite) + Print("OD->GetFavoriteNumber(): ") + i32 Favorite := OD->GetFavoriteNumber() + Print(": %i\n", Favorite) + + Print("\nTypeID:\n") + + Print("B->TypeID() : %x\n", B->TypeID()) + Print("typeid:(Boring): %x\n", typeid:(Boring)) + Print("BD->TypeID() : %x\n", BD->TypeID()) + + Print("O->TypeID() : %x\n", O->TypeID()) + Print("typeid:(Opinionated): %x\n", typeid:(Opinionated)) + Print("OD->TypeID() : %x\n", OD->TypeID()) return 0 } \ No newline at end of file