From e8977d77e6365889a06f1fa15f8f90b209b9ab26 Mon Sep 17 00:00:00 2001 From: Ilmir Usmanov Date: Wed, 29 Dec 2021 16:42:13 +0100 Subject: [PATCH] Do not count type parameters of inline class with generic underlying value twice, when counting type parameters for inner class inside init block. #KT-32162 --- .../ir.tree/src/org/jetbrains/kotlin/ir/types/irTypes.kt | 8 ++++---- .../src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/irTypes.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/irTypes.kt index ffc33ea3b7d..bb20c1ca327 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/irTypes.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/irTypes.kt @@ -17,10 +17,7 @@ import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol import org.jetbrains.kotlin.ir.symbols.IrScriptSymbol import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol import org.jetbrains.kotlin.ir.types.impl.* -import org.jetbrains.kotlin.ir.util.defaultType -import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable -import org.jetbrains.kotlin.ir.util.isAnonymousObject -import org.jetbrains.kotlin.ir.util.isPropertyAccessor +import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.typeUtil.makeNotNullable @@ -213,6 +210,9 @@ val IrClass.typeConstructorParameters: Sequence } parent is IrClass && current is IrClass && !current.isInner -> null + // Inline class constructor inherits the same type parameters as the inline class itself + current.isJvmInlineClassConstructor -> + null else -> parent } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt index b067ebc54b9..dc6df3a5310 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt @@ -129,6 +129,9 @@ val IrDeclaration.isPropertyAccessor get() = val IrDeclaration.isPropertyField get() = this is IrField && this.correspondingPropertySymbol != null +val IrDeclaration.isJvmInlineClassConstructor get() = + this is IrSimpleFunction && name.asString() == "constructor-impl" + val IrDeclaration.isTopLevelDeclaration get() = parent !is IrDeclaration && !this.isPropertyAccessor && !this.isPropertyField