From 018ece30f0e953053d0246d60da3ebee5dd5eafb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 28 Dec 2023 02:09:03 +0100 Subject: [PATCH] Attempt at trait constructor invocation --- bun.lockb | Bin 23850 -> 34056 bytes package.json | 1 + src/tests.ts | 37 ++++++++++++++++++++++++++++--------- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/bun.lockb b/bun.lockb index c6435276b23befef2cf5aff26ea03b90ecf1c67a..fbdbb10f55a5e68d64f08caca62e76bc09643100 100755 GIT binary patch delta 10521 zcmeG?XIPX+x9_ftz{1kYB3%TjOJDlZ1Qbx3vWS2p9cj`;FzjkHB1V)v*M1M24hYXWWstOa-z|Rrabph)Vgg{6W6Ncy_#Ww(B#T|fghX=&-GD457XlumK?;gbCt?K)`xHFavA?SPrle z;CtYXiGY6sYz%mt7_S73>6zksIA8;)I|9}RTwIisH6J?nP$CFWCDavTBd{KdLOaNm z1yE>%1}rcM8WaI%!|*YKGGrLPVv0t-2Zjr}g+*z(rD=r(;SKJ<{EL%wafw^NXS5^p=NO0@gLSL(_JxC)uXL4Ej}glS5G77;N*wpbraRhd;%BAKX2uR zpFh<2#es4Kb)L-+v@g$hyb>BOX_|#jJ*aKg)D8I)c|9`AUh`E|6=PTCTy@W~{`%r) zjlQpr&ewUXsA{bBDrer7ch_nU`&(;RI@4C)YwT)NGyKVNAUR@Za8_cW@8peJc2s5$ zDVTTP{4_n-vHr%Xti#^TF5`3i+K8bLivhYHOLxk^rah%+90IkKhN2YR)Q7|Zz=3CjU?P9UWF%xL zs6U0R6$E_mQNB=BR0C}xAGRYQizH0@m;kDN29b|ck)1H*2x4rR7@&OA%@+!aYS2Em zuG{~p%W^zHOdr#-5}=IT|8by1j48vC|0iwnK>5gKa-5Ao8M~iBpo~2pdxd|JDFe#b zrUcp36IUfCQB@`;hliLSd zJsvMvIb{`sh$Bm>P!hErhf*|RjrV4#62v@`SOBF2vUDCwsbt9kj^-q?R3j-pf|7`D zsye2wQSfF!LDa)2lwz>}eWnItD)Q)`X`oO*w?rsF6LmsusU~7FdGy~kQ7DtA=m3Y6 zCpeCd_Y1v53v~i*j}~Go@#v4VP$-}y+Nc_kf)46b;wc8fF^L7nV*y10)VNS%km3h* zP_;6T{sK4wS?D4ri$~AZMWKM6>7r^DPca@2NpBD!_b0ucjhHGt`b9Ph1*EQrssW|w zp-w&Qpwmqg7-}t(qHstsx54;L$G`qG~|KMyL}| znh|1ZdJ13_6Buxk#c+t=Lz+w&!*PSJ88TrEmj=Ec$@FhvxCtTs8w&o%^7znng_i&U zOO^;E)%<5M9r_G{`;Wi{*!u*5e%I0!U`NBQCX+12lMo|r#~Aa?6ysUq_Wus!yJR*1 zp4bF2{}@;_A!86ok+Isb;(20)V`1E33IH}Z6#yrUaeD@?K$2qUA2Vi>%~Fi3czI&L zNfu*8|7%NCH2(jaC5ZX*UhMuPZ}T~GH6J1pPe)@S_ke1($IeExB@Lk+jKJB>D+@w$7WR++yosBcRe zXST-1pYu!V7WqsZ4=;SsI;x6y6$5z~@&)iZk|ajkJ=;sGlCpWpIhiJRR=39l51Kby zRdyX-zh2iw>EW}!1^@blWwFbyaxlhiy7s0iiau@XEjl(|&oa9C+2bb5_}@Si);I5xBQ$mEYX<0Eg>m zJx>Ri`qJ-Oc6UG3Jia_MW2s{HB^kxk-o)A&VX@rDwB4g;@4Hra6`nVl65p_<>GXp= z3!N9LZS5Iy(L2*WBWsb%nu_6b<9FwGX&$X=>0f&7?j)n{l$piuEn6b-2@S?72tgUV zktB)HHet1X)5a%$`Z33DYp)(k;V!?^9?n=5b#-mW?vR><_-n>$Q);-^vsfJo%Qc?U z6UTXN`Ynf@YI$)F^OtKY7M>B@yxd+y-`EP!>-&(NjK)6QK@WqGY3BP2maKWRXT-?qy4!xub>%NFC3y&aQ18;2{e{EXwr462Co0I9IyZw3tk(oE zzK*EG@YOXr?iMYm`AyZy?DDP)1E(xL>-FEU{N2}f7NdohdASI0Yxgt3gOi#Nesf`diTp`e|p%uFt625-*~${(VBI5 z>$+^;=;%G$48J~cyJ7gI-sM^9s|CC4LamsqtTbrdE#voXSZP+cqzhDGi{Zsc z-rkgEMrb`tquF<`KCbc7!Sj2!&g`@Q`PHm+-rmbiGcp#YRJ^cpUVQtQ&$chu?%mL| zGycI}ZRttV|1~H3=#WeIi5-K{LXloN)(e|kl(5?w+iH_8_wQPF>bYUd%-bEjOQ#+0 z#{}5UnYr=nNT-daVS^)Kn~r4e-nhD=%*AZvkXQMl4X=;Xm=1M0rgrpLuWZDcz+n7~ z1PQo~6Qk?hqwOr!C7ODS8@sKBg6tgvC#=!1`l7`tDZ+5M&F%gzp=SiflY7={Olzy? z&Ggu{FE>rjzg2O@VV`@=t!r;?!1pK(mKs(JPh?4A9Adm1da`as(&mcua?aeQFZ;Z# zoA*`!rumDUyaO}-=qC;JFHXJd|F+B~9Iad*_Q&$hbmq;q)Am(0)uHlx`sLVSvB3iT z5id!M$yM^V-9ubkXS?|&w9M4fi%B(f%c^#Fd=TTf_>X9`<8kTjmXOH73CY9$OS?8) zdoy(9FTFYKBfD80Lyl{Dp4|aWlqc}5MkPl5nvPcy-{k}}pT41xbHPdJx!yIqz0M&D zWrF^#b^O`4d_8UDP{mr1C-EDqv;8Xly!220{0v`U7 z#OUpNnIbnl-~I2EvlP-VG$tRulB%Dy@vVpJ%eG+JB)wz$4|_|OH7Nh+S<6~BF4!e; z_T&@c?1uX5ttrLcQ-5E`6>U2PsTh6d zjJ3^LbLxeeBjfHRtwdcRg43TI_59>VtU(jFSOK4w_?1p2hJKwYuX901#leV*^~0Gp>cK~LZrv7O zw3(Yk_gdy~|HW}@l{v8r+S(6`5;WolDr=|S(|BgyE;y0vmdl z?~i-F@k05r*?(AXd|mu1^K~g`!Ui({!%uON#K`8KKIki`QWI7m=-%UkiBJDul<`gjRE3I9K21$hU|!w`f7H++UB0Y2z$QcP9@& zZyD(%iWa=kzdujldZ~c(b>q$Sr^>4*UCC><3Ul3#IFGb~dsKsb6Q7WZh2+B!eioG^ zM&LlxpIcUq#4hSKp1Zf9@{fIHE)A_`GS-jGi=B{dKr}mV&%3pisPSz2=KG)Dc3;rg z*2PaRw14+_p=y-DfrL*6NWJ)>0Z6easXEe>2j~+s8w{aNF6}^Vq1}hdyGzp`*p&cfC zG}W4gSf*h#4>a49k4B(&3~F9TaU!4QjglevL5CsdA$2o8%@<`s?uSl6?vL~)@o52Q zA>@JREaX#=sX3n(gcd^{jJhBXK~@%g+Ela@@@eQg&UH9|fMy@os%McJ%Y#~Yi92wZ@&GNRe~ z!p~m}78M7$2kS;@Kh5?Y4L!9{rVlCYAGPVDVHWh(PC@Ps9E>aw%D^o;)GyB|Ia!?S zBGE^~E#3XqoB-DTbq+Ri%#*RAb@DbAUGw4v5~J@#3Aa+8wDUwPk~+3=qPT4qU@(ZV z>0KNcz0R8|00P_Hn(f8iE zS(Bk;319_)k5d}}{Hnz#Um8Fr0Yn49 z4{i9TTp|SB_0~1THvqo8@jZ+0M0|aLL&;kKAK+}X#(T0g6G|BX_!~YRAO-+CD-|FS zU@z_%Qe-@K25uouG66gTz!(63C}Tfj-{IllFAID&VyEHFi%$l8?BF8}pO^SBW&>a& zbO5kX*f>oz>|<|<2Z#rX-H2U{U5*b%7XT*!djJjq>hjTNzB7Rm?wf)9d7A3jvDm@b z(G~#aD2k^kz|xq%-cA-KPbXuhY$I*l1=s*S7s9*+NBnEz>LU2^LgF&lw;y80)>{Kw03VeW!BgcUQ zUZSF0R78P6BfAkeIuKMKj0!r4NkE}OWmH%~N}+;jRNz8Np~7ucXhTY&0&-OF15*U# zPzfq#N5w~^LR3_bil9g-RNRk>u}CRYWRQx&NGVk8kc!hV1R^)USgG(L70Qtci6f9g zakM8wN}*zuR6IyZp`w^n#7Ih^;+&$Gl0fT~lthI>sj!ojLIq2yz?76ig;S}}m6SpS zT&dueltP7MA^a6Y#=oQ_Dr!qb$fOi1u1m$xq?C3hs_|tTP{F>KLkb$vEus6wYtPYx z7-XVHfo%FKCb|WDRJ5{nhsDD+U2W&db?t~(udWhO^J8WI=bjLsD{%A*zcm-y+N?;MuSUC~go^!545)zbQ7s*f#I+5} z7&P)60QPWYwAY`_r6R;pUkwfUZSESCGEgz(@x|S#ITxSPrIc;TXcR=LptJkaiU<|8 zm0eN>DlENv?cW<)&C~~_6gd_O4`3TmacsBAyWO4MTn?5p1hSAYfX$@>--hK8vsKM-jy9#asp^+vs2()HeX^MjAZJH=D zkjc;LkYMeZt6zGxHx#T5=axIW^v(IzYkcMSYiAly{? zqg__FTp=*Haa{44M}?<*%udFR@CFdMT--pXctvVafp6z8Qp!(#v-uM`ty&wgr&B25G4e&4It=FF5{n8w%#78(8S)ucM04-5OrS{%x2ER?;1#()6l-)&zP6R z)q>?HAmq7nD*UH`J$}#SW*4D_Gxd$(8nm~whun@_^_=32@{F`%yW*mh{Jiw649tV9 zBHdkO8$m#}N=iCm$-=av{G8G>yMhH7cDcy~WDo8iHiGnrO?KpUh&9a5%Ci?=zUcdS zLjn2UD-*%C_Yfq~(3sR#cLg zU-TXqIMCUNbfMIPqBhy#*^8P$Jz5xNFo~K_Nh?geq%59#bSli$;(bP}QNoEUGOU*G zv*I~*k?@i=8D@zAlJNkmq%6ZI(JJE%V3n!KFiWh>lQZ7<<@YB?o>l%YF7Go# delta 4019 zcmcIn3s6+&75?w#wF@jP%K{6c@)i)*U0_*Q;ED#Hm_}{K3sg~X!C*;sL>)totVv8U zGzog9CYVR9P8-amjSj}gHcq2WLn#z{5N#5QeWV@=xFQJ9GR&fUGiX_6+HrvKb? zzW?0+{O5n1^S`qR}4=4 zWXaa~LQ9pK)Uoo3icM?Mx^nTuEQD{xvi9~>%Y}G9M2OLlj{{SIzYfYj1tvpY1xy2~ zz%f76^^J(3V66to4g z-zY>Bu6rKQgjKC9;{FqY^XIRVCXauZTMO`7B{swd0Xlsa|fpYtw0I&;(^y-jsO1% zXaODr+JL#R$9f4s*4q^q=*SKr>u+JKLI#B*0r(+mvjJV<5(MtR87MFw0iw;%W@M|C z@O*+@fx)&QI^lER+*dDE(WO2*4BFPi4 z$YoK~30NIPen3q$4FNVslgFwUU&s7#g>XUzqY=|w3MrH&d7_DitctwOM4kji-esar zz;zS(0c&GuC_yp42iI1jf}~YQi>1y)MXrk_Kj6t&8Up-1mOM#{>@rg)V7Zz6fW2lK zN>YqQcyyXpeG*!q4QVQ*Fgg_Pmj4(>ew!j&EHni8o`pQgiu{;`IsrE=N}f@Q{E?M9M|ry74Z+0ecI3Fik`)+~7zg6? ze?TmuuP}@_6nP-V@gPo&SQw&!1tdn63t2$A9T5e>t^Exk>mi&p{c>KyoXP|6g@{lW zSZM-#l&A)As@C}bhHSS6yPB42z5qk0YIIT;H(MJly&ZWRvx5J1Wbs>e=vO<48~rAc z@y#3>bkNuLD0k;ubf`YH)tcG=?s3hdLA@_^X!h4~=srU1 z&Vfgevrv@`v=Q7$m%t;b+^$MdvqDrHw4SWn8 z0v}7sE|qc%Omv^CR!XO%E>+5)^ioyIqQQ+c^670@Q|Lb_b8(hY}+?)2136R6LlQoqwgHz7G`MukdsMJD=HMXgj!gOCix zCR$KgE4gTArAqrDnW}0fH`Q0Eba#n~4nis?qoR_{WukkOTB(8#C_VI4xQ%`?$zZ5P zY{p{O9Z0YFv$Q!pjvV2kKzNUyslIoJ;W*|2cG!0Y@noM)l__@4-?4SuC2dEfS0&;p$FN5UiIX1KX55N~q0w(&hhJ5!Q? zxZLo?Mo?4zsPJ2CK_+AUgf1Qq&jjuenm*gZ%}le4i;+kH@lf=x<|EH-WP&n4=^$Jk z`5MYsN|6TQGCo3bLD?YQt#UwIuL$G>@syw!kou=m zL&Kvaf4?MEzoh-{&6+Fg-~UmTEH%394m(WeN@Q-dmFm&5?1|T7*LBZ&9111&BB$Ny z&@Y}Bdd?)jwEfg^loZ*WcJ!uEqQ*v>+$PcNCR?h0aXrzu&b!U>`~pqS!FpX1JrBJe ziC%3iDt!WTAB70sGdSjaukV@tR!OOH+t;AKJ5Ykd+?P0zONA}{*J^9s3+UU-9O}orj*@cAqR+qsiBtCKpE2_U58g{e85pqUh7?hfY>#{Y9r-cq!4x zQ24xoG6bCoCa1)Zve=fYKZN$#e*gBVQ^W7ULJ@}LED^0Sv|@45QvK!Bv2ptFo?m3G z4K{)3_|I;erMF-kGZ}ad0hLDir8hn@yfacqe-0h)`p%_g@BF4Q*c_JTt~iSE=4Tzi zMVn(=e=kLx&8%JS={u;IK+lBu&_eUQMe>d~>h;=6^%v!qy|p_G?pLlu4=deecMJW6 zHUH?|ABPkk%?)+}o6DJay6ClKZAAd^>C$U`VSnGVNhVF9#E#W+V=7`Fscaghv^*4f hH}Bj?o9EMWEuYZY^?3s;mmiOy;nuQ&iEEBV{~Kd@;fMeL diff --git a/package.json b/package.json index 9868657..1762214 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "rollup": "^4.7.0", "rollup-plugin-cleanup": "^3.2.1", "rollup-plugin-ts": "^3.4.5", + "tsx": "^4.7.0", "typescript": "^5.3.3" } } diff --git a/src/tests.ts b/src/tests.ts index 12ede12..523a9bd 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -40,8 +40,12 @@ class ImplementsIdentifiable extends Identified { abstract class Permissible { static readonly defaultPermissions: string[] = [] - // permissions: string[] = [] - permissions!: string[] + permissions: string[] = [] + // permissions!: string[] + + constructor() { + console.log("Permissible constructor") + } initializer() { console.log("Permissible initializer") @@ -63,13 +67,28 @@ class User extends expresses( } } -console.log(new User(BigInt(1))) +// const user1 = new User(BigInt(1)) +// const user2 = new User(BigInt(2)) -console.log(Permissible.constructor()) -console.log(Object.getOwnPropertyNames(User.prototype)) +// console.log(user1) +// console.log(user1.equals(user2)) -const user1 = new User(BigInt(1)) -const user2 = new User(BigInt(2)) -console.log(user1.equals(user2)) -console.log(user1.permissions) +class ConstructorTests1 { + value: string + + constructor() { + console.log("ConstructorTests1") + this.value = "ConstructorTests1" + } +} + +function ConstructorTests2(this: ConstructorTests1) { + console.log("ConstructorTests2") + this.value = "ConstructorTests2" +} + + +const targetObj = {} + +console.log(Reflect.construct(ConstructorTests1, [], ConstructorTests2))