diff --git a/js/js.tests/test/org/jetbrains/k2js/test/semantics/PropertyOverrideTest.java b/js/js.tests/test/org/jetbrains/k2js/test/semantics/PropertyOverrideTest.java index f3b93d8a0e5..4569357f048 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/semantics/PropertyOverrideTest.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/semantics/PropertyOverrideTest.java @@ -51,4 +51,20 @@ public class PropertyOverrideTest extends SingleFileTranslationTest { public void testOverrideExtensionProperty() throws Exception { checkFooBoxIsOk(); } + + public void testInitOverrideInConstructor() throws Exception { + checkFooBoxIsOk(); + } + + public void testInitOverrideInConstructorExplicitThis() throws Exception { + checkFooBoxIsOk(); + } + + public void testInitOverrideInConstructorComplex() throws Exception { + checkFooBoxIsOk(); + } + + public void testInitOverrideVarInConstructor() throws Exception { + checkFooBoxIsOk(); + } } diff --git a/js/js.translator/testData/propertyOverride/cases/initOverrideInConstructor.kt b/js/js.translator/testData/propertyOverride/cases/initOverrideInConstructor.kt new file mode 100644 index 00000000000..821a5ea5f2f --- /dev/null +++ b/js/js.translator/testData/propertyOverride/cases/initOverrideInConstructor.kt @@ -0,0 +1,21 @@ +// Test for KT-5673 + +package foo + +trait Holder { + val element: String +} + +class BasicHolder : Holder { + override val element: String + + { + element = "ok" + } +} + +fun box(): String { + assertEquals("ok", BasicHolder().element) + + return "OK" +} \ No newline at end of file diff --git a/js/js.translator/testData/propertyOverride/cases/initOverrideInConstructorComplex.kt b/js/js.translator/testData/propertyOverride/cases/initOverrideInConstructorComplex.kt new file mode 100644 index 00000000000..0e7e76131ce --- /dev/null +++ b/js/js.translator/testData/propertyOverride/cases/initOverrideInConstructorComplex.kt @@ -0,0 +1,30 @@ +// Test for KT-5673 + +package foo + +trait Holder { + val element: String +} + +open class BasicHolder : Holder { + override val element: String + get() = $element + $element + + { + element = "1" + } +} + +class AdvancedHolder : BasicHolder() { + override val element: String + + { + element = super.element + super.element + } +} + +fun box(): String { + assertEquals("1111", AdvancedHolder().element) + + return "OK" +} \ No newline at end of file diff --git a/js/js.translator/testData/propertyOverride/cases/initOverrideInConstructorExplicitThis.kt b/js/js.translator/testData/propertyOverride/cases/initOverrideInConstructorExplicitThis.kt new file mode 100644 index 00000000000..02969103ed6 --- /dev/null +++ b/js/js.translator/testData/propertyOverride/cases/initOverrideInConstructorExplicitThis.kt @@ -0,0 +1,21 @@ +// Test for KT-5673 + +package foo + +trait Holder { + val element: String +} + +class BasicHolder : Holder { + override val element: String + + { + this.element = "ok" + } +} + +fun box(): String { + assertEquals("ok", BasicHolder().element) + + return "OK" +} \ No newline at end of file diff --git a/js/js.translator/testData/propertyOverride/cases/initOverrideVarInConstructor.kt b/js/js.translator/testData/propertyOverride/cases/initOverrideVarInConstructor.kt new file mode 100644 index 00000000000..362ab1337f3 --- /dev/null +++ b/js/js.translator/testData/propertyOverride/cases/initOverrideVarInConstructor.kt @@ -0,0 +1,21 @@ +// Test for KT-5673 + +package foo + +trait Holder { + var element: String +} + +class BasicHolder : Holder { + override var element: String = "not ok" + + { + element = "ok" + } +} + +fun box(): String { + assertEquals("ok", BasicHolder().element) + + return "OK" +} \ No newline at end of file