[IR FAKE OVERRIDES] Properly account for outer class type parameters
This commit is contained in:
committed by
Stanislav Erokhin
parent
1ef17c6f3a
commit
c076d81f0c
+2
-1
@@ -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.IrSimpleType
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.types.IrTypeProjection
|
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.types.getClass
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||||
@@ -76,7 +77,7 @@ class FakeOverrideBuilder(
|
|||||||
val classifier = superType.classifier
|
val classifier = superType.classifier
|
||||||
require(classifier is IrClassSymbol) { "superType classifier is not IrClassSymbol: $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 {
|
val typeArguments = superType.arguments.map {
|
||||||
require(it is IrTypeProjection) { "Unexpected super type argument: $it" }
|
require(it is IrTypeProjection) { "Unexpected super type argument: $it" }
|
||||||
assert(it.variance == Variance.INVARIANT) { "Unexpected variance in super type argument: ${it.variance}" }
|
assert(it.variance == Variance.INVARIANT) { "Unexpected variance in super type argument: ${it.variance}" }
|
||||||
|
|||||||
Reference in New Issue
Block a user