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 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -95,31 +82,22 @@
-
+
-
-
+
+
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
+
@@ -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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -440,6 +459,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -646,7 +729,7 @@
-
+
@@ -706,122 +789,124 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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() {
+
+ }
}