IR: handle MemberAccessExpression type parameters in RemapTypes
This commit is contained in:
@@ -123,6 +123,13 @@ class ScopeValidator(
|
||||
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) {
|
||||
// catchParameter only has scope over result expression
|
||||
handleValuesContainer(emptyList()) {
|
||||
|
||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.ir.util
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
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.visitors.IrElementVisitorVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||
@@ -70,6 +71,13 @@ private class RemapTypesHelper(private val typeRemapper: TypeRemapper) : IrEleme
|
||||
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) {
|
||||
expression.typeOperand = typeRemapper.remapType(expression.typeOperand)
|
||||
super.visitTypeOperator(expression)
|
||||
|
||||
Reference in New Issue
Block a user