diff --git a/js/js.tests/test/org/jetbrains/k2js/test/semantics/ClassInheritanceTest.java b/js/js.tests/test/org/jetbrains/k2js/test/semantics/ClassInheritanceTest.java index 644778294c3..c76656841c7 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/semantics/ClassInheritanceTest.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/semantics/ClassInheritanceTest.java @@ -32,6 +32,10 @@ public final class ClassInheritanceTest extends SingleFileTranslationTest { fooBoxTest(); } + public void testValOverride() throws Exception { + fooBoxTest(); + } + public void testInitializationOrder() throws Exception { fooBoxTest(); } 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 cf61dab9d69..b5c8ef3dc29 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 @@ -22,6 +22,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; +import org.jetbrains.jet.lang.descriptors.Modality; import org.jetbrains.jet.lang.descriptors.PropertyDescriptor; import org.jetbrains.k2js.translate.context.TranslationContext; @@ -261,7 +262,7 @@ public final class JsAstUtils { @NotNull public static JsObjectLiteral createPropertyDataDescriptor(@NotNull PropertyDescriptor descriptor, @NotNull JsExpression value) { - return createPropertyDataDescriptor(descriptor.isVar(), descriptor, value); + return createPropertyDataDescriptor(descriptor.isVar() || descriptor.getModality() == Modality.OPEN, descriptor, value); } @NotNull diff --git a/js/js.translator/testFiles/inheritance/cases/valOverride.kt b/js/js.translator/testFiles/inheritance/cases/valOverride.kt new file mode 100644 index 00000000000..db26372be7c --- /dev/null +++ b/js/js.translator/testFiles/inheritance/cases/valOverride.kt @@ -0,0 +1,15 @@ +package foo + +open class C() { + open val a = 1 +} + +class D() : C() { + override val a = 2 +} + +fun box(): Boolean { + val d : C = D() + if(d.a != 2) return false + return true +} \ No newline at end of file