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 34a9112f0e3..26a3ff89106 100644 Binary files a/out/production/frontend/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider$7.class and b/out/production/frontend/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider$7.class differ diff --git a/out/production/frontend/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider$InitializationPoints.class b/out/production/frontend/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider$InitializationPoints.class index 501bfcfb86c..0a0d5be3f3f 100644 Binary files a/out/production/frontend/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider$InitializationPoints.class and b/out/production/frontend/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider$InitializationPoints.class differ 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 ed724665639..f2fb6ff0007 100644 Binary files a/out/production/frontend/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.class and b/out/production/frontend/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.class differ 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 5ccdcfef8fc..4dbaf9f2c24 100644 Binary files a/out/production/k2js/com/google/dart/compiler/backend/js/ast/JsObjectLiteral.class and b/out/production/k2js/com/google/dart/compiler/backend/js/ast/JsObjectLiteral.class differ diff --git a/out/production/k2js/org/jetbrains/k2js/translate/AbstractTranslator.class b/out/production/k2js/org/jetbrains/k2js/translate/AbstractTranslator.class index 33084bf5ad4..3f86cfd3798 100644 Binary files a/out/production/k2js/org/jetbrains/k2js/translate/AbstractTranslator.class and b/out/production/k2js/org/jetbrains/k2js/translate/AbstractTranslator.class differ 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 e3be5d547b2..149152d0eea 100644 Binary files a/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator$FunctionVariableDeclaration.class and b/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator$FunctionVariableDeclaration.class differ 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 af07015463a..3f5f71dea97 100644 Binary files a/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator$NamespacePropertyDeclaration.class and b/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator$NamespacePropertyDeclaration.class differ 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 cb07e026820..3bd12cb1a98 100644 Binary files a/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator$State.class and b/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator$State.class differ diff --git a/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator.class b/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator.class index 8c220809ec2..6898b26059a 100644 Binary files a/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator.class and b/out/production/k2js/org/jetbrains/k2js/translate/DeclarationTranslator.class differ diff --git a/out/production/k2js/org/jetbrains/k2js/translate/TranslationContext.class b/out/production/k2js/org/jetbrains/k2js/translate/TranslationContext.class index 00e82e41d54..4d58e36836a 100644 Binary files a/out/production/k2js/org/jetbrains/k2js/translate/TranslationContext.class and b/out/production/k2js/org/jetbrains/k2js/translate/TranslationContext.class differ diff --git a/src/com/google/dart/compiler/backend/js/ast/JsInvocation.java b/src/com/google/dart/compiler/backend/js/ast/JsInvocation.java index beb10a1eeed..6704234df29 100644 --- a/src/com/google/dart/compiler/backend/js/ast/JsInvocation.java +++ b/src/com/google/dart/compiler/backend/js/ast/JsInvocation.java @@ -12,51 +12,51 @@ import java.util.List; */ public final class JsInvocation extends JsExpression implements HasArguments { - private final List 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() { + + } }