IR: handle MemberAccessExpression type parameters in RemapTypes
This commit is contained in:
@@ -123,6 +123,13 @@ class ScopeValidator(
|
|||||||
super.visitVariableAccess(expression)
|
super.visitVariableAccess(expression)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitMemberAccess(expression: IrMemberAccessExpression<*>) {
|
||||||
|
for (i in 0 until expression.typeArgumentsCount) {
|
||||||
|
expression.getTypeArgument(i)?.let { visitTypeAccess(expression, it) }
|
||||||
|
}
|
||||||
|
super.visitMemberAccess(expression)
|
||||||
|
}
|
||||||
|
|
||||||
override fun visitCatch(aCatch: IrCatch) {
|
override fun visitCatch(aCatch: IrCatch) {
|
||||||
// catchParameter only has scope over result expression
|
// catchParameter only has scope over result expression
|
||||||
handleValuesContainer(emptyList()) {
|
handleValuesContainer(emptyList()) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.ir.util
|
|||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||||
|
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall
|
import org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||||
@@ -70,6 +71,13 @@ private class RemapTypesHelper(private val typeRemapper: TypeRemapper) : IrEleme
|
|||||||
super.visitExpression(expression)
|
super.visitExpression(expression)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitMemberAccess(expression: IrMemberAccessExpression<*>) {
|
||||||
|
for (i in 0 until expression.typeArgumentsCount) {
|
||||||
|
expression.getTypeArgument(i)?.let { expression.putTypeArgument(i, typeRemapper.remapType(it)) }
|
||||||
|
}
|
||||||
|
super.visitMemberAccess(expression)
|
||||||
|
}
|
||||||
|
|
||||||
override fun visitTypeOperator(expression: IrTypeOperatorCall) {
|
override fun visitTypeOperator(expression: IrTypeOperatorCall) {
|
||||||
expression.typeOperand = typeRemapper.remapType(expression.typeOperand)
|
expression.typeOperand = typeRemapper.remapType(expression.typeOperand)
|
||||||
super.visitTypeOperator(expression)
|
super.visitTypeOperator(expression)
|
||||||
|
|||||||
Reference in New Issue
Block a user