From 26b8424d3713c8d31521f283cd5fa342883493df Mon Sep 17 00:00:00 2001 From: Pavel Talanov Date: Wed, 2 Nov 2011 19:34:55 +0400 Subject: [PATCH] Added custom getter, setter, class support. Not complete. --- .idea/workspace.xml | 409 +++++++++++------- .../cfg/JetFlowInformationProvider$7.class | Bin 3184 -> 3202 bytes ...rmationProvider$InitializationPoints.class | Bin 2484 -> 2484 bytes .../lang/cfg/JetFlowInformationProvider.class | Bin 16682 -> 16682 bytes .../backend/js/ast/JsObjectLiteral.class | Bin 2600 -> 3084 bytes .../k2js/translate/AbstractTranslator.class | Bin 3094 -> 2950 bytes ...anslator$FunctionVariableDeclaration.class | Bin 2317 -> 2317 bytes ...nslator$NamespacePropertyDeclaration.class | Bin 2841 -> 2841 bytes .../DeclarationTranslator$State.class | Bin 724 -> 724 bytes .../translate/DeclarationTranslator.class | Bin 4401 -> 4677 bytes .../k2js/translate/TranslationContext.class | Bin 6632 -> 7385 bytes .../compiler/backend/js/ast/JsInvocation.java | 88 ++-- .../backend/js/ast/JsObjectLiteral.java | 92 ++-- src/org/jetbrains/k2js/K2JSTranslator.java | 2 +- .../k2js/translate/AbstractTranslator.java | 3 +- .../k2js/translate/DeclarationTranslator.java | 5 +- .../k2js/translate/ExpressionTranslator.java | 2 +- .../k2js/translate/TranslationContext.java | 14 + test_files/test.kt | 19 +- 19 files changed, 371 insertions(+), 263 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 0209336b803..c6775eaba8f 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -29,20 +29,7 @@ - - - + - + - - + + - + - - + + - - - - - - - - - - + @@ -127,64 +105,77 @@ - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - - + + + + - - + + - + + + + + + + + + + + + @@ -194,11 +185,14 @@ - + - - + + + + + @@ -217,7 +211,7 @@ - + @@ -235,21 +229,32 @@ - + - + - + + + + + + + + + + + + @@ -262,7 +267,7 @@ - + @@ -294,22 +299,22 @@ @@ -386,6 +391,20 @@ - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/out/production/frontend/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider$7.class b/out/production/frontend/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider$7.class index 34a9112f0e396644e9706d54c11eaeace3f76803..26a3ff89106cc035e4c0a79fc91e5ee22d97afea 100644 GIT binary patch delta 300 zcmYL^%Sr-a6o9`o&NPf+v=GrnQ(>6R_^Vwu8f^kWhA^c~S7_0D1ipf=&;y8tB(!KH zJ&cPUK*2L(m(Ah)=k|U7cfMa3&b-|hQrN&*@P@o&k8r{XYbic)J7!90;H9h2IUJA< zS-B)HU5xZNl`FP&Gg$4jLs4IPi4yxrl9f5YBC9bVR8mE&9@ZS=Vlp~ZrKWL9%U{}7 z2vImD6O+&XjW*4%QqwNjQ_6#nbp6T4RjF$nxxtfLe7U12_cY{zwmc?sCwkLYc#My~ e8U1NS)HzHvBUYLYEsi+;(cHjV(0ILA-;*WpKPG1Y delta 279 zcmYL^%}N3R5XXO`?wT8R2oEY~LZ+?T`qe^o2m;ybrk6|+=}m%OVUN9pR7jre)WK)* z&;ukmyGmZ>`#8=uG*sdo%#ftlo+bP#5(=F4f+mw=o+U`wAH z8E~eG#!g3tbIo)EHR?zlU1F0U$AwNgdf`f|N5~&`8dqnUwA7Zgy40?r-go9?1NVo! z1Be@egiFf|S62JEh^ZWp7&0UyPn2bZCu4dtiFrKTQ{G>UKJx#`eA;wkGM^op!988B P_hcs|Hh3S?!Hltz!G*Dk!JV;sas>O-$wnL^lNmV-8Ji{>bJR(;Gq5vu0M&Ofh%)vt hC^7ajI5YM!xH3+he2Sx;a~e=|I)ggnjLA`)Q2-qO9$f$c delta 143 zcmdlYyhV6}F&l3h0}Ep^12NS#;VEh*j*;SWfz(3#*r=A%)rjr0#x6|Aj;Um hpv2h8;LO;?;L6xL`4mSx=Om!$WCnG{DU+i(qX1X@AD#dJ diff --git a/out/production/frontend/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.class b/out/production/frontend/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.class index ed724665639ea2d889131019146d58b581519201..f2fb6ff00071a12eddbc0e9c66dcaeef0c8c6987 100644 GIT binary patch delta 16 XcmZ40#JH-7al>YN#^lXg?8_JdI+g~0 delta 16 XcmZ40#JH-7al>YN#`w)!?8_JdI(`Ov diff --git a/out/production/k2js/com/google/dart/compiler/backend/js/ast/JsObjectLiteral.class b/out/production/k2js/com/google/dart/compiler/backend/js/ast/JsObjectLiteral.class index 5ccdcfef8fc7565d43f6d72ce3ba48844b007566..4dbaf9f2c2492be11d7a81e90210b81adb3c47c7 100644 GIT binary patch literal 3084 zcmcguT~ixX7=BK&VM($Oz62^&p<;yuNh{QfP`*K-A+!xrTR)d%fu&29+1)V3TQB_u z^bho=7qu##+8OoE8Gnbr!f~w6*=+c}AnlAdXU}=}{dnGw=j{IZ?=Qas7{GcA%@|iP z5km;$Q8Z#wE>kL|W2nJ+95a}W<70dxmpK*lF~o5_h71BF`Ol-EYOs(^SZUHJElAbLd9D*nb1%b z2p3m2jJ%gIJ;Tv0iLB>Xy2BDi>(OXCTa}1)IgdFn=vzJlmRAMUmySDm^_oc(ZEJ>i zN=2D*Q%~=4*aEo|!dHhOP`|FbIkRBQtgf@1N3~MKAd)bm@amJ5GeNnCF z=-Y-PeV9E}z+N_8Q^KjjWXdjj#(mEpC9y3qP=#$J91ETI?pJ49i7TLTbgr94l5CJu zaaICnNj_=Cw$zT~t$>-aoLzGA#w;n%PR+YVDAX_S5)H4TgRMBYS0)@s-;tM#h8Dc0 zp&jQ0+Wq&IUR+C0RIY;=$FUufNW*8i!;WjXiA9DFXP#Jxe-@l+ZcD##@ z(7K|+7O7-rmSaXT7X3#{Mbj^F88h{&Kp6}lzZKhZ>ILj-m~x~_FU1#LEUkJzZ)|zD zO>cd!D8CuEj7@u+?W*OM#>e-+qvBP3>8zcuP>5f)#mV`ZsU?B;Uxt5)1FlS2{CKi3 z1;aHRqp(jMeu})3i_82sXy%VY2u+e}pr(InYiO6W<33Iq3Ci_6Pm>692Q(y~LL{Ff zbmu9;KSTM!w|awXJvBhD3Oy$1`%Rv-vJKusCr{E}7b8l4-|-pZ^St!;1d#_wr2ats zIcn%w{Vkaad@GQ?o9GopsSsr=+K8&%_upFf5%{OKAeRf&F2|OVHb#D%k_5yHnuk<$ zt9XZka>^I^`d#z{z|uU)L?g+cpgiU#RTYNVu- zXQ&m(q@E!vu#0ot!~}jve4%d-+Abo>qlYj43O}NH*bmi;2=|@bccB{>aFJ^-@yddB z`Z`hc;XMM25kfyCVulLf$V4@S|3OT}rH;R;MK13H>*Gmkhx~YlQ%fF7Efo0T6rQwH zB+|o{=~FES&R{uss^#EG%M)maPPM#(515^7z&+MUHlRI~WR>f75%*iMhk9R-kYih} zc6qc$5ycpXcY?z*>HC(IrhQNexx0!F{o1u-2p_QmveG0)BZb2l2?F=?DGRJTLBsLs znLPwr2^`nr+CImw_?DdZW;E`h=>b&bA(Zfsh#au2Jco6D@CZV6<1*YR1BNj6A6-Q7 AoB#j- delta 976 zcmZuvO-~b16g~6RX{Q5)emPJ}L2IQgwrUZ9q9A^vEq;KwG^6RFLW05S!o<|QZpf_q z3v|Ik#E{^^u=aPjcImIYmQ6gwinFdwJKNesGWg7XW#?bks%!a$T4lqot#3%^Jv=N`U(|N| zo`@6}*FP`22vKu|@YF%I&|7?PAxPx0n7?-n|T*%aqg!x$l} z!P65sNj7q|^dz}9q5OfN<5cW7yCkIA%Eq`8-Lgw4yM)czk{z?jZ68h}Q71qQ)rP7< zYbP|_6*_v9^awK76)A>2 zYFmKLmOum78Ea2Pz%$}(TX;k+~SF3iyH6AO^ybUJ4-ZZ z{z}8Hl+y_aMbA+g%cD2*7yc_WWCHycXudfmmkx!Y_ElJ+RCO9ac9423_8M`BX@MUl zM7qcVahiItXQhaFjJyDUy#;3Ii7duSF!U7ukNN$A`SUqUM-hXWHxv`I_H|nr o0lj3^3q6{EmdDaD1U~`S&rp^lqxNbzep}Cg=1VflS+(89Kkjy4-v9sr delta 919 zcma)4O-~b16g{t;Cg5Jm_XHip%A!{Kiw(MO-ow!63s*R95x4+~j&Xvyy+Fw^#FP zMLS!5`e>~icpZp*+dJobYq zG)Lbaj3oLM2F`{}MWZN=xbSJv4M4f2X;# zLvwe3H0PSjkd9MrEXFvp?inZ{lkP5bG(k@d&Kn5rEi~_Y1gezu>=MWC;&FJa5k@^Z HH_d+o*tUch diff --git a/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator$FunctionVariableDeclaration.class b/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator$FunctionVariableDeclaration.class index e3be5d547b23eceeb9b87c62e05e190a06ec7d4c..149152d0eea38b01458bc73f7f570cb9c3a8bf57 100644 GIT binary patch delta 31 mcmeAb>J{3c!olb~S(T%Q*NuUd!JUDR!Gl49!E^FH4u1e}od&4@ delta 31 mcmeAb>J{3c!olb?S(T%Q*Oh^l!Ht2B!JR>Z!DI414u1e}S_Y&5 diff --git a/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator$NamespacePropertyDeclaration.class b/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator$NamespacePropertyDeclaration.class index af07015463aa09fe079a4c8622962e4eab691bf5..3f5f71dea97b8507c1e55459d5f32a2d25d62ab3 100644 GIT binary patch delta 43 zcmbO!HdAcFcTPsX$v-&vNCq;nG6XS5Fa$FwF@!RxGlVf1F+?($GDJ^4%jE+A3UUgc delta 43 zcmbO!HdAcFcTPs%$v-&vNCq&lG6XV6Fa$9uF@!LvGlVi2F+?z!GDJ;2%jE+A3D^pk diff --git a/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator$State.class b/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator$State.class index cb07e026820c7326cfb47925893d06cf53d8add7..3bd12cb1a9897ed1089d804166982069bf65e49e 100644 GIT binary patch delta 13 Ucmcb@dWChvd?rTw$qSfF03|jAtpET3 delta 13 Ucmcb@dWChvd?rS_$qSfF03|U5tN;K2 diff --git a/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator.class b/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator.class index 8c220809ec2eb15d75dff7ab82ae5fa88a2a55a2..6898b26059aea4d95d909249de3ec6014f15b6ed 100644 GIT binary patch delta 990 zcmZ9L%TE(g7{$+ROQ)Totw7R7gwpVomWLo<6r&4+iH}wVEL2e(u^>E@=AqfW=s`#A7?i9D}qiP^DsD^{15)R97BaguxPMiMZ z3WhFTt8-)}Z@5FMo;PGGM{rbBA7iKxd)Io@A%AFC?eR-!W5^#+$JN?FHPBbvIu;1` z5BXardi=xT{$N1DaRwV-H`wwdbTDYQR(i9M1D}jeoZu^l0@lU98=4KL(JibqyvSI? z&T@~jwBj86GJ4P}d>XuHWU%yXJO)DzpVbsuHoDC`Y7Dag|78rZk=H}AnJE`BA;X1B z40V)7A%Ce@bys9e@^?y5xrzu)agCvY|BxHB5^nH7_A^Cj~Z(=0hZp@Wt*%D*2Wcxz7{G-jK{P`U z#UO?R0aca5NMivc6vB=ol<_HxRJNa3TZyw973ifnIMtY;Z<7!_Ko=ZEdMxl4mb{4I z?;w70Mw@dP#Y8jg`vg-0b-vuuIGR=#=}`(P6@@JWVk3}H8bnVDY)iJHxmUDVAV>I> zq#97ZG>V2Zw4aXD!6I(zciB_D25SP7>DZ>KW4OMGX?NAX*3Q&|OlwEFwT4a|#ZB5+ z!e-pUZQ5GoVnr5>jpR4clO0g7lPY&7@f5Ii*dDf*=Zox?bz;xx|cj~r6yq8T+O#_5NeHBJb$ zQ$h99npvTF^LNuUGAbgNp^PPNoK=yfH}!G;P=q=cU(BBOj4mhM|I#Rzbg3#&Ku5 zgrP_Y=lCdLq>RyZt}tMUqieGoZ3yxo^I#0;AyDMp2brUn<2KIy*nt4L8QFuK=tCHf z`PBw#K*oh0{t(D35}xp-!~`Ke1)_+tfNpfKX4D;CMJt=RsC|aDf)34jsf_sgTZS|` za@QTX+0kUpkxmTkt}1h$)>Rt>^Q^@)t0@+l(8%zBNV4A5-qv{_$7|K8T%NTsQNQQ{Dx1) zoQ(T*lUINi6AF01jp$Q3z_t4Nq;RB+dEH4rj H%jy0L<4T4w diff --git a/out/production/k2js/org/jetbrains/k2js/translate/TranslationContext.class b/out/production/k2js/org/jetbrains/k2js/translate/TranslationContext.class index 00e82e41d54ffe18ac9cd2f2526af6932d0c4069..4d58e36836ad3451d1a66a4f91f77bbd9be5dc6b 100644 GIT binary patch literal 7385 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 args = new ArrayList(); - private JsExpression qualifier; + private final List args = new ArrayList(); + private JsExpression qualifier; - public JsInvocation() { - } - - @Override - public List getArguments() { - return args; - } - - public JsExpression getQualifier() { - return qualifier; - } - - @Override - public boolean hasSideEffects() { - return true; - } - - @Override - public boolean isDefinitelyNotNull() { - return false; - } - - @Override - public boolean isDefinitelyNull() { - return false; - } - - public void setQualifier(JsExpression qualifier) { - this.qualifier = qualifier; - } - - @Override - public void traverse(JsVisitor v, JsContext ctx) { - if (v.visit(this, ctx)) { - qualifier = v.accept(qualifier); - v.acceptList(args); + public JsInvocation() { } - v.endVisit(this, ctx); - } - @Override - public NodeKind getKind() { - return NodeKind.INVOKE; - } + @Override + public List getArguments() { + return args; + } + + public JsExpression getQualifier() { + return qualifier; + } + + @Override + public boolean hasSideEffects() { + return true; + } + + @Override + public boolean isDefinitelyNotNull() { + return false; + } + + @Override + public boolean isDefinitelyNull() { + return false; + } + + public void setQualifier(JsExpression qualifier) { + this.qualifier = qualifier; + } + + @Override + public void traverse(JsVisitor v, JsContext ctx) { + if (v.visit(this, ctx)) { + qualifier = v.accept(qualifier); + v.acceptList(args); + } + v.endVisit(this, ctx); + } + + @Override + public NodeKind getKind() { + return NodeKind.INVOKE; + } } diff --git a/src/com/google/dart/compiler/backend/js/ast/JsObjectLiteral.java b/src/com/google/dart/compiler/backend/js/ast/JsObjectLiteral.java index 4f70265624b..749ed473c21 100644 --- a/src/com/google/dart/compiler/backend/js/ast/JsObjectLiteral.java +++ b/src/com/google/dart/compiler/backend/js/ast/JsObjectLiteral.java @@ -12,55 +12,61 @@ import java.util.List; */ public final class JsObjectLiteral extends JsLiteral { - private final List props = new ArrayList(); + private final List props; - public JsObjectLiteral() { - } + public JsObjectLiteral() { + props = new ArrayList(); + } - public List getPropertyInitializers() { - return props; - } + public JsObjectLiteral(List props) { + assert props != null; + this.props = props; + } - @Override - public boolean hasSideEffects() { - for (JsPropertyInitializer prop : props) { - if (prop.hasSideEffects()) { + public List getPropertyInitializers() { + return props; + } + + @Override + public boolean hasSideEffects() { + for (JsPropertyInitializer prop : props) { + if (prop.hasSideEffects()) { + return true; + } + } + return false; + } + + @Override + public boolean isBooleanFalse() { + return false; + } + + @Override + public boolean isBooleanTrue() { return true; - } } - return false; - } - @Override - public boolean isBooleanFalse() { - return false; - } - - @Override - public boolean isBooleanTrue() { - return true; - } - - @Override - public boolean isDefinitelyNotNull() { - return true; - } - - @Override - public boolean isDefinitelyNull() { - return false; - } - - @Override - public void traverse(JsVisitor v, JsContext ctx) { - if (v.visit(this, ctx)) { - v.acceptWithInsertRemove(props); + @Override + public boolean isDefinitelyNotNull() { + return true; } - v.endVisit(this, ctx); - } - @Override - public NodeKind getKind() { - return NodeKind.OBJECT; - } + @Override + public boolean isDefinitelyNull() { + return false; + } + + @Override + public void traverse(JsVisitor v, JsContext ctx) { + if (v.visit(this, ctx)) { + v.acceptWithInsertRemove(props); + } + v.endVisit(this, ctx); + } + + @Override + public NodeKind getKind() { + return NodeKind.OBJECT; + } } diff --git a/src/org/jetbrains/k2js/K2JSTranslator.java b/src/org/jetbrains/k2js/K2JSTranslator.java index 16d79c01347..ba42ccc61cc 100644 --- a/src/org/jetbrains/k2js/K2JSTranslator.java +++ b/src/org/jetbrains/k2js/K2JSTranslator.java @@ -45,7 +45,7 @@ public class K2JSTranslator { public static void main(String[] args) { System.setProperty("java.awt.headless", "true"); Arguments arguments = new Arguments(); - arguments.src = "C:\\Dev\\Projects\\k2js\\test_files\\test.kt"; + arguments.src = "C:\\Dev\\Projects\\jet-contrib\\k2js\\test_files\\test.kt"; Disposable root = new Disposable() { @Override diff --git a/src/org/jetbrains/k2js/translate/AbstractTranslator.java b/src/org/jetbrains/k2js/translate/AbstractTranslator.java index 366fa993276..602fbd5bbc5 100644 --- a/src/org/jetbrains/k2js/translate/AbstractTranslator.java +++ b/src/org/jetbrains/k2js/translate/AbstractTranslator.java @@ -36,8 +36,7 @@ public abstract class AbstractTranslator { @NotNull protected JsName getJSName(String jetName) { - //TODO dummy implemetation - return new JsName(program().getScope(), jetName, jetName, jetName); + return context.getJSName(jetName); } @NotNull diff --git a/src/org/jetbrains/k2js/translate/DeclarationTranslator.java b/src/org/jetbrains/k2js/translate/DeclarationTranslator.java index 18d87820c5b..32cfb417e87 100644 --- a/src/org/jetbrains/k2js/translate/DeclarationTranslator.java +++ b/src/org/jetbrains/k2js/translate/DeclarationTranslator.java @@ -32,8 +32,9 @@ public class DeclarationTranslator extends AbstractTranslator { return AstUtil.convertToStatement((new FunctionTranslator(translationContext())) .translateFunction((JetNamedFunction) declaration)); } - else if (declaration instanceof JetClassOrObject) { - //classCodegen.translate(context, (JetClassOrObject) declaration); + else if (declaration instanceof JetClass) { + ClassTranslator classTranslator = new ClassTranslator(translationContext()); + return classTranslator.translateClass((JetClass)declaration); } else if (declaration instanceof JetNamespace) { // JetNamespace childNamespace = (JetNamespace) declaration; diff --git a/src/org/jetbrains/k2js/translate/ExpressionTranslator.java b/src/org/jetbrains/k2js/translate/ExpressionTranslator.java index 36f3b93d324..5e25f40885c 100644 --- a/src/org/jetbrains/k2js/translate/ExpressionTranslator.java +++ b/src/org/jetbrains/k2js/translate/ExpressionTranslator.java @@ -12,7 +12,7 @@ import org.jetbrains.jet.lexer.JetToken; import java.util.List; /** - * Talanov Pavel + * @author Talanov Pavel */ class ExpressionTranslator extends AbstractTranslator { diff --git a/src/org/jetbrains/k2js/translate/TranslationContext.java b/src/org/jetbrains/k2js/translate/TranslationContext.java index 1fbedc7be75..772c83b64d5 100644 --- a/src/org/jetbrains/k2js/translate/TranslationContext.java +++ b/src/org/jetbrains/k2js/translate/TranslationContext.java @@ -17,6 +17,8 @@ public class TranslationContext { private final BindingContext context; private final JsScope enclosingScope; private final ContextType type; + private final JsNameRef classObjectReference; + private final JsNameRef classCreationMethodReference; private TranslationContext(JsNameRef namespace, JsBlock block, JsProgram program, @@ -32,6 +34,8 @@ public class TranslationContext { this.context = bindingContext; this.enclosingScope = enclosingScope; this.type = type; + this.classObjectReference = new JsNameRef(getJSName("Class")); + this.classCreationMethodReference = AstUtil.newQualifiedNameRef("Class.create"); } @NotNull @@ -84,6 +88,11 @@ public class TranslationContext { return context; } + @NotNull + public JsNameRef classObjectReference() { + return classObjectReference; + } + @NotNull public JsProgram program() { return program; @@ -104,5 +113,10 @@ public class TranslationContext { return type; } + @NotNull + JsNameRef classCreationMethodReference() { + return classCreationMethodReference; + } + } diff --git a/test_files/test.kt b/test_files/test.kt index 94629a58670..c569674a36c 100644 --- a/test_files/test.kt +++ b/test_files/test.kt @@ -5,15 +5,18 @@ val b : Int = 235456 var c : Int = 1324 var myFavouriteName : Int = 1245 -fun main() : Int { - return 5 + +open class B() { + } -fun eval(x : Int, y : String) : Int { - return (1456 - 34) * 5 -} +class A() : B() { + var a : Int + get() : Int { + return 4 + } -fun olol(abab : Int) : Int { - var a : Int = 5 - return a + set() { + + } }