IR: remove IrTypeOperatorCall.typeOperandClassifier

This commit is contained in:
Alexander Udalov
2023-02-13 14:43:17 +01:00
committed by Space Team
parent 42daeaaa80
commit d2938e732a
5 changed files with 8 additions and 14 deletions
@@ -8,7 +8,6 @@
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
@@ -24,8 +23,6 @@ abstract class IrTypeOperatorCall : IrExpression() {
abstract var typeOperand: IrType
abstract val typeOperandClassifier: IrClassifierSymbol
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitTypeOperator(this, data)
@@ -19,9 +19,7 @@ package org.jetbrains.kotlin.ir.expressions.impl
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrTypeOperator
import org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.classifierOrFail
class IrTypeOperatorCallImpl(
override val startOffset: Int,
@@ -30,7 +28,4 @@ class IrTypeOperatorCallImpl(
override val operator: IrTypeOperator,
override var typeOperand: IrType,
override var argument: IrExpression,
) : IrTypeOperatorCall() {
override val typeOperandClassifier: IrClassifierSymbol
get() = typeOperand.classifierOrFail
}
) : IrTypeOperatorCall()
@@ -973,7 +973,6 @@ object IrTree : AbstractTreeBuilder() {
+field("operator", type(Packages.exprs, "IrTypeOperator"))
+field("argument", expression, mutable = true, isChild = true)
+field("typeOperand", irTypeType, mutable = true)
+field("typeOperandClassifier", classifierSymbolType)
}
val valueAccessExpression: ElementConfig by element(Expression) {
visitorParent = declarationReference
@@ -23,9 +23,12 @@ import org.jetbrains.kotlin.ir.symbols.impl.IrAnonymousInitializerSymbolImpl
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.util.*
import org.jetbrains.kotlin.ir.types.classifierOrFail
import org.jetbrains.kotlin.ir.util.IrMessageLogger
import org.jetbrains.kotlin.ir.util.IrMessageLogger.Location
import org.jetbrains.kotlin.ir.util.IrMessageLogger.Severity
import org.jetbrains.kotlin.ir.util.fileOrNull
import org.jetbrains.kotlin.ir.util.parentAsClass
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.utils.addIfNotNull
@@ -244,7 +247,7 @@ internal class UnlinkedDeclarationsProcessor(
override fun visitTypeOperator(expression: IrTypeOperatorCall): IrExpression {
expression.transformChildrenVoid()
val classifierSymbol = expression.typeOperandClassifier
val classifierSymbol = expression.typeOperand.classifierOrFail
return if (classifierSymbol.isUnlinked())
IrCompositeImpl(expression.startOffset, expression.endOffset, builtIns.nothingType).apply {
statements += expression.argument
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.types.classifierOrFail
import org.jetbrains.kotlin.ir.util.dump
import org.jetbrains.kotlin.ir.util.render
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
@@ -224,7 +225,6 @@ class IrVerifier(
}
override fun visitTypeOperator(expression: IrTypeOperatorCall) {
expression.typeOperandClassifier.checkBinding("type operand", expression)
expression.typeOperand.classifierOrFail.checkBinding("type operand", expression)
}
}