From d200e3d61655a45abcbc5f2b81769f8ebe37c1f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Tue, 30 Jan 2018 20:39:20 +0100 Subject: [PATCH] bug fix #647 --- NETGenerator/NETGenerator.cs | 6 +++ TestSuite/power1.pas | 25 ++++++----- TestSuite/question3.pas | 44 +++++++++++++++++++ TestSuite/question4.pas | 9 ++++ TreeConverter/TreeRealization/Expressions.cs | 4 ++ bin/TestRunner.exe | Bin 30208 -> 30720 bytes bin/TestRunner.pas | 12 +++-- 7 files changed, 85 insertions(+), 15 deletions(-) create mode 100644 TestSuite/question3.pas create mode 100644 TestSuite/question4.pas diff --git a/NETGenerator/NETGenerator.cs b/NETGenerator/NETGenerator.cs index 085f2e977..1bf5d61ef 100644 --- a/NETGenerator/NETGenerator.cs +++ b/NETGenerator/NETGenerator.cs @@ -9846,9 +9846,15 @@ namespace PascalABCCompiler.NETGenerator is_addr = tmp_is_addr; il.Emit(OpCodes.Brfalse, FalseLabel); value.ret_if_true.visit(this); + var ti = helper.GetTypeReference(value.ret_if_true.type); + if (ti != null) + EmitBox(value.ret_if_true, ti.tp); il.Emit(OpCodes.Br, EndLabel); il.MarkLabel(FalseLabel); value.ret_if_false.visit(this); + ti = helper.GetTypeReference(value.ret_if_false.type); + if (ti != null) + EmitBox(value.ret_if_false, ti.tp); il.MarkLabel(EndLabel); } diff --git a/TestSuite/power1.pas b/TestSuite/power1.pas index b5e2f6486..d541748a6 100644 --- a/TestSuite/power1.pas +++ b/TestSuite/power1.pas @@ -1,20 +1,21 @@ -const r = 3**2; +const + r = 3 ** 2; begin - assert(round(2**3)=8); - assert(round(3 * 2**3)=24); - assert(round(2**3 * 3)=24); - assert(round(2.0**3)=8); - assert(round(2**3.0)=8); - assert(round(-2**2)=4); - assert(round(-(2**2))=-4); + assert(round(2 ** 3) = 8); + assert(round(3 * 2 ** 3) = 24); + assert(round(2 ** 3 * 3) = 24); + assert(round(2.0 ** 3) = 8); + assert(round(2 ** 3.0) = 8); + assert(round(-2 ** 2) = 4); + assert(round(-(2 ** 2)) = -4); var b: byte := 2; - assert(round(b**2) = 4); - assert(abs(2**-2-0.25) < 0.0001); - var i := round(2**3); + assert(round(b ** 2) = 4); + assert(abs(2 ** -2 - 0.25) < 0.0001); + var i := round(2 ** 3); assert(i = 8); assert(round(r) = 9); var bi := new BigInteger(3); - assert(bi**2 = 9); + assert(bi ** 2 = 9); var bi2 := bi ** 2; end. \ No newline at end of file diff --git a/TestSuite/question3.pas b/TestSuite/question3.pas new file mode 100644 index 000000000..b05b24e83 --- /dev/null +++ b/TestSuite/question3.pas @@ -0,0 +1,44 @@ +var i: integer; + +type + I1 = interface + + procedure p1; + + end; + R1 = record(I1) + + public procedure p1; + begin + Inc(i); + end; + + public constructor; + begin + end; + + end; + R2 = record(I1) + + public next1: I1; + public next2: I1; + + public procedure p1; + begin + next1.p1; + next2.p1; + end; + + public constructor(b:boolean); + begin + next1 := b? I1(new R2(false)) : I1(new R1); + next2 := b? I1(new R2(false)) : I1(new R1); + end; + + end; + +begin + var a := new R2(true); + a.p1; + assert(i = 4); +end. \ No newline at end of file diff --git a/TestSuite/question4.pas b/TestSuite/question4.pas new file mode 100644 index 000000000..8d1357163 --- /dev/null +++ b/TestSuite/question4.pas @@ -0,0 +1,9 @@ +begin + var o: object; + var b := true; + o := b ? 1 : 2; + assert(integer(o) = 1); + b := false; + o := b ? 1 : 2; + assert(integer(o) = 2); +end. \ No newline at end of file diff --git a/TreeConverter/TreeRealization/Expressions.cs b/TreeConverter/TreeRealization/Expressions.cs index 84d3f2d5b..4c930f402 100644 --- a/TreeConverter/TreeRealization/Expressions.cs +++ b/TreeConverter/TreeRealization/Expressions.cs @@ -273,6 +273,10 @@ namespace PascalABCCompiler.TreeRealization this._condition = condition; this._ret_if_true = ret_if_true; this._ret_if_false = ret_if_false; + /*if (ret_if_true is null_const_node) + this.conversion_type = ret_if_false.conversion_type; + else + this.conversion_type = ret_if_true.conversion_type;*/ } public expression_node internal_condition diff --git a/bin/TestRunner.exe b/bin/TestRunner.exe index abd3aa0aaf2ed1f718837754683192d5a0a9e8aa..2decbf7b5f226dda700b87fb7801468b9b910726 100644 GIT binary patch literal 30720 zcmeHw3wRvWk#2QQ&#UJl&B%=WkgO4YFvehHY+z&zSh8eW;1`zs;w8q?*d7>7i=L6O zF?J*%JQ5%fAOwd?0!cOyNCH_1PC^n02?>`ZYj(-qa09!Lu(@$IVV5k)B^xf>zv^_) zLzXb?RW#)Nl3nY1lS9^Ec0nX!&URR@ z?Ga+24WH+Z_6q4*NDC2_fYBB9=G$;h;`D^vLfwty7dow9cI1a!?Nk*r9P~}-Dx5XFup!+`yii& zHl6(FfW9$3h0;8p{(U$#I;I_KXj66AYq`$jxcL8f>$=#A=q#}>0&70Lq0K{4M~|eZ zunwl4IuQ$UJVBp6T8B2)3GD~MNW7!9!(S-%FEpGGvW`RaSY%rMi_rKwTI z&{J3_b00T2&0yZp=B3pjVjaH^-r^Fvl36i%-qeo~o@q7%8RB`scGInsz~lK) z`l)x{eb?i&pmOuv^ggB(LBb9}Bv>O!aGWGv71l?gWSIlODw*8@(g#?AfRaG;bEMwU z+1xNm8}vMB8?0-JE!Cb5qxAlStA;gk3UbAb)8 zX<5gh#q`;*;^9;R^>)}Ac^WsQXW{Czp@C|AVndp}$DRgsu@U4~z+Mdrs^SNY?Mu*1 z70WYyymCv}oD#ky@0;&v7mGPHw!`o!Ed}>UKZ*5_`5AN^V6pMZeAbglVZ-vJra}Z# zcF#jdAKjDM!!tVzg|vBSzS}k#zZ529l8yeuDR{o(DRD#b6uE@IzyP7k3F6LjjOoxK z=DbJW0PRIPbO}FZ7d0&e2(ukxa0tR$8y*Y(V@?qVG}G(2!IQcg{Oj2nU7DGoF@5Z@ zuq$fxj6fsWly^L?%VLdO+EfbR<<=D9bW9Y>si1)D^YOV$W@t$g!SfrsF`(S<;p`mRyJ&$R@rzVvnf#8&U$7p|ur|1oazpZTih;AZCs}$Iwi+Mq7xkfWBc*F%r`Pw|28!UVQstv2Wn|IIhzX7Ivb(57$@lT@D%3_p+d#5$36j5UF|KaU;93 z1@|)(??~PP#_ZvWj3qmQOh+Ja1?8lo(M)3uN|@=#)euP~HpdGvKtMrcG{y8Ksz_XL zM__GK+TUA{G8>0%azPdxG1n7V1g!c|<~p8i@*$q%IoHhML>>Z`bd({+lTALv&Lf6c zz(c?`k21t~vdM?=9x=p8JOr%!C_{`Vn|z4-V34(nYU3ebXGa-gJlW(!oOQ$y3wa3G z_fduzPd51wFJTh3vpAWDfa4rxi1B2T4}p9FLsae4{elqh2*-8DY1s)ZJ3TuGB z3Q;8PQNctYhiHQFIAp+EdFdVBZN!lP@iR&f00)=E{DdHI{qOQ#8E-=jYv7Rrdd3n-(MBxopAf$gyEJ{ygiHh z?{VX;PRK&sJWcW(>lA2g1kp;9D6Ly-c_N$>7zBqrO3q;+G4he_5uK<61bw(K+~6pE zt8)mD5rRPD!(gt5`;A zrkI`wOA1&xMZk;n_B&XbfOR@RYHaYvWFKU|k_iM7)>5=gsKGSvGl>Q-dNZ@etquN| zx4{?l#r*HEZl(|$a=#$vYuwV{OFswcMDz9z=+jxYOI_8ntHORb z$8c=ifjJ1`8v}^;3C;~0A<86u18(2r)rappoC_TE$hq<+^wd*Zxb*A;&cN|!7|o1n~Y1gC=z2I4jP8cO37!?vG13^$Xqj@iagS05bGJ^y1rst z&{iVspK>}ckpJdzTx*O3`To~@@+b7YJcaxGDclk8i8?3L=Xm}8XT$HYermp1h%58e zs1DOYoGj1xI?R`6a&)^GZ#P~na5+{c5;r9Q6t`lebJaSv(3=npSlEGeCX9SZ1oR1A zj*{*n`#GR=$w}Gxr)}+K8V&)R;a-ey7+?0}bMQR_UxYI1!WRP(j9lU<7KPF|6xfum z!kD=1RhJSjhmh20sk7J2Q177 z;Y4ds0O1o%H!$KSTNHEY5$l#b0ms_u+gLQY<$iZpzOMa$NFj>SRZHHB*xtf*Qh>UL2=ix zB&i#?Oiu-|x^txSDZ=O6MLL12fI05_4*P zn7Jw2w=8NyTbTX~qGMUs6gCgjLL4%28(;~iE{O`NseHR_2|Id1Zv48j;V*$vw}RO@ z*jse_Uoo1Y(h;BTqzrYQ)Mj^l8z)$mNO**bw;tSG8Q{*$H&fXHnC<8)Ao(K{=)d=m0RXX8V)lY>aoi#tPQL>N@w++zf_2 zv5MdVnF?^UAFE^RMfi2?Rq-lgtqUjSRUts~=iGD>+l>&1i&deCijE@~>Cgy>qdA6Ma@8Uv${j)XR5+{A&j!JCjY%vj3Wk9lK0$>r{I zGOS-9>>^P^6i?V&F#G#Zu`(DW;dR+ru{6hJqT`b&DzHN*f;zmES{P6p>Eq~bmOOo76Ua8{jufD0C^>5Bb&R#$lOsGaW{=Yyf`QsKbF7Tf2E7Tob9j z@(Qz=d3l<#<8uM1V$Qehvc-<~@n1PUhu`7`xxkT;+ zC}n{wjET8B`<8kJvVip_PO7JN!D<`8(tOsYXaWQl)n)Q)okPqjsb~ai) zmBp0h*?^foiJN6H4|Ra1vV$*SPe%^L>s*!CtN`eQ%^Hf%n$B)umEo-IJlwSq*-SqP zi*$G{uj$c_;EkrwGd5)J7L!cvK*t+dEaxc)AKNMimAIDLIT68?>>W&sl&d_P$_uOK z#7173t}C(Fgh*_r8@TrfTQRFHDFO-@4g{4h%&Jst0t&_B$@k!)C|(#x!4}-k1{rMG z>pUrxP||X~f{=9~qM33JItXAk08ir7Ib0%+xM(vLn3A$UAewEA1*~BJt~S`- z8e>7suNK2;dNoFOZ1O{FS8AY!kUS}F2*<)LDK%eD%S_xX;20bW+sCsAN>g$4iiHlL zbWFaT<#`))K)2LSzj*4!)@3}0NEx&ljN;BgeJtXhD(Yf&v3hk6eyNPn7>mT}4k%5z zhEQ=(3;DGvBMiP#NzgF(^_Ywps|VPSyhD z&Qr=oD^^QR6MXN26HItVIqtTc(6Ycna>E1-Z83S$f&J2Lm$eGP|2c4ALVT3OPU*3( z0IaOcSuDv${jSfEZdiLkf;kw82;4<&Mjz(x9wT@USQv0YjzOw_uw_7LvH=v0!E*PC z2R3qFf3+teT9Vvnt0otF^}CKLTIJ!5c8Lj%TO#SbP^rJg@il*0JA6h7(_P?s3g+)v zYiLT?Ki&Y(P=YLmp(-PslDG*f)}~ljV#Z+%q9RA#46`w9X39!aU`g6Lj!m0 zV&0%i4UL%BNe#U?k$cm>WJ@+iTfnT`vBA$#w|r9%k(u^00V3&E;13|J#0|fidw4H_ zO`0>hL_;7JP~!#@4Q31xOAQ>1se7^a#Y_xrrX?p0%D_dWBfimNIe***t%Ox7c@?TP zsbqUihg{_R@FPc?4A*`V4U;JPrU20XX;6dKXRjRz`*ADUWYsnv#EI(U8M0y_i*>F5RZEcl;ETWqsWx`-3Tv@qNTl} zkE(ZNaE}LWBsZ#l1%<2kq4)^^n3;3cJ2eQOcza3_s<&$V6TMZ#ab4D_@+M9w(f%;F zsu!LlR%_+=4--l}=mDE7x{4kkF~g_}3{c>J+n&1JS>q#VkUT3MDd-S4c(B??-uUPS z;3nw?UWS}~F}e4B4@0e$hZceVl8O#f*u#Cy7q`jmFS0w`jC$Cg2*}$4_E*_z#2{p? zbv{DS=@a+gkNG?IC!VS926-d$jtXwH;vI&MVE}VKbYoO?_=(%Weu-;Xetwg|4RMKZ zAgDGmHe2!s4)7aTc$Xn&*uMt7WK(hyZA?K3_a2*iO==ao$bzCJVW0_&UXw;?1; z&6>1NH5{F$wgMDf>c4T<6f!8>%^O9JDlYu)2=Yc3m$2>ut@UXXht7koR1PHVoglKe zfO~nU-A4|kI6GWEQ!9X|Ns2(rlnYsWamIT=rBsMzP@8$6aZ5N|bly>EXftU5S{}c? zM_J27AABue#|+>9T3+wY-d#)GUCV^5B^GzzeVAL!>)H2NTtC>_>g~uG{+$YUR-E~~ zFOC0LG|u|oF@e4-{-i5Qdv9OjX9ge8mwtgB?_2*$2v_%>iFN;9U*|76IuFo=P}o_M z$FN&mbE~rZ@!_RRQ(3EUInLFj>%U{8@CThphlq9bNcV;E>IB_LheXbabiRPI5=a^vP{p0QlbYIqM zq_Te)AKd1@Q`YMH**}hmIY-s@MEgdKw%vW>->&W2u>Cd+x~%LOcy@zbjFz!okJt62 z)@wh^`sQ8QdG$BsbKXSc1DgAejDLLp@+wuV-=F$CxTsC=FL-^O*J2KG-s}N0yoJa% zq27mCP8;rU--j_NfyG?Ta*rRUya@Ia6*=7lQy8zqI!`%&2F7?R=RgsjV@86F*8MC& zFkw9)*Gbu0U*z`UgD5!%30e;^j5}Cg!ga1L=`Wx!1G0Yz39PShy97?49|pjCYXpP0 zm?_+tz^4Bi=8LvRR2w(r2!q|_C+H3dmB0OpXTzRXlP@qGW~4S|d3iJiW>8w~x#FuV z1M+A;jiEyq>n#z&Q5zcMV`Rlg2AQEAGY-fbq_~TK#}1ff%&Sr`$!Po@NQj4$SnNhT z2VRJZ+86Nds*pP8M%-w?`#3*_Jhe7>H!#kK9zKtf$Wza?7=}Em zKtDP{piemh@oz{@02`QAOg+m;{Us}Iye-W1x=Zn>qgS1-LBAmPOFcGGmoB$U#ro~R z32?THlOz{U^}YsfY!Nt6!d5C-qkUDGvO0fcs^e$iytD(AZk7knsFbfx-~%AQhfRzf z(SDs-K8~8)%VG3Eo{KE*%YIPKrI)!wt-*a0+EeFRezH1$4f%0Kz`0hZ6;Pz;a=Zd7 zK5FM~(#HV#E z!6Z5@$5$1fWe!fCS?IGuZ1XabruVV34@xC$j4K^(&;6Dx%stWij-nUS%t>Qh)#J04GWug>z2Hz+^WBitt zYG6Z3#kou*_&05Uj^WZ~X%hTnF<@{MM`=n4mj!Lg%NP3^*26A^!Qls(C(0PbRgKW- z@V0+bZnk;J8r1-aljal<#`vH>*Hle}w>Y zUkBR9y_-=68%JSMM&)_1JomM}$tzm9vnO}@6f*Tu9y)a=ml93X`=TrYk0G}!WkvVH z;7nc(b5zF&h-J0E?ZlGe_nw`-XLo8Mxq1(4*Wv|j3l_C4TG-AadMS_cA*}nX{dkiK zcTWz&B4+iL>|9|-ktq(P@D3MNe%8ibYCBo|UU$~YjXhmxTL$<73^S`U&(FB!15xTX zx9CklSPuQ`oJ9nlkejmjg0;MF%X!p=_=1+cjW3fzRr0$rriIZ;AFgv7Ux^;zM=kjH zs8{*xc4XJ-e${$GiS5p4H^!=UG-$ZHR$5y7tN6j7{ zYnF#4KS}DROW7r5kCf}A+$iM*QVvL&lX6)2+$0?C^st=w3jP5pzv+1zqx?eZznAiD zq463_88&$IsYVNSk~V|oUn=EF!Ecswo0NIM7p2#zl-CLVfYk4k`U5DV^su3W&q2XI zE#*(7{JE5erTnwdd%Zk*o%c@Nq#0h*V^XV>?I?Y;)|>an@$1nmy*|3xdy5vQPkOn2 zKkDabUy`76&^xFn=sVu;dlU3`D5ulw-ea}t^e2=F^7+0G`X(Q1yT!-++fdG=wC^r{;!N1BSL*iyYNoj;BX~EK z+ZF=y0y>d2fSm%>A=hSTr9g37A(ZO{O3+4W8vxV<9$N$&5(v@((rGtcO&``~Qcn8K zm3}kH0#r{Q2Nc1(FCUV&d+A<`ejJTDZTF&W0o^8TSA&Ze(Ctp!)zbC}X?u#ElD0dY zwx^`+F1YHK1Lvarrj*YH`cVICDSs~IYf}DB%0Ei^u9SfwQ^uui3T}b_ZVx_zGB4$D z@H?m%gHNN}75o9p!@;*uUMH;|4Ze-~9a1Wq-v-|W=AVKd%|pKr`ZXW@AvhiNs5uj* z&um3G-F$*Jjh+(Pf^k=c#<2QZLLWxiFJ(4#1L`Bv`jOBRpt&t{6EL3*-HP&s@DEV_ zEc_hGm%@LA@>k(4;Pz&idHzXCuBUpi!04;{XF*Tv9mwxL4$$=u6!p&s^g{=lDG;5l z`lb9Qq3xA(6x8WojCi+xje>Ugmmp$)56?z;gljPZJaWB)J|WQE=PKxn0`+ZB(Bt6g zqusp<`U%?nbfW_u_Adj})Ti1gunfD|Lk<)U%)&20Uvr>Vfl3<{<)Xk!w7um(YtR;< z)tgn@R)IzxXs19AJJ6K^b!}0UHwg6TRt0@bpsBd;%JaKZpk)I2rrsY|gAvqcg?CQy z{3_`9V1E^KYH*+i$|2sk{Z0*9@*Xt9E4-%$NBD0`$cLf5ocxrbG1++-rvtH;z@-f35TiaK6}6V0OaW#~4%-Ip&zchMZWz6^aD z5$bbg=<|q9-z!58;tjc}bJPf|rFpc|fmloP=Kc`Si~M#isTLXYn%~ z4#JMk=2N|bL}&Bq1c6-2r8ShR9cWMRIdFNQs^1Cpb{RT^lWj^JBEj>gi0&7Zp`YVz z^`-OF=zkGBL~Znf13d_y3+c)QZrd8XJJxlQf(`~>1vIQ6@O%}|mmVrZ{|j&b{aT>y z+Fu9%3D33zZQO4Ky%KyAPzre#Qa_pdX_OX7*~@9PNX(_(?t=%>?efz;@y)AcpbCu^YlYoLQQ&<|^%pVdIWu7TbXNX_qb z3M^*HRMa?~W((v>woD*bvh|8m{0NyjJ|22TYcC8(B zxkl@xsi&!a2h3Gk7qvOiXU#sXn?}pfRt>Xspa;!aOWIoco&z<7uF%$#A=9rHTiQVDlT4|!yMbm)8?u1VUD^gZ z=s@2J&8J>^%Yl9px<~7!^inm#YoX6+eKdTAg5C)AX&dQA2hze1Xq(7buG(gX@6xu= zYzJx!e?{9$v%6GVPxzpA0sY8<&JWMR>EPE6G!#A#P<^+eEK1vK2fA9Ip{68_go`B9WQazLKNy;XQc^Ne7AC}oAxLkjZ;;B~wV z&ED=qsUchBaxv;UogtX@Qf39CT1N!)Q7Ks}ozy6wDPuHZdR6N5h}4x%euTPC&ztpl z5%EQo2E8V&QQXPUsR5-%v!sqcNr3wE()x{d_!L>8lbIPx6EdL{U6tzBej zrzavm#k(m_M%wil@m|+K&qmGy|DQ(A2meWW4LD@zUm`si{oTm9dQ9_0H=#Zw zaz4sMk&96-iDXfBMlL~lcEm#28!4f@AhHMLU}V3pq1V;=R*f~*PW92V^o-OGQzCjj z>Q6*AVU*_R&8W|ho=+L=l;|3iUx<7{AEPDFPocFV%95NL{k%S=4MaP&3|%6aE23Wl z4a=Oe-5TY&?~i~ReLDImF#99l)NjCut@^Fn{n76O|2Syw(w>Pvhw^Wu&+GSU zzlpv{4`^E5D(w-C_k*ts{ZraUB5SA>8g9ibUJ3rK{($DIdr5y*n^N}+!Mq8bf8YEy z@U3<8=|!1WE1g*Py534l>((F-;rc?UXQ;F8O=!3&q6g^a^aRB=rs>0Vvpv)FJt)WMy1MhJRllWPnpQ-BxFHvtsnNBs~=l`HOj^HH+XKPrS&&^9?(|R-|l%tJHP%e&sKe?{?n*mS^pQF z2gI%(pj+!(^?RlM2z{~sOP-AW)%ve`F4Lc^KM0x^>c8dLqq8MEMZc>5uIKCYFZFk6 zhw&2M4?JUnzd^5${m65dJ}q{ab}KM{R*Vw>v>UQzjzVr_$Ixm-yWL3vQ96z?={d z8*DAydZu7j$IquX^sRAtrG8O-uKtF;3#H~^%wf7N9y1POy=Lfl>30DCb-Fu#J?fu} zCyX$Bv)PDwkRutbC{Hlvp*)0$6rs}$zAw>k1n40;9p%Hc4CSM!M`@wPcj->iP6p;e zlndyW-nqU7^e^5GDF4xWj&DHwS5K?&v)Tcp)%Q#7t0-sb{~hIQe*?ApUI~6yL*3;1 zXq4-(#Lh=+x3S7tZ9GALqpdgkjC1KiV+&=BtdTPc##{6@m5klSRmKg*$BjFU>Dt}K zgT_~kK6=!6!uYQ7jPacDcg8P`!^Z2z|2D?7KO3gE&fDmnsZIAbdyn(Bc~9}Sd(ZM_ zy*Y0Y_nF4LcX;ph-tYag_bjxEVrM%kNmh)k<>O z1h^G~+e^)g|I#(q;7C4uCaqV0B9i*D#nOh6LLqBY&$`|{#Zq>N)^~I+cdEdZGKIm6 zJ?J3%_>U&`?HSGv_GU}ev8`CLGXtg0Tp?rcS&_?URh!hRkh2G~`RtBNDZ5aZckeD` z3&osOC?Yq^XNtv*gTLYPV?h28M)@{2aJ5ZvY?gF#SY=a7%F_v5TJep*hJh|MqkrEn9b~ZD#+0K

AP|})gX{R-)gb{;SupztMnF)0l2CP9mCU8X; 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 CfhnQ@ literal 30208 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 diff --git a/bin/TestRunner.pas b/bin/TestRunner.pas index 78948df56..83ee50dbe 100644 --- a/bin/TestRunner.pas +++ b/bin/TestRunner.pas @@ -1,4 +1,4 @@ -// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt) +// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) {$reference Compiler.dll} {$reference CodeCompletion.dll} @@ -60,6 +60,8 @@ begin if comp.ErrorsList[0].GetType() = typeof(PascalABCCompiler.Errors.CompilerInternalError) then System.Windows.Forms.MessageBox.Show('Compilation of '+files[i]+' failed'+System.Environment.NewLine+comp.ErrorsList[0].ToString()); end; + if i mod 20 = 0 then + System.GC.Collect(); end; end; @@ -91,6 +93,8 @@ begin System.Windows.Forms.MessageBox.Show('Compilation of '+files[i]+' failed'+System.Environment.NewLine+comp.ErrorsList[0].ToString()); Halt(); end; + if i mod 20 = 0 then + System.GC.Collect(); end; end; @@ -121,6 +125,8 @@ begin System.Windows.Forms.MessageBox.Show('Compilation of '+files[i]+' failed'+System.Environment.NewLine+comp.ErrorsList[0].ToString()); Halt(); end; + if i mod 20 = 0 then + System.GC.Collect(); end; end; @@ -149,7 +155,7 @@ begin Halt(); end; end; - + System.GC.Collect; end; procedure CompileAllUsesUnits; @@ -176,7 +182,7 @@ begin Halt(); end; end; - + System.GC.Collect; end; procedure CopyPCUFiles;