[IR FAKE OVERRIDES] Properly account for outer class type parameters

This commit is contained in:
Alexander Gorshenev
2020-07-22 02:40:22 +03:00
committed by Stanislav Erokhin
parent 1ef17c6f3a
commit c076d81f0c
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.ir.symbols.impl.IrPropertySymbolImpl
import org.jetbrains.kotlin.ir.types.IrSimpleType
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.IrTypeProjection
import org.jetbrains.kotlin.ir.types.extractTypeParameters
import org.jetbrains.kotlin.ir.types.getClass
import org.jetbrains.kotlin.ir.util.SymbolTable
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
@@ -76,7 +77,7 @@ class FakeOverrideBuilder(
val classifier = superType.classifier
require(classifier is IrClassSymbol) { "superType classifier is not IrClassSymbol: $classifier" }
val typeParameters = classifier.owner.typeParameters.map { it.symbol }
val typeParameters = extractTypeParameters(classifier.owner).map { it.symbol }
val typeArguments = superType.arguments.map {
require(it is IrTypeProjection) { "Unexpected super type argument: $it" }
assert(it.variance == Variance.INVARIANT) { "Unexpected variance in super type argument: ${it.variance}" }