From 951b8026f505dda2130486eac0d9680cbb41a5bb Mon Sep 17 00:00:00 2001 From: Svyatoslav Kuzmich Date: Tue, 17 Jan 2023 09:14:57 +0000 Subject: [PATCH] [JS, Wasm] Don't generate unused constructors for interfaces --- .../kotlin/ir/backend/js/lower/PrimaryConstructorLowering.kt | 3 ++- js/js.translator/testData/lineNumbers/delegation.kt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrimaryConstructorLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrimaryConstructorLowering.kt index c81f4d6933a..40e450ad18b 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrimaryConstructorLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrimaryConstructorLowering.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.ir.expressions.IrInstanceInitializerCall import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl import org.jetbrains.kotlin.ir.util.constructors +import org.jetbrains.kotlin.ir.util.isInterface import org.jetbrains.kotlin.ir.util.parentAsClass import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid @@ -27,7 +28,7 @@ class PrimaryConstructorLowering(val context: JsCommonBackendContext) : Declarat private var IrClass.syntheticPrimaryConstructor by context.mapping.classToSyntheticPrimaryConstructor override fun transformFlat(declaration: IrDeclaration): List? { - if (declaration is IrClass) { + if (declaration is IrClass && !declaration.isInterface) { val constructors = declaration.constructors if (constructors.any { it.isPrimary }) return null diff --git a/js/js.translator/testData/lineNumbers/delegation.kt b/js/js.translator/testData/lineNumbers/delegation.kt index 0dd62f08991..54bd8d74f74 100644 --- a/js/js.translator/testData/lineNumbers/delegation.kt +++ b/js/js.translator/testData/lineNumbers/delegation.kt @@ -19,4 +19,4 @@ val o = object : I { } // LINES(JS): 1 2 3 2 2 2 2 2 2 2 * 11 12 12 12 15 15 15 16 18 17 17 -// LINES(JS_IR): 11 11 * 11 11 * 1 1 3 3 1 1 1 1 1 1 1 1 1 5 11 11 12 12 12 16 17 17 15 15 15 * 1 * 11 +// LINES(JS_IR): 11 11 * 11 11 * 1 1 3 3 1 1 1 1 1 1 1 1 1 * 11 11 12 12 12 16 17 17 15 15 15 * 1 * 11