From 67592829b67770f0de9603f6bf56f061bbacd56b Mon Sep 17 00:00:00 2001 From: develar Date: Tue, 23 Oct 2012 19:08:47 +0400 Subject: [PATCH] JS backend: translate labeled for expressions. #KT-2986 fixed (cherry picked from commit b0836a6) --- .../k2js/test/semantics/ForeachTest.java | 4 ++ js/js.translator/lib/dart-ast.jar | Bin 111700 -> 111578 bytes js/js.translator/lib/src/dart-ast-src.jar | Bin 74206 -> 74165 bytes .../expression/ExpressionVisitor.java | 40 ++++++++++++++--- .../k2js/translate/general/Translation.java | 22 ++-------- .../operation/IncrementTranslator.java | 6 ++- .../operation/UnaryOperationTranslator.java | 41 ++++++------------ .../k2js/translate/reference/CallBuilder.java | 8 ++-- .../k2js/translate/utils/JsAstUtils.java | 6 --- .../k2js/translate/utils/PsiUtils.java | 9 ---- .../expression/for/cases/labeledFor.kt | 14 ++++++ 11 files changed, 78 insertions(+), 72 deletions(-) create mode 100644 js/js.translator/testFiles/expression/for/cases/labeledFor.kt diff --git a/js/js.tests/test/org/jetbrains/k2js/test/semantics/ForeachTest.java b/js/js.tests/test/org/jetbrains/k2js/test/semantics/ForeachTest.java index 61f95541962..fb11f9e2d9a 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/semantics/ForeachTest.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/semantics/ForeachTest.java @@ -29,4 +29,8 @@ public final class ForeachTest extends AbstractExpressionTest { public void testForOnEmptyArray() throws Exception { fooBoxTest(); } + + public void testLabeledFor() throws Exception { + fooBoxTest(); + } } \ No newline at end of file diff --git a/js/js.translator/lib/dart-ast.jar b/js/js.translator/lib/dart-ast.jar index de3a20e193fa2b37ce88715926fbd134fb0e8ba2..b070d459c80bcecea21415049e82c941a2016e52 100644 GIT binary patch delta 19878 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 diff --git a/js/js.translator/lib/src/dart-ast-src.jar b/js/js.translator/lib/src/dart-ast-src.jar index 7830e0022c67798034e186b1908b83a8e1913388..1cc9832315e68594a12cceb993f951242cf29c91 100644 GIT binary patch delta 11398 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 delta 11189 zcmY*<1yq~O@;3?Y?heH%R@}YCi@TTN?vxU=SkVB%p}4zCad#~Rin|mjUhE6J_ulXS zCg)^+GdnZ8J3G(hJZGoA2X3VY4*k6XEF22V^QRB27Kcs?`%K=@zYqhK7ZSn!Lb`;X zNjyLd8%iWzO#bu32sTAysr>}7A_9wWV1bRf*dR)<02EM&T9*R}Csz9%OF<*Ns^g5U zMzMITnpzx6>aykW&%W?#?FLUxjk6PSN2)-2wH>pGo3XTAO9^}vKaWU zrb_nn2Rg0=hGsFO_=;)SD8Un0xb%x>%^%#D7Awp^*1~h&;4L_1b^3q$=ZS?QZu$N; z(Ve#KwaP7sr2RF$oN%T!M&Oepcb>m5UU($A$XFlybCc>dhE z;7blf__HkGt*4@q#BLF;OB1#4UxXmtCxFWZPGSzPp_g++kXP#=o!E~}p-mNS(J;_^ z1w^FPL~i9$01ON}ESQsntagp`9ooy0`s%WQq#PaGtR37f*lbKaOheSWqSH9A+RyQ4 zNW;};j@|309ctrJ-DFCteztPLI@{Qd@D{1oKdo>gzy4KF!ftZDl6L)3F{x{M0Sq3a z7H9r=de$>G2J8l`$F;)Dr_e^gw4owy3d7!%#D0Q{;m@YHn#gKw1=f?B8M>bY{wg4UUG9#8i;+?0*Ktvc?P@awK?l=0OBuJM2Vlk9LGdBHUqazqH> zpWQL#zDU=K#VnEpo6EAvRcy9|=^hxumwlf%W-Xn{|em-c+sdB5}kitKe815#=PJ zT@Ef{D-KU;`1IsgBD*sguF{N%jyG&r23k zxm#^r@7@3T`g$NJLdltP8^Q7hBT{YyR@DW7%A{ zsh|nkG|-r9`Um#a02Tyq$)8F-#82K!CBsFlD=Z-um4jIAhepAgIXwl){T-YmRrR}J zEFmo(*8UQ3at~(hy7T#Gd*9|@Np@61lh_eWO41D$bFSoX@1$JYegilZ4?@%|mi?0g zSzD6Ffujp~3SLQDVo_U69;k?}>OGA5Ux$>%Q8&o$-L!i#jKj2tjei95rdp!BdI;9s zooXEho{|7WQW6E!9mkzOV?pyr7UhW6dFn%l9dxn>y?=J+W6jW)sO_RShCqYkrVUgi zj8}TpL7pw7b{=?pXF44pCNNJ{n}9*Nvin-nU5wJ)*?Ok#-VwIQeJV1kAH9hq!yA?3 z$<;oS%%z4MZJc^*D9EiAws4UjAH4ZvSoyP3rlYE5eZa#fhT3+urdvx=OJ6j+Oczm{icUOwk#3 zQC~tG!<$c@;nrmA=a)K!%yFuuwAC?r7ht>axIoK*CZhZMHxZPA}6^Bi==M9z}>u|)lSZ#Bu--w>hcQ>u)DU_e(Ec%JM~5sLB2*G}&H zp`Tn!gZ02^t8JqO=h@tteaH>L1LE`ZiPDcAXafra!;b<}+apwm{@*`lkfN!Xh24Kj zxP$}rv1~iU|D=HivGL(SnRP~cRlJU;3cicb8&PCZqq6=cyWZg`ClhX;SB#M}n30k} zU7X_|a(t!Cvjo%J=FgtR&R&Ss0QX}L=r%42M)Pm2svk%7r%av1^~woO6?<%J1~HoE za$Cp%NDs3M{N>+(yefEJSz|^EH)q-aVn!QC=~*yWey6{RZJ=MXHvi=E#ir=WU-h`8 z?QyHe2-k{k=w<;I_8s?o?CZr8k_0(ft;Wdh76W=(ni0W-j;iqKa;q|Xuj(D~z+H0M z^dchh0)h#nY|L6#b$d&JGcn}*DLvZZ&-%J!H)dQzCP2(tP@mnGH#EzpG5KyKsM*yt z=%OasNu`0+GV{mG7(lh$Yo}dpWT_5V((rShlOFpeYZG?CsSO(e8^v{m2NL~2FKHUQz&eLqwQ*06rA{=Q95FWJ{& zV&cZzNRFY226d08Jk5j}MqR8Qng{&IbR41q_hg)Z=`5^UDM>v!@fTao0ADx<^kjv# znTsMLgc_XoMyL#zc0NgnSwy1R0<$<)OSz-}+Q53V{|y^8uiR%bk%nojJAs#%GaLkW z=rU7Gw-Wj~XRb`$4BEGSSjB(hZ?kX~UahHS(>gER#Y@#f_lb%2wmIAkFUz$Ja|688>?{ zw|f&C{pSnkt-JTUq8S6V-s!wVi02MufVh_3x6#RHUg_(Pea#-A4?TXPv_W>8WtMMS=A(Kj@J?jnTz~wwn}eHPg1to`Vq-Kh$J%YDMW*#&Pzp%TOutrPd&Opo z^{K0kNfa^kj?i(HB9pp^x+67aK-dQDU~HxDtT~w5WyfzB4>ZZtg+$6LCY)rj;b+d) z{!_u^YdRv#e%28=<&&gI)oh0?%3i_(Y*IUuecLQ9?jvW^#z!D{by_?c z1N2>Zuj4q2_U%@0UgrGyJc4a|XAI=#jNH#Rh7vRoLwUOS_Wp+Q{sz(SXnjD`@8Wb5 zMhxR@Q|XYRKrdK+=C$bI5o4RFIztnz*lYiA!h4}V`=AXhP7E`r>0rKB9he0s)hD69 zwLRXf2e5t_BG@^2=f6q6Zl8on@U5Nnh%)QSuSNKG78!6;nO!XXQf2ZF2x5{nx+f=< zx8V;;JBRTdV=soKvb=4$@2MaMjSG?d%JacLRPRHVEf82A{v1FNe$wd2zff*1x=#vK!#5DsF8fkJN8#`Y)mO82vk9{Rfp#$WGV@Z8$sLBzbIJs&5CZ8 zS*1W5HZsI+*}iFRVJK@8yr^pvGld!HNeT)WBmCVkV%HlDKZdk>5DnkW>)Ez5C#;=c zSby0|sz+$9?xR7zaxKMk5FA`IIia+8%72poay%gdLc&48fm@+?k4XQqwuro{@Td=y zJSzQNQZVMtDu%7C;?Mb}(-V+>@}tTtl20-q^W|wpc$!J~k3~escwU9rgvb(n_<0FY zBpkkN*tU&2k@iwDS6j%wouKk3`=KYw6DxBKN4+euM!RkpRQuRd4qyhtgFGwm)nSuK zqVCf5cb9qCv4VJyLUn%=oX%sNSG2keTPe2D$bS=)P`^AK^(7g$jBMYYYlg4oi|cEH z%ISe3dPttLNDft44wFa@byyBi+=k__4CjzSKHOQM87PB{0sDlpH3`5D(2dOXJF=3m zDk~mt;pP6E{~2Voe7*a3YxEFjArx+sO()%@{fX5!;3NP*e6gIc!~Witi$UgMRGypI zJ)YWqSWzg7$R~ZgZxvd?!!~M(h zWdRJuP6$)>(qG@Z^NDf?>}Yr{en%qz46Ih9w;}Z~l=sT=oA?k1qRxJ{0DKVFUI`f| zssT|18S6Yr$al(>Y%oL#j>9Pw-t^RNFRHz1M0rZA?F_EazZyOVeNc)2Iy5Yku*nq9 znGeCP>+~E+xQmFB;Qc{pSF#p7@ANcdJhlG223@a^7MOF|o?9IHo`%o^;wsA{`0+nG z!jTwKh=-z%iTJ-aaE1=F*404@a$IE|KhKvaM@;b7>Hf~jUS!tr)>)_^jk4WUz{a$f z-jO8hQMYQv$~e&tEA#}*k-zd=dl)a>s~R(Ud+ccRgjPP&Uh z0?qDt#DYe`u&=!fl9ce z#zjGs?^A>%SD9`DMsu;}vJ;rj(E^?($Sg}%n(^X+zQzO`{IB>;OoD`Ve5$%(urYHRRX;Eu~$o%GO+YOjR&jy%EQ|w@3RMSPQ@f5IH0VuAK~?-Fr)) zr@sz$PjHI&0@hr*Q zxOW2naNmCz_|ooaRnYBZrMa~$c=3fmKCM)IPlk}Uj(LGo&j%(81d$p_cpbIdZ?=s3 z<$m5ESN(l-{Za{%zvuqbjOr)*Ppxr9{)huNQ(}?kL z!JnPt$<>Ql6RKNPL0ex7sq{$qUh~&T17NRcYNXgxW~Va!lf#`*9B{g3*Xc56V`JL< zH-y((d-vFwoU{$(D=u_Rf*06%u~zt<%$gO_3CK3Sr{kj4@&zq~n~}r^5~)bm2Yn?$ zXW104;B3|sOzozKCp+~L3OD~ve|b%ZY=I|vJW-HX15;sE0{Ti~(b{JB5rLhBmu5+? z)QRFShZh#EyV?4qQI^p;0AMoH)gI!TTE-`c-_0NVi>5yD0=yEwOzOek6n7u&Gds_Uo!w zT&J$qAsS`syt@wcwXg(@O_W5j%d*``&|TT`%w(sjt$bK;&sNOAmP!QWxP?p+nI5ib z0fU=|&y=N2#F=QV7q+D)sFn~@bhIx|EN6w=dPr~(AP$B_==*r;^K0D zj)$rE!T`djGLB=P4I(^Sm9WXn>|q{;kf9|6yL`mS07H`Cteam-MCeN)Aq)A^uhKJQ z)u>2w)IWfDnjZv7_~&+Sr;anegE}B@nd9n#zf$GNMS*V-ZGP~^j+JR>_uI~x0u>NF zXG$meiZdWzAoljE=5x^3d+5Vg20jJbqqwdWppzg}B_K5tP@=A!$()7I{A zdLHYLgK^TVb8@W97W(I2`#(9(TCz+EON`o^B}oZ17WRL|hc}0dQ~w}PBrFuJf4gc{ zrVVrh9T_-xd~W5+yudkCFe$3J)C$a7Pt)t#<4<)!b(qUK!#=O3DB=wdw@XkL(cP^6 zysbP>>nO+ui)_IAT3_`CEvLgctHg?k6b9{k25AwbsR2;z9X58feLcd%U-DwRiS0|R|RLA+Qy<@b&^aE zPGOkp8hFml^8P^fGCmegk!G7$-3+#97)rxiEnxnd(wGSRm_~Un>A4~_tYBCXGPf(v zBLKrg{oS{7j|?$wh29hKa^?b!kB=B8WQYJfie#^CvF%nb@1YV;VnPt3cFCQ~Q2AST z43w|2Lb`3Ndq^jl;GxE4tk2*^YUm!af*I;bKSW`-LKjXjTGN?4I(4?us-5Rg#1zR{ zjIn9L9b_c4_MqIfU}7|Cwdx`*=goyx9OMc_ncA-u=U}9Kr7z}KRqFkfH8+!=_35%t zbH$2Opg>>OAY>?%&2HNWkDKWZgYSK^N$G(Yb_?}1`6IM@8 z6URD+k4H4L8u5jGPe-yltN1&gCQc&A5Z>A)ZzkBV7t5gBnHRUk;+aN(hmtV}UL5|%5=o{mO!Mf&{Gg`7Dn>jlqQdC)L2vi4K?|(6jwut~US5zUhBj#T z^{nJ0u6=~YH$S;M`bdplX67%42}%^VlQ!Revi^EWY14DV>Z{*%kf(p+;1DrWb3%1S5*b-r^Fj67lXeh|MYz8v*EDOu6@#2I7t z=V7Z4jJcTb)tN0~#nKT+dHGUF`a&<;XVpyTQnwWHO#^@ z_T|cIEOS{0?RBK}L`+cA!0f*LW#HX>wAeB~$Esp8^RS;a8&#QM^jYri_GJF+R>BdE za*p5!eVI}X#?pEKv9BOkflrh^Xui1ZV+DW%$q~Hv-AyC@#)KrarWbKFye?tLu7(_q zyMSE?MMqinaEn2w{I$E8C+V=1^q2i=29xbURVKsy=+mCO60s8AhL7Uqapu1$HS^E# zQV+1rzZ#%(*tCH|%%-Qg<}{-s_H^XA^Xn51nzA28z8`;(AZ3wso9(tz1?A`{<;<&5 z*x9lU`90_dJKHweupFaV)kJ>o9MZ1uhKxHnjA8b@ZKneKaRysd6)hLjl?vS}&CE=wJR7 zDfMT+eoO>_8|G6k3=4 z!Igmljc{Oq1>AEKU!g~|?6GY@R(i0~EPv21(q6+;vwo_2X zK6@NCBtYT4>=_ij5G}W|_eItlheIHY4kdWBg?Cp$Kt}Vd_}4tBB;SOwD^DyhL|sG; zVnU_Tt1-GDNYOk@&&w=P-36pck>v79Bx7&MxX~e`Mz|Y-+g^B5Z69gWAo1Ot73PVP zYz&ncj)>#Yqa4Fj5}r-k{!??xv=qTgGIKXStoVr_Q_qFxPp5+vc1+t6Yg)UHl5?C8 zXU=kiV4;+T;i)d@!p6jDCxJ4Ls|x<+nr}R#)1N1we*L)gAQ;pd!}lG*xVF{&D?Fo{ zdHB# zT*DR_Zqumu6-9Y2@Temo6q3;EW{60!h)=dTKe&tD);9)n-V`8zO!5>kZCPR64{m_C zzc&g`Tda1l6}8K=^hNt)Oddk;otB8S0I4+}QPKA`SB^xZN7Y!t#PVnija zf@m&l2jm9OV5 zevf7#3Lao;eHj#3VQAIZwJe-R(jjh48d@n2b=JsWP7)Ko9Krc!=l>crQdfELfD6a` zyVs+C(Q>b1MVyvU>U4?C2}-|aWk+W}iKo_5lKl29h|`D9qvOfc;CAo*W9sZpq8{5Cv8ip=8)WhD4U z)84z|t~OXHT8zmchw#Q*l-DwX7W!L8M}8UX5;#J%#gOXD^P7&j*p(~MnbW6# zmq@nfZUKcgXEXRW;M{5l4@UD7dh#e-%t8IFnwOtuT8j3g2?u+u;VraA3tC65gIno3 zfU5Njbyv2HOAlin6CdlJG`wGni0%wsvpRC*Yl;UmFFKn}MCYnY&3_s{G{`kdnSltF zpK<>_6s}fiyI8iU=i;mXfTcyQj+tqq%toN-_o|z-lC*bbcji!f-( zDI!QahT41FX~CgzFCt!AL~a+Qq!5CiP>4zpTSu>Bk3b#!q2B`G#)R!-=3$8IS>^!P zX(6b-f{~jG0q@M(YfOQ&nSD(&5p2^A`UJD!-C06}M@v5rJ20mrG$ldz_IG)hcA3gR z-wC5)RDe}WW~vLqDTW&Asbcz~5d`GP? zRp%{}fE<(Omp`%!qs`^+;ckK>uX+-ihqcbS3l(c$?_S177O~2-@bBa*(;K*(Wi!@Y z5{E6HkzM`^*WX$)4OO#GmLeO-SA#p6`CDPeQBcGtqeQ}gJgo@9-8>k zsmbe82-qomiG-N>7;(>zqR%<2EEtYU+@+Wx1 z#v>u`VnNVbQw~jVQpYds@S?1QlVXy|ehH*LrLpw6W_`J$Tek!D$NbHYlKz9V?}HhST8{vN&%cT>Bq6Ro7E$EgH4M?33bf3f(p}^5zP*Q4e#qfSf)JQ)|L`w zEb#iTTx3(|V@fk@UAK{xY(6UBYduZY%_E%(OFU4EALkFi*dNHKT&{29>d%3A*s~bp zVXLa9X`5q3$xVF>$2V-f40J>>Yfbu;@DR*fdWVoS;SRp!VPbnSNl-kkOQAIoKSq}2 ztH=1&q5jpGjc3NcX03MsdGd%?DgVG;oQmk|8J1OL65T%w!;h0o#OT4yqwlkg#Np6$ zRUa?1=!v8)vafI1s-${6q3}#05s8)miJd*NZ+^OmIUkwVZ3uAp)|@X&;+xXqPDaC=6H9% zCfk~$X8HE?*t}h7UP?o?1I4c&D1QKcBfLJh^q#L7s8A{OMEYOtPx4kkuQ}hTR@Iv~ zdn~folQ|Iv>F@BW->eB!QAQN|6ui z=*6&w|DZ-egZR|X2TDieGAQKA+E*L8&){S7tHjM2T8VXI(#yrGSkVr&nO^x@E5_6~ zqqyfOsn9!~0ynBQJ|xXw`ZvQLn5M+^jxDZ|yS{IU`KaTVioLw*7q{cE1)El5CY%a> z0{2Sz2u1b*+y%}_-@6Cld*?L&cT(5>KAf#xs}iFCnS;`$T2R~SnQ#SC7mmwy>HWUg z;)O>%ZUi$&^4qSjE88@l$krC5uG4W0J$T*r_dFsguN~WhnMOxJ6XHY0`Blsni5AUv zPc$Rkaot&>R)i`@ScQTXa!-r?OM8jB^mAQ(qJq;Uv;1n4A_Bhp_cDfFP9zKo5lR>s zpKvnk>(Hp`7(r4_Cu=ZwEPw^E{kg(M=K?`u={GqGYBDIlEG!kutu2s^7eC6F6^;fj z%zMg@t*@(l02SBZTgv>SoM&foBKfX8e4;ypW@uMk%>y8dm+Cs2w48#)LdklhkGIy$ z9b=UPp6B4isZ_OHc_~fGYvvw%;&p0t?dlI7*c4rR|E{q zzk0uFF}HkBpF6y2zn+x60I<*<<+A{6c*pcY!|zyM6q@c7051ZBhc_=&_<{F@x<3fL z(Ao#-7y9=>@rBAgsyx%$w8xKdNmu}QzfF2Eg9uqhiWq!JeJ21rQpg0bKL z+`tQ}|6+KE=d-|@_C@d$4j>48PydX;Ui4@XC3pZD)Gr*_|JqXEU|{(EZ;Kj?D6~lp zIz>J_fDf3)48^Y@s0aXFpf~Fac0vH~07KZISO~&Q{Es)t9|Qmi(3Jx!WCMTZK!M02 z0+<0I5NAYyDbSW1Y|8Z-yvlP zvOagmKo*ez%s_zf3y&s@0ue@r@{6L+JR|`bx>|e57krBh-7~WE3pPaoZ~}{DUvMW1 zfb?bW|GUqH?w$Kzvz5rbXfmKeBM7JXjKLI&XplAx02U-46}m?z6-XBop+*Ck z17$Uz+1HR-H0U(^I{z@Z=m0KYtnLc~F4aYY_@hG?TBrAqU_uWQ(guL~yFrKg`)2Tu zw9NqfAE_AzR7z(2vWyZ8fG`lo>}44wX6O(((*J~;6BDX5ZvLX=jS1if?peIxRZM^w zkk0DGK+FmcVuA&o_{8RgN47`3>zQ{)Ny&iVb}mkAgcQdzQKkb zvc2aE*2e+x03eV!9DoJT#uscF@)|;i3r#<|U?^sTgyBMS!!-noMIn#4(D_zEUv#wb zpfOa7c*bD+2rS4j9&}9P>x)YoeCU{L^fLyVL?c1I;zP$c;$Fs72mq*%6MSe055WHw z2m@&$U~GuUbBNF&^8^42;8rqJz!sl^2w@?F8tpw(J nfa--urUsA#XYasIcVrMrYUp%m_fX6U$)W~eAy7R$N8$eg(VAuh diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java b/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java index 021a1f384df..05a1fa11065 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java @@ -17,6 +17,7 @@ package org.jetbrains.k2js.translate.expression; import com.google.dart.compiler.backend.js.ast.*; +import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.JetNodeTypes; @@ -291,9 +292,21 @@ public final class ExpressionVisitor extends TranslatorVisitor { @Override @NotNull - public JsNode visitPrefixExpression(@NotNull JetPrefixExpression expression, - @NotNull TranslationContext context) { - return UnaryOperationTranslator.translate(expression, context); + public JsNode visitPrefixExpression( + @NotNull JetPrefixExpression expression, + @NotNull TranslationContext context + ) { + JetSimpleNameExpression operationReference = expression.getOperationReference(); + IElementType operationToken = operationReference.getReferencedNameElementType(); + if (JetTokens.LABELS.contains(operationToken)) { + JetExpression baseExpression = expression.getBaseExpression(); + assert baseExpression != null; + return source(new JsLabel(context.scope().declareName(getReferencedName(operationReference)), + convertToStatement(baseExpression.accept(this, context))), expression); + } + else { + return UnaryOperationTranslator.translate(expression, context); + } } @Override @@ -343,18 +356,35 @@ public final class ExpressionVisitor extends TranslatorVisitor { return TranslationUtils.sure(jsExpression, context); } + private static String getReferencedName(JetSimpleNameExpression expression) { + String name = expression.getReferencedName(); + return name.charAt(0) == '@' ? name.substring(1) + '$' : name; + } + + private static String getTargetLabel(JetLabelQualifiedExpression expression, TranslationContext context) { + JetSimpleNameExpression labelElement = expression.getTargetLabel(); + if (labelElement == null) { + return null; + } + else { + JsName name = context.scope().findName(getReferencedName(labelElement)); + assert name != null; + return name.getIdent(); + } + } + @Override @NotNull public JsNode visitBreakExpression(@NotNull JetBreakExpression expression, @NotNull TranslationContext context) { - return new JsBreak(); + return new JsBreak(getTargetLabel(expression, context)); } @Override @NotNull public JsNode visitContinueExpression(@NotNull JetContinueExpression expression, @NotNull TranslationContext context) { - return new JsContinue(); + return new JsContinue(getTargetLabel(expression, context)); } @Override diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/general/Translation.java b/js/js.translator/src/org/jetbrains/k2js/translate/general/Translation.java index f91b894306d..d32e2c90c21 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/general/Translation.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/general/Translation.java @@ -46,7 +46,6 @@ import org.jetbrains.k2js.translate.utils.dangerous.DangerousData; import org.jetbrains.k2js.translate.utils.dangerous.DangerousTranslator; import java.util.Collection; -import java.util.Collections; import java.util.List; import static org.jetbrains.jet.plugin.JetMainDetector.getMainFunction; @@ -175,23 +174,10 @@ public final class Translation { if (mainFunction == null) { return null; } - JsInvocation translatedCall = generateInvocation(context, mainFunction); - setArguments(context, arguments, translatedCall); - return translatedCall.makeStmt(); - } - - - @NotNull - private static JsInvocation generateInvocation(@NotNull TranslationContext context, @NotNull JetNamedFunction mainFunction) { FunctionDescriptor functionDescriptor = getFunctionDescriptor(context.bindingContext(), mainFunction); - JsExpression translatedCall = CallBuilder.build(context).descriptor(functionDescriptor).translate(); - assert translatedCall instanceof JsInvocation; - return (JsInvocation) translatedCall; - } - - private static void setArguments(@NotNull TranslationContext context, @NotNull List arguments, - @NotNull JsInvocation translatedCall) { - JsArrayLiteral arrayLiteral = new JsArrayLiteral(toStringLiteralList(arguments, context.program())); - JsAstUtils.setArguments(translatedCall, Collections.singletonList(arrayLiteral)); + return CallBuilder.build(context) + .args(new JsArrayLiteral(toStringLiteralList(arguments, context.program()))) + .descriptor(functionDescriptor) + .translate().makeStmt(); } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/operation/IncrementTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/operation/IncrementTranslator.java index 40acca0f0d7..68dd07727b0 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/operation/IncrementTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/operation/IncrementTranslator.java @@ -21,6 +21,7 @@ import com.google.dart.compiler.backend.js.ast.JsBinaryOperation; import com.google.dart.compiler.backend.js.ast.JsBinaryOperator; import com.google.dart.compiler.backend.js.ast.JsExpression; import com.google.dart.compiler.util.AstUtil; +import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.psi.JetExpression; import org.jetbrains.jet.lang.psi.JetUnaryExpression; @@ -41,8 +42,9 @@ import static org.jetbrains.k2js.translate.utils.TranslationUtils.hasCorrespondi // TODO: provide better increment translator logic public abstract class IncrementTranslator extends AbstractTranslator { - public static boolean isIncrement(@NotNull JetUnaryExpression expression) { - return OperatorConventions.INCREMENT_OPERATIONS.contains(getOperationToken(expression)); + public static boolean isIncrement(IElementType operationToken) { + //noinspection SuspiciousMethodCalls + return OperatorConventions.INCREMENT_OPERATIONS.contains(operationToken); } @NotNull diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/operation/UnaryOperationTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/operation/UnaryOperationTranslator.java index e4e2f86ac3f..31351538da0 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/operation/UnaryOperationTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/operation/UnaryOperationTranslator.java @@ -18,16 +18,14 @@ package org.jetbrains.k2js.translate.operation; import com.google.dart.compiler.backend.js.ast.JsBinaryOperation; import com.google.dart.compiler.backend.js.ast.JsExpression; +import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.psi.JetUnaryExpression; import org.jetbrains.jet.lexer.JetTokens; import org.jetbrains.k2js.translate.context.TranslationContext; import org.jetbrains.k2js.translate.reference.CallBuilder; -import org.jetbrains.k2js.translate.reference.CallType; import org.jetbrains.k2js.translate.utils.TranslationUtils; -import java.util.Collections; - import static org.jetbrains.k2js.translate.general.Translation.translateAsExpression; import static org.jetbrains.k2js.translate.utils.BindingUtils.getResolvedCall; import static org.jetbrains.k2js.translate.utils.PsiUtils.getBaseExpression; @@ -41,12 +39,15 @@ public final class UnaryOperationTranslator { } @NotNull - public static JsExpression translate(@NotNull JetUnaryExpression expression, - @NotNull TranslationContext context) { - if (isExclExcl(expression)) { - return translateExclExclOperator(expression, context); + public static JsExpression translate( + @NotNull JetUnaryExpression expression, + @NotNull TranslationContext context + ) { + IElementType operationToken = expression.getOperationReference().getReferencedNameElementType(); + if (operationToken == JetTokens.EXCLEXCL) { + return sure(translateAsExpression(getBaseExpression(expression), context), context); } - if (IncrementTranslator.isIncrement(expression)) { + if (IncrementTranslator.isIncrement(operationToken)) { return IncrementTranslator.translate(expression, context); } @@ -54,16 +55,11 @@ public final class UnaryOperationTranslator { if (isExclForBinaryEqualLikeExpr(expression, baseExpression)) { return translateExclForBinaryEqualLikeExpr((JsBinaryOperation) baseExpression); } - return translateAsCall(expression, context, baseExpression); - } - private static boolean isExclExcl(@NotNull JetUnaryExpression expression) { - return getOperationToken(expression).equals(JetTokens.EXCLEXCL); - } - - @NotNull - private static JsExpression translateExclExclOperator(@NotNull JetUnaryExpression expression, @NotNull TranslationContext context) { - return sure(translateAsExpression(getBaseExpression(expression), context), context); + return CallBuilder.build(context) + .receiver(TranslationUtils.translateBaseExpression(context, expression)) + .resolvedCall(getResolvedCall(context.bindingContext(), expression.getOperationReference())) + .translate(); } private static boolean isExclForBinaryEqualLikeExpr(@NotNull JetUnaryExpression expression, @NotNull JsExpression baseExpression) { @@ -74,15 +70,4 @@ public final class UnaryOperationTranslator { } return false; } - - @NotNull - private static JsExpression translateAsCall(@NotNull JetUnaryExpression expression, - @NotNull TranslationContext context, - @NotNull JsExpression baseExpression) { - return CallBuilder.build(context) - .receiver(baseExpression) - .args(Collections.emptyList()) - .resolvedCall(getResolvedCall(context.bindingContext(), expression.getOperationReference())) - .type(CallType.NORMAL).translate(); - } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallBuilder.java b/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallBuilder.java index b4637fd3f40..2a4e3cabbab 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallBuilder.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallBuilder.java @@ -16,7 +16,6 @@ package org.jetbrains.k2js.translate.reference; -import com.google.common.collect.Lists; import com.google.dart.compiler.backend.js.ast.JsExpression; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -34,6 +33,7 @@ import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.k2js.translate.context.TranslationContext; import java.util.Arrays; +import java.util.Collections; import java.util.List; public final class CallBuilder { @@ -47,7 +47,7 @@ public final class CallBuilder { @Nullable private /*var*/ JsExpression receiver = null; @NotNull - private final List args = Lists.newArrayList(); + private List args = Collections.emptyList(); @NotNull private /*var*/ CallType callType = CallType.NORMAL; @Nullable @@ -70,8 +70,8 @@ public final class CallBuilder { @NotNull public CallBuilder args(@NotNull List args) { - assert this.args.isEmpty(); - this.args.addAll(args); + assert this.args == Collections.EMPTY_LIST; + this.args = args; return this; } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/utils/JsAstUtils.java b/js/js.translator/src/org/jetbrains/k2js/translate/utils/JsAstUtils.java index 61e24c1032b..45a9d25419c 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/utils/JsAstUtils.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/utils/JsAstUtils.java @@ -165,12 +165,6 @@ public final class JsAstUtils { return new JsVars(new JsVars.JsVar(name, expr)); } - public static void setArguments(@NotNull JsInvocation invocation, @NotNull List newArgs) { - List arguments = invocation.getArguments(); - assert arguments.isEmpty() : "Arguments already set."; - arguments.addAll(newArgs); - } - public static void setArguments(@NotNull HasArguments invocation, @NotNull List newArgs) { List arguments = invocation.getArguments(); assert arguments.isEmpty() : "Arguments already set."; diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java b/js/js.translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java index dbd0f441ee9..9346339e2fb 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java @@ -16,7 +16,6 @@ package org.jetbrains.k2js.translate.utils; -import com.intellij.psi.PsiElement; import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -121,14 +120,6 @@ public final class PsiUtils { return Collections.emptyList(); } - @NotNull - public static JetObjectDeclaration getObjectDeclarationForName(@NotNull JetObjectDeclarationName name) { - PsiElement parent = name.getParent(); - assert parent instanceof JetObjectDeclaration : - "ObjectDeclarationName should have a parent of type ObjectDeclaration."; - return (JetObjectDeclaration) parent; - } - @NotNull public static JetObjectDeclarationName getObjectDeclarationName(@NotNull JetObjectDeclaration objectDeclaration) { //TODO: util diff --git a/js/js.translator/testFiles/expression/for/cases/labeledFor.kt b/js/js.translator/testFiles/expression/for/cases/labeledFor.kt new file mode 100644 index 00000000000..1d08104a680 --- /dev/null +++ b/js/js.translator/testFiles/expression/for/cases/labeledFor.kt @@ -0,0 +1,14 @@ +package foo + +val a1 = arrayOfNulls(0) + +fun box(): Boolean { + var bar = 33 + @outer for (a in array(1, 2)) { + for (b in array(1, 4)) { + break @outer + } + bar = 42 + } + return bar == 33; +} \ No newline at end of file