From 3e10de9cd145eb485665d4490fb33bd92489a538 Mon Sep 17 00:00:00 2001 From: Svyatoslav Kuzmich Date: Mon, 17 Jun 2019 16:36:25 +0300 Subject: [PATCH] [JS IR BE] Fixup property accessors --- .../kotlin/ir/backend/js/lower/PrivateMembersLowering.kt | 8 ++++++++ .../ir/backend/js/lower/ThrowableSuccessorsLowering.kt | 1 + 2 files changed, 9 insertions(+) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt index ab8339e97d7..05f179f9461 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt @@ -154,6 +154,14 @@ class PrivateMembersLowering(val context: JsIrBackendContext) : ClassLoweringPas } } + // Detach old function from corresponding property + val correspondingProperty = function.correspondingPropertySymbol?.owner + if (correspondingProperty != null) { + when (function) { + correspondingProperty.getter -> correspondingProperty.getter = staticFunction + correspondingProperty.setter -> correspondingProperty.setter = staticFunction + } + } staticFunction.typeParameters += function.typeParameters.map { it.deepCopyWithSymbols(staticFunction) } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ThrowableSuccessorsLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ThrowableSuccessorsLowering.kt index b9ad294f05b..f4abc48af60 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ThrowableSuccessorsLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ThrowableSuccessorsLowering.kt @@ -200,6 +200,7 @@ class ThrowableSuccessorsLowering(val context: JsIrBackendContext) : FileLowerin val function = JsIrBuilder.buildFunction(name, fakeAccessor.returnType, fakeAccessor.parent).apply { overriddenSymbols += fakeAccessor.overriddenSymbols correspondingPropertySymbol = fakeAccessor.correspondingPropertySymbol + correspondingPropertySymbol!!.owner.getter = this dispatchReceiverParameter = fakeAccessor.dispatchReceiverParameter?.copyTo(this) }