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
This commit is contained in:
Ilmir Usmanov
2021-12-29 16:42:13 +01:00
parent cece7120df
commit e8977d77e6
2 changed files with 7 additions and 4 deletions
@@ -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<IrTypeParameter>
}
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
}
@@ -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