diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/DelegationTranslator.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/DelegationTranslator.kt index 182c60c4e12..16858fbcd8b 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/DelegationTranslator.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/DelegationTranslator.kt @@ -194,6 +194,7 @@ class DelegationTranslator( } else { val literal = JsObjectLiteral(true) + literal.propertyInitializers += JsPropertyInitializer(JsStringLiteral("configurable"), JsBooleanLiteral(true)) literal.propertyInitializers.addGetterAndSetter(descriptor, ::generateDelegateGetter, ::generateDelegateSetter) context().addAccessorsToPrototype(classDescriptor, descriptor, literal) } diff --git a/js/js.translator/testData/box/propertyAccess/configurable.kt b/js/js.translator/testData/box/propertyAccess/configurable.kt index 1dc14f25aa4..2d892420efc 100644 --- a/js/js.translator/testData/box/propertyAccess/configurable.kt +++ b/js/js.translator/testData/box/propertyAccess/configurable.kt @@ -1,4 +1,4 @@ -// EXPECTED_REACHABLE_NODES: 1325 +// EXPECTED_REACHABLE_NODES: 1345 // KJS_WITH_FULL_RUNTIME package foo @@ -15,11 +15,18 @@ class P : EP { get() = true } +class PD : EP by P() + fun usages() { val p = P() assertEquals(13, p.simpleProp) assertEquals("42", p.anotherProp) assertEquals(true, p.propWithGetter) + + val pd = PD() + assertEquals(13, pd.simpleProp) + assertEquals("42", pd.anotherProp) + assertEquals(true, pd.propWithGetter) } fun box(): String { @@ -31,6 +38,12 @@ fun box(): String { assertTrue(isConfigurable(prototype, "anotherProp")) assertTrue(isConfigurable(prototype, "propWithGetter")) + val delegatePrototype = PD::class.js.asDynamic().prototype + + assertTrue(isConfigurable(delegatePrototype, "simpleProp")) + assertTrue(isConfigurable(delegatePrototype, "anotherProp")) + assertTrue(isConfigurable(delegatePrototype, "propWithGetter")) + return "OK" }