diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index c6fbc6658eb..c0b596e7774 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -8,31 +8,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -186,15 +164,6 @@
-
-
-
-
-
-
-
-
-
@@ -204,19 +173,10 @@
-
-
-
-
-
-
-
-
-
-
+
@@ -225,19 +185,39 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -300,7 +280,6 @@
@@ -451,6 +431,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -916,7 +936,7 @@
-
+
@@ -924,17 +944,17 @@
-
+
-
+
-
+
@@ -978,7 +998,7 @@
-
+
@@ -1005,7 +1025,6 @@
-
@@ -1016,6 +1035,7 @@
+
@@ -1025,13 +1045,6 @@
-
-
-
-
-
-
-
@@ -1039,13 +1052,6 @@
-
-
-
-
-
-
-
@@ -1071,15 +1077,19 @@
-
-
+
+
+
+
-
-
+
+
+
+
@@ -1118,16 +1128,9 @@
-
-
-
-
-
-
-
-
+
@@ -1135,9 +1138,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
diff --git a/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java b/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java
index 1e7f8e38de0..91fe16ca692 100644
--- a/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java
@@ -9,7 +9,9 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.ClassKind;
+import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
import org.jetbrains.jet.lang.psi.JetClass;
+import org.jetbrains.jet.lang.psi.JetParameter;
import org.jetbrains.k2js.translate.*;
import java.util.ArrayList;
@@ -114,13 +116,21 @@ public final class ClassTranslator extends AbstractTranslator {
if (!classDeclaration.isTrait()) {
propertyList.add(Translation.generateClassInitializerMethod(classDeclaration, context()));
}
- // propertyList.addAll(translatePropertiesAsConstructorParameters());
+ propertyList.addAll(translatePropertiesAsConstructorParameters());
propertyList.addAll(declarationBodyVisitor.traverseClass(classDeclaration, context()));
return new JsObjectLiteral(propertyList);
}
-//
-// @NotNull
-// private List translatePropertiesAsConstructorParameters() {
-// List
-// }
+
+ @NotNull
+ private List translatePropertiesAsConstructorParameters() {
+ List result = new ArrayList();
+ for (JetParameter parameter : classDeclaration.getPrimaryConstructorParameters()) {
+ PropertyDescriptor descriptor =
+ BindingUtils.getPropertyDescriptorForConstructorParameter(context().bindingContext(), parameter);
+ if (descriptor != null) {
+ result.addAll(PropertyTranslator.translateAccessors(descriptor, context()));
+ }
+ }
+ return result;
+ }
}
diff --git a/translator/testFiles/class/cases/constructorWithPropertiesAsParameters.kt b/translator/testFiles/class/cases/constructorWithPropertiesAsParameters.kt
index 0a749b07e8c..f6c9c831b6b 100644
--- a/translator/testFiles/class/cases/constructorWithPropertiesAsParameters.kt
+++ b/translator/testFiles/class/cases/constructorWithPropertiesAsParameters.kt
@@ -6,5 +6,7 @@ class A(var b : Int, var a : String) {
fun box() : Boolean {
val c = A(1, "1")
- return (c.b == 1 && c.a == "1")
+ c.b = 2
+ c.a = "2"
+ return (c.b == 2 && c.a == "2")
}
\ No newline at end of file